Gestión de etiquetas
Puede adjuntar y separar etiquetas en un ID de recurso o servicio a través de la consola, la CLI o la API. Para adjuntar o quitar una etiqueta en un ID de recurso o servicio, los usuarios deben tener asignado el permiso apropiado. Para obtener más información, consulte Cómo otorgar a los usuarios acceso a recursos de etiqueta.
Un recurso puede tener un máximo de 1000 etiquetas de usuario, 1000 etiquetas de servicio y 250 etiquetas de acceso.
Conexión y desconexión de etiquetas en un recurso en la consola
-
Desde la consola de IBM Cloud®, haga clic en el icono
Lista de recursos para ver su lista de recursos.
-
Localice el recurso específico en la lista.
-
Para adjuntar una etiqueta al recurso, pulse el icono Acciones
> Añadir etiquetas.
-
Especifique el nombre de la etiqueta y pulse Guardar.
-
Para desconectar la etiqueta del recurso, pulse el icono Editar
situado junto a la etiqueta en la lista de recursos.
Cuando desconecta una etiqueta de gestión de acceso de un recurso, las políticas de acceso asociadas también se desconectan de dicho recurso.
Conexión de etiquetas a un recurso mediante la CLI
Inicie sesión en la CLI de IBM Cloud® y seleccione su cuenta para ejecutar el mandato de CLI adecuado.
Para adjuntar una etiqueta a un recurso, utilice el mandato ibmcloud resource tag-attach
. Los valores permitidos para tag-type
son user
para etiquetas de usuario y access
para etiquetas de gestión de accesos. El valor predeterminado es user
. El siguiente ejemplo muestra cómo adjuntar una etiqueta de usuario llamada MyTag
a un recurso llamado MyResource
:
ibmcloud resource tag-attach --tag-names MyTag --resource-name 'MyResource'
Ejemplo para adjuntar una etiqueta de gestión de acceso denominada project:myproject
a un recurso denominado MyResource
:
ibmcloud resource tag-attach --tag-names project:myproject --resource-name 'MyResource' --tag-type access
Actualización de las etiquetas clave:valor de un recurso mediante la CLI
Inicie sesión en la CLI de IBM Cloud® y seleccione su cuenta para ejecutar el mandato de CLI adecuado.
Si gestiona etiquetas con el formato ' key:value
, puede actualizar el ' value
atómicamente, sin necesidad de separar primero el ' key:old-value
y adjuntar el nuevo ' key:new-value
.
Para actualizar el valor de una etiqueta con el formato ' key:value
, utilice el comando ' ibmcloud resource tag-attach
' con la opción ' --update
. Los valores permitidos para tag-type
son user
para etiquetas de usuario y access
para etiquetas de gestión de accesos. El valor predeterminado es user
.
El siguiente ejemplo muestra cómo actualizar a " production
el valor de la etiqueta de usuario " env
" en un recurso denominado " MyResource
:
ibmcloud resource tag-attach --tag-names 'env:production' --resource-name 'MyResource' --update
Añada la opción " tag-type
" al comando anterior para actualizar una etiqueta de gestión de acceso:
ibmcloud resource tag-attach --tag-names 'env:production' --resource-name 'MyResource' --update --tag-type access
Sustitución de todas las etiquetas de un recurso por un nuevo conjunto de etiquetas mediante la CLI
Inicie sesión en la CLI de IBM Cloud® y seleccione su cuenta para ejecutar el mandato de CLI adecuado.
La operación attach tiene como resultado añadir etiquetas a un recurso además de las que ya pudiera tener. Hay casos en los que es necesario sustituir las etiquetas existentes adjuntas a un recurso por un nuevo conjunto.
Para sustituir todas las etiquetas de los recursos por un nuevo conjunto de etiquetas, utilice el comando " ibmcloud resource tag-attach
" con la opción " --replace
". Los valores permitidos para tag-type
son user
para etiquetas de usuario y access
para etiquetas de gestión de accesos. El valor predeterminado
es user
. El siguiente ejemplo muestra cómo establecer las etiquetas ' tag1
' , ' tag2
, y ' tag3
en un recurso que se llama ' MyResource
, y eliminar todas las que ya pudiera tener:
ibmcloud resource tag-attach --tag-names 'tag1,tag2,tag3' --resource-name 'MyResource' --replace
Añada la opción " tag-type
" al comando anterior para establecer las etiquetas de gestión de acceso. Por ejemplo, para sustituir todas las etiquetas de gestión de acceso por el " compliance:hipaa
:
ibmcloud resource tag-attach --tag-names 'compliance:hipaa' --resource-name 'MyResource' --replace --tag-type access
Desconexión de etiquetas de un recurso mediante la CLI
Para desconectar una etiqueta de un recurso, utilice el mandato ibmcloud resource tag-detach
. El siguiente es un ejemplo
para separar una etiqueta de usuario llamada MyTag
de un recurso llamado MyResource
:
ibmcloud resource tag-detach --tag-names MyTag —resource-name 'MyResource'
Puede utilizar el comodín ' *
para separar etiquetas, lo que resulta útil para separar etiquetas con el formato ' key:value
, y para separar todas las etiquetas. Por ejemplo, si quieres separar la etiqueta ' env
' de ' MyResource
, independientemente de su valor, puedes ejecutar el siguiente comando:
ibmcloud resource tag-detach --tag-names 'env:*' —resource-name 'MyResource'
Para separar todas las etiquetas de ' MyResource
, puede utilizar el siguiente comando:
ibmcloud resource tag-detach --tag-names '*' —resource-name 'MyResource'
El siguiente es un ejemplo para separar una etiqueta de gestión de acceso llamada project:myproject
de un recurso llamado MyResource
:
ibmcloud resource tag-detach --tag-names project:myproject —resource-name 'MyResource' --tag-type access
Para obtener más información, consulte la información de referencia del mandato ibmcloud resource
. Cuando desconecta una etiqueta de gestión de acceso de un recurso, las
políticas de acceso asociadas también se desconectan de dicho recurso.
Conexión de etiquetas a un recurso mediante la API
Puede adjuntar etiquetas mediante programación llamando a la API de búsqueda global y etiquetado, como se muestra en las siguientes solicitudes de muestra. Los valores
permitidos para el parámetro de consulta tag_type
son: user
para etiquetas de usuario y access
para etiquetas de gestión de acceso. El siguiente ejemplo muestra cómo adjuntar una etiqueta de gestión de
acceso llamada project:myproject
a una instancia de servicio.
-
Busque el identificador exclusivo del recurso invocando el mandato siguiente:
curl -v -X POST -k --header 'Content-Type: application/json' --header 'Accept: application/json' --header 'Authorization: bearer <your IAM token>' -d '{"query": "name:myresource"}' 'https://api.global-search-tagging.cloud.ibm.com/v3/resources/search'
SearchOptions searchOptions = new SearchOptions.Builder() .query("GST-sdk-*") .fields(new java.util.ArrayList<String>(java.util.Arrays.asList("crn"))) .searchCursor(searchCursor) .build(); Response<ScanResult> response = service.search(searchOptions).execute(); ScanResult scanResult = response.getResult(); System.out.println(scanResult);
const params = { query: 'GST-sdk-*', fields: ['crn'], searchCursor: searchCursor, }; globalSearchService.search(params) .then(res => { console.log(JSON.stringify(res.result, null, 2)); }) .catch(err => { console.warn(err) });
response = global_search_service.search(query='GST-sdk-*', fields=['crn']) scan_result = response.get_result() print(json.dumps(scan_result, indent=2))
searchOptions := globalSearchService.NewSearchOptions() searchOptions.SetLimit(10) searchOptions.SetQuery("GST-sdk-*") searchOptions.SetFields([]string{"crn"}) scanResult, response, err := globalSearchService.Search(searchOptions) if err != nil { panic(err) } b, _ := json.MarshalIndent(scanResult, "", " ") fmt.Println(string(b))
-
Extraiga el valor del campo CRN de la respuesta.
{ "items": [ { "crn": "crn:v1:bluemix:public:cf:au-syd:a/000af2ea12345aabb1234567801fffab::cf-organization:aaaf4100-0011-2233-1111-11aaffee0011" } ], "limit": 1, "search_cursor": "e34535305339jg0rntt39nt3nu5tt9yn3u5ntt329nutt92u4ntt92u4t9u5gt2u5gt92u4n5g982458hg2t45hg9u42rg9t2u49gh285ght28h5t2835th85ht318h4tg9138h4tg91u3hgt931hg45918h34tg18h43hgt31hgt3rng0fnefvodnfvpojdpbojarfdbpojeafrbeafbjeqpnrqngrpqgrhbHNlIiwiY2FuVGFnIjoiZmFsc2UiLCJsdfshfksdhfkshfdkshfdkhkhewrkfehrkhkwhfkwrhkfhrgk3h5k3h45k3hk45hgk3hgk3hfk3h4k3hfkrfh3rkgh3krghk3rgh3kghk3hgk3hgk3rhgdWJsaWM6Y2Y6YXUtwriretoeiroteito4i5ot4i5oyti45ito4tio45ito45io5ogno5iogn5oin5oingoi5o5ngogo4ngo4ngro3jrong3gor3g3gno3jrgo3jrngo3ngro3g32ODQiXX0t" }
-
Llama al siguiente comando:
curl -X POST -H "Authorization: {iam_token}" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d '{ "resources": [{ "resource_id": "crn:v1:bluemix:public:cloud-object-storage:global:a/59bcbfa6ea2f006b4ed7094c1a08dcdd:1a0ec336-f391-4091-a6fb-5e084a4c56f4::" }], "tag_names": ["project:myproject"] }' \ "https://tags.global-search-tagging.cloud.ibm.com/v3/tags/attach?tag_type=access"
Resource resourceModel = new Resource.Builder().resourceId(resourceCRN).build(); AttachTagOptions attachTagOptions = new AttachTagOptions.Builder() .addResources(resourceModel) .addTagNames("project:myproject") .tagType("access") .build(); Response<TagResults> response = service.attachTag(attachTagOptions).execute(); TagResults tagResults = response.getResult(); System.out.println(tagResults.toString());
const resourceModel = { resource_id: resourceCrn, }; const params = { resources: [resourceModel], tagNames: ["project:myproject"], tagType: 'access', }; globalTaggingService.attachTag(params) .then(res => { console.log(JSON.stringify(res.result, null, 2)); }) .catch(err => { console.warn(err) });
resource_model = {'resource_id': resource_crn} tag_results = global_tagging_service.attach_tag( resources=[resource_model], tag_names=['project:myproject'], tag_type='access').get_result() print(json.dumps(tag_results, indent=2))
resourceModel := &globaltaggingv1.Resource{ ResourceID: &resourceCRN, } attachTagOptions := globalTaggingService.NewAttachTagOptions( []globaltaggingv1.Resource{*resourceModel}, ) attachTagOptions.SetTagNames([]string{"project:myproject"}) attachTagOptions.SetTagType("access") tagResults, response, err := globalTaggingService.AttachTag(attachTagOptions) if err != nil { panic(err) } b, _ := json.MarshalIndent(tagResults, "", " ") fmt.Println(string(b))
Actualización de las etiquetas clave:valor de un recurso
Si gestiona etiquetas con el formato ' key:value
, puede actualizar el valor atómicamente, sin necesidad de separar primero el ' key:old-value
y adjuntar el nuevo ' key:new-value
. Para ello, utilice el
parámetro de consulta booleano " update
". Así, para actualizar la etiqueta " env
de un recurso al valor " env:qa_test
, basta con añadir el parámetro de consulta " update=true
" a la llamada a la API de adjuntar. Consulte Búsqueda global y etiquetado - API de etiquetado para obtener más información sobre el uso del parámetro de consulta
" update
".
Sustitución de todas las etiquetas de un recurso por un nuevo conjunto de etiquetas
La operación attach tiene como resultado añadir etiquetas a un recurso además de las que ya pudiera tener. Hay casos en los que es necesario sustituir las etiquetas existentes adjuntas a un recurso por un nuevo conjunto. Para ello, utilice
el parámetro de consulta booleano " replace
". Así, para sustituir todas las etiquetas de un recurso por un nuevo conjunto de etiquetas, basta con añadir el parámetro de consulta " replace=true
"
a la llamada a la API de adjuntar. Consulte Búsqueda global y etiquetado - API de etiquetado para obtener más información sobre el uso del parámetro de consulta "
replace
".
Desconexión de etiquetas de un recurso mediante la API
Puede desasociar etiquetas mediante programación llamando a la API de búsqueda global y etiquetado, como se muestra en las siguientes solicitudes de muestra. Los valores
permitidos para el parámetro de consulta tag_type
son: user
para etiquetas de usuario y access
para etiquetas de gestión de acceso. El siguiente ejemplo muestra cómo separar una etiqueta de gestión de
acceso que se llama project:myproject
de una instancia de servicio:
-
Busque el identificador exclusivo del recurso invocando el mandato siguiente:
curl -v -X POST -k --header 'Content-Type: application/json' --header 'Accept: application/json' --header 'Authorization: bearer <your IAM token>' -d '{"query": "name:myresource"}' 'https://api.global-search-tagging.cloud.ibm.com/v3/resources/search'
SearchOptions searchOptions = new SearchOptions.Builder() .query("GST-sdk-*") .fields(new java.util.ArrayList<String>(java.util.Arrays.asList("crn"))) .searchCursor(searchCursor) .build(); Response<ScanResult> response = service.search(searchOptions).execute(); ScanResult scanResult = response.getResult(); System.out.println(scanResult);
const params = { query: 'GST-sdk-*', fields: ['crn'], searchCursor: searchCursor, }; globalSearchService.search(params) .then(res => { console.log(JSON.stringify(res.result, null, 2)); }) .catch(err => { console.warn(err) });
response = global_search_service.search(query='GST-sdk-*', fields=['crn']) scan_result = response.get_result() print(json.dumps(scan_result, indent=2))
searchOptions := globalSearchService.NewSearchOptions() searchOptions.SetLimit(10) searchOptions.SetQuery("GST-sdk-*") searchOptions.SetFields([]string{"crn"}) scanResult, response, err := globalSearchService.Search(searchOptions) if err != nil { panic(err) } b, _ := json.MarshalIndent(scanResult, "", " ") fmt.Println(string(b))
-
Extraiga el valor del campo CRN de la respuesta.
{ "items": [ { "crn": "crn:v1:bluemix:public:cf:au-syd:a/000af2ea12345aabb1234567801fffab::cf-organization:aaaf4100-0011-2233-1111-11aaffee0011" } ], "limit": 1, "search_cursor": "e34535305339jg0rntt39nt3nu5tt9yn3u5ntt329nutt92u4ntt92u4t9u5gt2u5gt92u4n5g982458hg2t45hg9u42rg9t2u49gh285ght28h5t2835th85ht318h4tg9138h4tg91u3hgt931hg45918h34tg18h43hgt31hgt3rng0fnefvodnfvpojdpbojarfdbpojeafrbeafbjeqpnrqngrpqgrhbHNlIiwiY2FuVGFnIjoiZmFsc2UiLCJsdfshfksdhfkshfdkshfdkhkhewrkfehrkhkwhfkwrhkfhrgk3h5k3h45k3hk45hgk3hgk3hfk3h4k3hfkrfh3rkgh3krghk3rgh3kghk3hgk3hgk3rhgdWJsaWM6Y2Y6YXUtwriretoeiroteito4i5ot4i5oyti45ito4tio45ito45io5ogno5iogn5oin5oingoi5o5ngogo4ngo4ngro3jrong3gor3g3gno3jrgo3jrngo3ngro3g32ODQiXX0t" }
-
Llama al siguiente comando:
curl -X POST -H "Authorization: {iam_token}" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d '{ "resources": [{ "resource_id": "crn:v1:bluemix:public:cloud-object-storage:global:a/59bcbfa6ea2f006b4ed7094c1a08dcdd:1a0ec336-f391-4091-a6fb-5e084a4c56f4::" }], "tag_names": ["project:myproject"] }' \ "https://tags.global-search-tagging.cloud.ibm.com/v3/tags/detach?tag_type=access"
Resource resourceModel = new Resource.Builder().resourceId(resourceCRN).build(); DetachTagOptions detachTagOptions = new DetachTagOptions.Builder() .addResources(resourceModel) .addTagNames("project:myproject") .tagType("access") .build(); Response<TagResults> response = service.detachTag(detachTagOptions).execute(); TagResults tagResults = response.getResult(); System.out.println(tagResults.toString());
const resourceModel = { resource_id: resourceCrn, }; const params = { resources: [resourceModel], tagNames: ["project:myproject"], tagType: 'access', }; globalTaggingService.detachTag(params) .then(res => { console.log(JSON.stringify(res.result, null, 2)); }) .catch(err => { console.warn(err) });
resource_model = {'resource_id': resource_crn} tag_results = global_tagging_service.detach_tag( resources=[resource_model], tag_names=['project:myproject'], tag_type='access').get_result() print(json.dumps(tag_results, indent=2))
resourceModel := &globaltaggingv1.Resource{ ResourceID: &resourceCRN, } detachTagOptions := globalTaggingService.NewDetachTagOptions( []globaltaggingv1.Resource{*resourceModel}, ) detachTagOptions.SetTagNames([]string{"project:myproject"}) detachTagOptions.SetTagType("access") tagResults, response, err := globalTaggingService.DetachTag(detachTagOptions) if err != nil { panic(err) } b, _ := json.MarshalIndent(tagResults, "", " ") fmt.Println(string(b))
Cuando desconecta una etiqueta de gestión de acceso de un recurso, las políticas de acceso asociadas también se desconectan de dicho recurso.
Separar todas las etiquetas y separar etiquetas por tecla
Puede utilizar el comodín ' *
para separar etiquetas, lo que resulta útil para separar etiquetas con el formato ' key:value
, y para separar todas las etiquetas. Por ejemplo, si desea eliminar la etiqueta " env
" de un recurso determinado, independientemente de su valor, puede ejecutar el siguiente comando:
curl -X POST -H "Authorization: {iam_token}" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{ "resources": [{ "resource_id": "crn:v1:bluemix:public:cloud-object-storage:global:a/59bcbfa6ea2f006b4ed7094c1a08dcdd:1a0ec336-f391-4091-a6fb-5e084a4c56f4::" }], "tag_names": ["env:*"] }' \
"https://tags.global-search-tagging.cloud.ibm.com/v3/tags/detach?tag_type=access"
Si desea separar todas las etiquetas sólo tiene que utilizar el ' *
como tag_name o como el elemento único en la matriz ' tag_names
' como en el siguiente comando:
curl -X POST -H "Authorization: {iam_token}" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{ "resources": [{ "resource_id": "crn:v1:bluemix:public:cloud-object-storage:global:a/59bcbfa6ea2f006b4ed7094c1a08dcdd:1a0ec336-f391-4091-a6fb-5e084a4c56f4::" }], "tag_names": ["*"] }' \
"https://tags.global-search-tagging.cloud.ibm.com/v3/tags/detach?tag_type=access"
Conexión de etiquetas a un recurso utilizando Terraform
Antes de poder adjuntar etiquetas a un recurso mediante Terraform, asegúrese de haber completado lo siguiente:
-
Instale la CLI de Terraform y configure el complemento de proveedor ' IBM Cloud ' para Terraform. Para obtener más información, consulte el tutorial de Introducción a Terraform en IBM Cloud®. El plug-in abstrae las API de IBM Cloud que se utilizan para completar esta tarea.
-
Cree un archivo de configuración de Terraform denominado
main.tf
. En este archivo, se definen los recursos utilizando el Lenguaje de Configuración HashiCorp. Para obtener más información, consulte la documentación de Terraform.
Siga los siguientes pasos para adjuntar etiquetas a un recurso mediante Terraform:
-
Prepara tu archivo de configuración de Terraform (por ejemplo, main.tf) para adjuntar una etiqueta de usuario a un recurso existente en nuestra cuenta siguiendo el ejemplo documentado en ibm_resource_tag ' {: external}.
-
Después de terminar de crear el archivo de configuración, inicializa Terraform CLI. Para más información, consulte Inicializar directorios de trabajo.
terraform init
-
Aprovisiona los recursos del fichero '
main.tf
'. Para obtener más información, consulte Aprovisionamiento de infraestructura con Terraform.-
Ejecute '
terraform plan
para generar un plan de ejecución Terraform para previsualizar las acciones propuestas.terraform plan
-
Ejecute '
terraform apply
' para crear los recursos definidos en el plan.terraform apply
-
Adjuntar etiquetas a un ID de servicio en la consola
Para añadir una etiqueta a un ID de servicio, siga estos pasos:
- Elija adjuntar una etiqueta de gestión de acceso o una etiqueta de usuario.
- Si desea adjuntar una etiqueta de gestión de acceso, primero debe crear la etiqueta. Para más información, consulte Creación de etiquetas.
- Si desea adjuntar una etiqueta de usuario, no es necesario crear la etiqueta de usuario para adjuntarla a recursos o ID de servicio. La etiqueta también la crea.
- Vaya a Administrar > Acceso (IAM ) > ID de servicio.
- Seleccione el ID de servicio que desea etiquetar.
- Haga clic en Añadir etiqueta
.
- Introduzca el nombre de la etiqueta y pulse Intro.
- Pulse Guardar.
Al etiquetar un ID de servicio, todas las políticas que tienen recursos que están asignados a su etiqueta de gestión de acceso incluyen el acceso a este ID de servicio.
Adjuntar etiquetas a un ID de servicio mediante el CLI
Los valores permitidos para el parámetro de consulta tag_type
son: user
para etiquetas de usuario y access
para etiquetas de gestión de acceso. El siguiente ejemplo muestra cómo adjuntar una etiqueta de
gestión de acceso que se llama project:myproject a un ID de servicio. Para añadir una etiqueta a un ID de servicio, siga estos pasos:
-
Elija adjuntar una etiqueta de gestión de acceso o una etiqueta de usuario.
- Si desea adjuntar una etiqueta de gestión de acceso, primero debe crear la etiqueta. Para más información, consulte Creación de etiquetas.
- Si desea adjuntar una etiqueta de usuario, no es necesario crear la etiqueta de usuario para adjuntarla a recursos o ID de servicio. La etiqueta también la crea.
-
Para adjuntar la etiqueta a su ID de servicio, utilice el comando "
tag-attach
". Para obtener más información, consulte la referencia de comandos CLI.ibmcloud resource tag-attach --tag-names project:myproject --resource-name 'ServiceIdName' --tag-type access
Al etiquetar un ID de servicio, todas las políticas que tienen recursos que están asignados a su etiqueta de gestión de acceso incluyen el acceso a este ID de servicio.
Adjuntar etiquetas a un ID de servicio mediante el uso de la API
Para añadir una etiqueta a un ID de servicio, siga estos pasos:
-
Elija adjuntar una etiqueta de gestión de acceso o una etiqueta de usuario.
- Si desea adjuntar una etiqueta de gestión de acceso, primero debe crear la etiqueta. Para más información, consulte Creación de etiquetas.
- Si desea adjuntar una etiqueta de usuario, no es necesario crear la etiqueta de usuario para adjuntarla a recursos o ID de servicio. La etiqueta también la crea.
-
Encuentre el identificador único para su ID de servicio llamando a los Servicios de Identidad de IAM con el siguiente comando:
curl -X GET 'https://iam.cloud.ibm.com/v1/serviceids?account_id=ACCOUNT_ID&name=My-serviceID' -H 'Authorization: Bearer TOKEN' -H 'Content-Type: application/json'
ListServiceIdsOptions listServiceIdsOptions = new ListServiceIdsOptions.Builder() .accountId(accountId) .name(serviceIdName) .build(); Response<ServiceIdList> response = service.listServiceIds(listServiceIdsOptions).execute(); ServiceIdList serviceIdList = response.getResult(); System.out.println(serviceIdList);
const params = { accountId: accountId, name: serviceIdName, }; try { const res = await iamIdentityService.listServiceIds(params) console.log(JSON.stringify(res.result, null, 2)); } catch (err) { console.warn(err); }
service_id_list = iam_identity_service.list_service_ids( account_id=account_id, name=serviceid_name ).get_result() print(json.dumps(service_id_list, indent=2))
listServiceIdsOptions := iamIdentityService.NewListServiceIdsOptions() listServiceIdsOptions.SetAccountID(accountID) listServiceIdsOptions.SetName(serviceIDName) serviceIDList, response, err := iamIdentityService.ListServiceIds(listServiceIdsOptions) if err != nil { panic(err) } b, _ := json.MarshalIndent(serviceIDList, "", " ") fmt.Println(string(b))
-
Extraer el valor del campo "
crn
" de la respuesta.{ "offset": 0, "limit": 1, "first": { "href": "https://iam.cloud.ibm.com/v1/serviceids?account_id=accountId" }, "next": { "href": "https://iam.cloud.ibm.com/v1/serviceids?pagetoken=pageToken" }, "serviceids": { "id": "ServiceId-ee1103f8-e03b-4d02-a977-e540ebdffb16", "iam_id": "iam-ServiceId-ee1103f8-e03b-4d02-a977-e540ebdffb16", "entity_tag": "3-c46d2fd21b701adf7eb67cfd1a498fde", "crn": "crn:v1:bluemix:public:iam-identity::a/100abcde100a41abc100aza678abc0zz::serviceid:ServiceId-ee1103f8-e03b-4d02-a977-e540ebdffb16", "locked": false, "created_at": "2020-10-16T10:36+0000", "modified_at": "2020-10-16T10:36+0000", "account_id": "100abcde100a41abc100aza678abc0zz", "name": "serviceId-test", "description": "serviceId-test", "unique_instance_crns": [] } }
-
Para adjuntar la etiqueta a su ID de servicio, llame a la API de búsqueda global y etiquetado con el siguiente comando.
Reemplaza
{SERVICEID_CRN}
con el valor que extrajiste en el paso anterior.Reemplaza
(serviceidCRN)
con el valor que extrajiste en el paso anterior.Reemplaza
serviceidCrn
con el valor que extrajiste en el paso anterior.Reemplaza
serviceid_crn
con el valor que extrajiste en el paso anterior.Reemplaza
&serviceidCRN
con el valor que extrajiste en el paso anterior.curl -X POST --header "Authorization: Bearer {iam_token}" --header "Accept: application/json" --header "Content-Type: application/json" -d '{ "resources": [{ "resource_id": "{SERVICEID_CRN}" }], "tag_names": ["tag_test_1", "tag_test_2"] }' "{base_url}/v3/tags/attach?tag_type=user"
Resource resourceModel = new Resource.Builder().resourceId(serviceidCRN).build(); AttachTagOptions attachTagOptions = new AttachTagOptions.Builder() .addResources(resourceModel) .addTagNames("tag_test_1") .addTagNames("tag_test_2") .build(); Response<TagResults> response = service.attachTag(attachTagOptions).execute(); TagResults tagResults = response.getResult(); System.out.println(tagResults.toString());
const resourceModel = { resource_id: serviceidCrn, }; const params = { resources: [resourceModel], tagNames: ["tag_test_1", "tag_test_2"], tagType: 'user', }; globalTaggingService.attachTag(params) .then(res => { console.log(JSON.stringify(res.result, null, 2)); }) .catch(err => { console.warn(err) });
resource_model = {'resource_id': serviceid_crn} tag_results = global_tagging_service.attach_tag( resources=[resource_model], tag_names=['tag_test_1', 'tag_test_2'], tag_type='user').get_result() print(json.dumps(tag_results, indent=2))
resourceModel := &globaltaggingv1.Resource{ ResourceID: &serviceidCRN, } attachTagOptions := globalTaggingService.NewAttachTagOptions( []globaltaggingv1.Resource{*resourceModel}, ) attachTagOptions.SetTagNames([]string{"tag_test_1", "tag_test_2"}) attachTagOptions.SetTagType("user") tagResults, response, err := globalTaggingService.AttachTag(attachTagOptions) if err != nil { panic(err) } b, _ := json.MarshalIndent(tagResults, "", " ") fmt.Println(string(b))
Al etiquetar un ID de servicio, todas las políticas que tienen recursos que están asignados a su etiqueta de gestión de acceso incluyen el acceso a este ID de servicio.
Eliminación de etiquetas de un ID de servicio en la consola
Para separar una etiqueta de una identificación de servicio, siga estos pasos:
- Vaya a Administrar > Acceso (IAM ) > ID de servicio.
- Haga clic en el icono Editar
en la columna Etiquetas.
- Click the Eliminar icon
on the tag that you want to detach from the service ID.
- Pulse Guardar.
Cuando se desvincula una etiqueta de gestión de acceso de un ID de servicio, las políticas asignadas a esa etiqueta dejan de incluir el acceso al ID de servicio.
Eliminación de etiquetas de un ID de servicio mediante la CLI
Para desprender una etiqueta de su ID de servicio, utilice el comando " tag-detach
". Para obtener más información, consulte la referencia de comandos CLI.
ibmcloud resource tag-detach --tag-names project:myproject --resource-id 'ServiceIdName' --tag-type access
Cuando se desvincula una etiqueta de gestión de acceso de un ID de servicio, todas las políticas que tienen el ámbito que esa etiqueta ya no incluye acceden al ID de servicio.
Eliminación de etiquetas de un ID de servicio mediante la API
Para separar una etiqueta de una identificación de servicio, siga estos pasos:
-
Encuentre el identificador único para su ID de servicio llamando a los Servicios de Identidad de IAM con el siguiente comando:
curl -X GET 'https://iam.cloud.ibm.com/v1/serviceids?account_id=ACCOUNT_ID&name=My-serviceID' -H 'Authorization: Bearer TOKEN' -H 'Content-Type: application/json'
ListServiceIdsOptions listServiceIdsOptions = new ListServiceIdsOptions.Builder() .accountId(accountId) .name(serviceIdName) .build(); Response<ServiceIdList> response = service.listServiceIds(listServiceIdsOptions).execute(); ServiceIdList serviceIdList = response.getResult(); System.out.println(serviceIdList);
const params = { accountId: accountId, name: serviceIdName, }; try { const res = await iamIdentityService.listServiceIds(params) console.log(JSON.stringify(res.result, null, 2)); } catch (err) { console.warn(err); }
service_id_list = iam_identity_service.list_service_ids( account_id=account_id, name=serviceid_name ).get_result() print(json.dumps(service_id_list, indent=2))
listServiceIdsOptions := iamIdentityService.NewListServiceIdsOptions() listServiceIdsOptions.SetAccountID(accountID) listServiceIdsOptions.SetName(serviceIDName) serviceIDList, response, err := iamIdentityService.ListServiceIds(listServiceIdsOptions) if err != nil { panic(err) } b, _ := json.MarshalIndent(serviceIDList, "", " ") fmt.Println(string(b))
-
Extraer el valor del campo "
crn
" de la respuesta.{ "offset": 0, "limit": 1, "first": { "href": "https://iam.cloud.ibm.com/v1/serviceids?account_id=accountId" }, "next": { "href": "https://iam.cloud.ibm.com/v1/serviceids?pagetoken=pageToken" }, "serviceids": { "id": "ServiceId-ee1103f8-e03b-4d02-a977-e540ebdffb16", "iam_id": "iam-ServiceId-ee1103f8-e03b-4d02-a977-e540ebdffb16", "entity_tag": "3-c46d2fd21b701adf7eb67cfd1a498fde", "crn": "crn:v1:bluemix:public:iam-identity::a/100abcde100a41abc100aza678abc0zz::serviceid:ServiceId-ee1103f8-e03b-4d02-a977-e540ebdffb16", "locked": false, "created_at": "2020-10-16T10:36+0000", "modified_at": "2020-10-16T10:36+0000", "account_id": "100abcde100a41abc100aza678abc0zz", "name": "serviceId-test", "description": "serviceId-test", "unique_instance_crns": [] } }
-
Para quitar la etiqueta de su ID de servicio, llame a la API de búsqueda global y etiquetado con el siguiente comando.
Reemplaza
{SERVICEID_CRN}
con el valor que extrajiste en el paso anterior.Reemplaza
(serviceidCRN)
con el valor que extrajiste en el paso anterior.Reemplaza
serviceidCrn
con el valor que extrajiste en el paso anterior.Reemplaza
serviceid_crn
con el valor que extrajiste en el paso anterior.Reemplaza
&serviceidCRN
con el valor que extrajiste en el paso anterior.curl -X POST --header "Authorization: Bearer {iam_token}" --header "Accept: application/json" --header "Content-Type: application/json" -d '{ "resources": [{ "resource_id": "{SERVICEID_CRN}" }], "tag_names": ["tag_test_1", "tag_test_2"] }' "{base_url}/v3/tags/detach?tag_type=user"
Resource resourceModel = new Resource.Builder().resourceId(serviceidCRN).build(); DetachTagOptions detachTagOptions = new DetachTagOptions.Builder() .addResources(resourceModel) .addTagNames("tag_test_1") .addTagNames("tag_test_2") .tagType("user") .build(); Response<TagResults> response = service.detachTag(detachTagOptions).execute(); TagResults tagResults = response.getResult(); System.out.println(tagResults.toString());
const resourceModel = { resource_id: serviceidCrn, }; const params = { resources: [resourceModel], tagNames: ["tag_test_1", "tag_test_2"], tagType: 'user', }; globalTaggingService.detachTag(params) .then(res => { console.log(JSON.stringify(res.result, null, 2)); }) .catch(err => { console.warn(err) });
resource_model = {'resource_id': serviceid_crn} tag_results = global_tagging_service.detach_tag( resources=[resource_model], tag_names=['tag_test_1', 'tag_test_2'], tag_type='user').get_result() print(json.dumps(tag_results, indent=2))
resourceModel := &globaltaggingv1.Resource{ ResourceID: &serviceidCRN, } detachTagOptions := globalTaggingService.NewDetachTagOptions( []globaltaggingv1.Resource{*resourceModel}, ) detachTagOptions.SetTagNames([]string{"tag_test_1", "tag_test_2"}) detachTagOptions.SetTagType("user") tagResults, response, err := globalTaggingService.DetachTag(detachTagOptions) if err != nil { panic(err) } b, _ := json.MarshalIndent(tagResults, "", " ") fmt.Println(string(b))
Cuando se desvincula una etiqueta de gestión de acceso de un ID de servicio, las políticas asignadas a esa etiqueta dejan de incluir el acceso al ID de servicio.
Supresión de etiquetas no utilizadas de la cuenta
Antes de poder eliminar una etiqueta, debe eliminarla de todos los recursos y de los ID de servicio. Si sigue sin poder suprimirla, es posible que esté adjunta a un recurso para el que no tiene permiso de visualización o que ha sido reclamado. La misma etiqueta puede ser adjuntada a varios recursos e identificadores de servicio por diferentes usuarios en la misma cuenta de facturación.
Si un recurso reclamado está bloqueando la supresión de una etiqueta, puede suprimir completamente dicho recurso reclamado o restaurarlo en un plazo de 7 después de suprimirlo. No todos los recursos se pueden restaurar. Puede utilizar la CLI de IBM Cloud® para gestionar el proceso de reclamación de recursos específicos. Para obtener más información, consulte Utilización de reclamaciones de recursos.
Cuando suprime una etiqueta de gestión de acceso de la cuenta, con ella también se suprimen las políticas de IAM asociadas también se suprimen.
Supresión de etiquetas no utilizadas en la consola
- Para ver la lista completa de las etiquetas de su cuenta, vaya a Gestionar > Cuenta en la consola de IBM Cloud® y seleccione Etiquetas.
- Pulse el icono Acciones
> Suprimir junto a la etiqueta no utilizada.
Supresión de etiquetas no utilizadas mediante la CLI
Inicie sesión en la CLI de IBM Cloud® y seleccione su cuenta para ejecutar el mandato ibmcloud resource tag-delete
para suprimir una o todas las etiquetas no utilizadas.
-
En el ejemplo siguiente se suprime la etiqueta de usuario
MyTag
:ibmcloud resource tag-delete --tag-name MyTag
Supresión de etiquetas no utilizadas mediante la CLI
Puede eliminar etiquetas llamando a la API de búsqueda global y etiquetado, como se muestra en las siguientes solicitudes de muestra. Los valores permitidos para
el parámetro de consulta tag_type
son: user
para etiquetas de usuario y access
para etiquetas de gestión de acceso.
Supresión de una etiqueta
Supresión de una etiqueta de gestión de acceso denominada project:myproject
de la cuenta:
curl -X DELETE -H "Authorization: {iam_token}" \
-H "Accept: application/json" \
"https://tags.global-search-tagging.cloud.ibm.com/v3/tags/project:myproject?tag_type=access"
DeleteTagOptions deleteTagOptions = new DeleteTagOptions.Builder()
.tagName("env:example-access-tag")
.tagType("access")
.build();
Response<DeleteTagResults> response = service.deleteTag(deleteTagOptions).execute();
DeleteTagResults deleteTagResults = response.getResult();
System.out.println(deleteTagResults.toString());
const params = {
tagName: 'env:example-access-tag',
tagType: 'access',
};
globalTaggingService.deleteTag(params)
.then(res => {
console.log(JSON.stringify(res.result, null, 2));
})
.catch(err => {
console.warn(err)
});
delete_tag_results = global_tagging_service.delete_tag(
tag_name='env:example-access-tag',
tag_type='access').get_result()
print(json.dumps(delete_tag_results, indent=2))
deleteTagOptions := globalTaggingService.NewDeleteTagOptions("env:example-access-tag")
deleteTagOptions.SetTagType("access")
deleteTagResults, response, err := globalTaggingService.DeleteTag(deleteTagOptions)
if err != nil {
panic(err)
}
b, _ := json.MarshalIndent(deleteTagResults, "", " ")
fmt.Println(string(b))
Supresión de todas las etiquetas no utilizadas
Supresión de todas las etiquetas de gestión de accesos no utilizadas de la cuenta:
curl -X DELETE -H "Authorization: {iam_token}" \
-H "Accept: application/json" \
"https://tags.global-search-tagging.cloud.ibm.com//v3/tags?tag_type=access"
DeleteTagAllOptions deleteTagAllOptions = new DeleteTagAllOptions.Builder()
.tagType("user")
.build();
Response<DeleteTagsResult> response = service.deleteTagAll(deleteTagAllOptions).execute();
DeleteTagsResult deleteTagsResult = response.getResult();
System.out.println(deleteTagsResult.toString());
const params = {
tagType: 'access',
};
globalTaggingService.deleteTagAll(params)
.then(res => {
console.log(JSON.stringify(res.result, null, 2));
})
.catch(err => {
console.warn(err)
});
delete_tags_result = global_tagging_service.delete_tag_all(
tag_type='user').get_result()
print(json.dumps(delete_tags_result, indent=2))
deleteTagAllOptions := globalTaggingService.NewDeleteTagAllOptions()
deleteTagAllOptions.SetTagType("user")
deleteTagsResult, response, err := globalTaggingService.DeleteTagAll(deleteTagAllOptions)
if err != nil {
panic(err)
}
b, _ := json.MarshalIndent(deleteTagsResult, "", " ")
fmt.Println(string(b))