IBM Cloud Docs
Gestión de etiquetas

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

  1. Desde la consola de IBM Cloud®, haga clic en el icono del menú de navegación. Icono del menú de navegación. Menú de Lista de recursos para ver su lista de recursos.

  2. Localice el recurso específico en la lista.

  3. Para adjuntar una etiqueta al recurso, pulse el icono Acciones Icono Acciones > Añadir etiquetas.

  4. Especifique el nombre de la etiqueta y pulse Guardar.

  5. Para desconectar la etiqueta del recurso, pulse el icono Editar 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.

  1. 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))
    
  2. 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"
     }
    
  3. 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:

  1. 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))
    
  2. 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"
     }
    
  3. 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:

  1. 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}.

  2. 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
    
  3. Aprovisiona los recursos del fichero ' main.tf '. Para obtener más información, consulte Aprovisionamiento de infraestructura con Terraform.

    1. Ejecute ' terraform plan para generar un plan de ejecución Terraform para previsualizar las acciones propuestas.

      terraform plan
      
    2. 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:

  1. 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.
  2. Vaya a Administrar > Acceso (IAM ) > ID de servicio.
  3. Seleccione el ID de servicio que desea etiquetar.
  4. Haga clic en Añadir etiqueta Editar icono.
  5. Introduzca el nombre de la etiqueta y pulse Intro.
  6. 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:

  1. 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.
  2. 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:

  1. 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.
  2. 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))
    
  3. 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": []
    }
    }
    
  4. 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:

  1. Vaya a Administrar > Acceso (IAM ) > ID de servicio.
  2. Haga clic en el icono Editar icono en la columna Etiquetas.
  3. Click the Eliminar icon Eliminar icono on the tag that you want to detach from the service ID.
  4. 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:

  1. 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))
    
  2. 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": []
    }
    }
    
  3. 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

  1. Para ver la lista completa de las etiquetas de su cuenta, vaya a Gestionar > Cuenta en la consola de IBM Cloud® y seleccione Etiquetas.
  2. Pulse el icono Acciones 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))