Gestione delle tag

È possibile attaccare e staccare i tag a una risorsa o a un ID di servizio tramite la console, la CLI o l'API. Per attaccare o staccare un tag a una risorsa o a un ID servizio, agli utenti deve essere assegnata l'autorizzazione appropriata. Per ulteriori informazioni, vedi Concessione agli utenti dell'accesso per aggiungere tag alle risorse.

Una risorsa può avere un massimo di 1000 tag utente, 1000 tag servizio e 250 tag accesso.

Attacco e distacco di tag su una risorsa nella console

  1. Dalla console IBM Cloud®, fare clic sull'icona del menu di navigazione Menu > Elenco risorse per visualizzare l'elenco delle risorse.

  2. Individuare la risorsa specifica nell'elenco.

  3. Per allegare un tag alla risorsa, fare clic sull'icona Azioni Icona > Aggiungi tag.

  4. Immettere il nome del tag e fare clic su Salva.

  5. Per staccare il tag dalla risorsa, fare clic sull'icona Modifica Modifica icona accanto al tag nell'elenco delle risorse.

    Quando si stacca un tag di gestione degli accessi da una risorsa, anche i criteri di accesso associati vengono staccati da quella risorsa.

Aggiunta di tag a una risorsa tramite la CLI

Accedere a 'IBM Cloud® CLI e selezionare il proprio account per eseguire il comando CLI appropriato.

Per allegare un tag a una risorsa, usare il comando 'ibmcloud resource tag-attach. I valori ammessi per 'tag-type sono 'user per i tag utente e 'access per i tag di gestione degli accessi. Il valore predefinito è user. L'esempio seguente mostra come allegare un tag utente chiamato 'MyTag a una risorsa chiamata 'MyResource:

ibmcloud resource tag-attach --tag-names MyTag --resource-name  'MyResource'

Un esempio per collegare un tag di gestione degli accessi chiamato 'project:myproject a una risorsa chiamata 'MyResource:

ibmcloud resource tag-attach --tag-names project:myproject --resource-name  'MyResource' --tag-type access

Aggiornamento dei tag chiave:valore di una risorsa mediante la CLI

Accedere a 'IBM Cloud® CLI e selezionare il proprio account per eseguire il comando CLI appropriato.

Se si gestiscono tag nel formato 'key:value, è possibile aggiornare il 'value atomicamente, senza dover prima staccare il 'key:old-value e allegare il nuovo 'key:new-value.

Per aggiornare il valore di un tag nel formato 'key:value, utilizzare il comando 'ibmcloud resource tag-attach con l'opzione '--update. I valori ammessi per 'tag-type sono 'user per i tag utente e 'access per i tag di gestione degli accessi. Il valore predefinito è user. L'esempio seguente mostra come aggiornare a 'production il valore del tag utente 'env su una risorsa chiamata 'MyResource:

ibmcloud resource tag-attach --tag-names 'env:production' --resource-name 'MyResource' --update

Aggiungere l'opzione 'tag-type al comando precedente per aggiornare un tag di gestione degli accessi:

ibmcloud resource tag-attach --tag-names 'env:production' --resource-name 'MyResource' --update --tag-type access

Sostituzione di tutti i tag di una risorsa con un nuovo insieme di tag utilizzando la CLI

Accedere a 'IBM Cloud® CLI e selezionare il proprio account per eseguire il comando CLI appropriato.

L'operazione attach comporta l'aggiunta di tag a una risorsa, oltre a quelli che potrebbe già avere. In alcuni casi è necessario sostituire i tag esistenti collegati a una risorsa con un nuovo set.

Per sostituire tutti i tag della risorsa con un nuovo insieme di tag, usare il comando 'ibmcloud resource tag-attach con l'opzione '--replace. I valori ammessi per 'tag-type sono 'user per i tag utente e 'access per i tag di gestione degli accessi. Il valore predefinito è user. L'esempio seguente mostra come impostare i tag 'tag1, 'tag2 e 'tag3 su una risorsa che si chiama 'MyResource e rimuovere tutti quelli che potrebbe già avere:

ibmcloud resource tag-attach --tag-names 'tag1,tag2,tag3' --resource-name 'MyResource' --replace

Aggiungere l'opzione 'tag-type al comando precedente per impostare i tag di gestione degli accessi. Ad esempio, per sostituire tutti i tag di gestione degli accessi con il 'compliance:hipaa:

ibmcloud resource tag-attach --tag-names 'compliance:hipaa' --resource-name 'MyResource' --replace --tag-type access

Staccare i tag da una risorsa utilizzando la CLI

Per staccare un tag da una risorsa, usare il comando 'ibmcloud resource tag-detach. Di seguito è riportato un esempio per staccare un tag utente chiamato 'MyTag da una risorsa chiamata 'MyResource:

ibmcloud resource tag-detach --tag-names MyTag —resource-name 'MyResource'

È possibile utilizzare il carattere jolly '* per staccare i tag, utile per staccare i tag nel formato 'key:value e per staccare tutti i tag. Per esempio, se si vuole staccare il tag 'env da 'MyResource, indipendentemente dal suo valore, si può eseguire il seguente comando:

ibmcloud resource tag-detach --tag-names 'env:*' —resource-name 'MyResource'

Per staccare tutti i tag da 'MyResource, si può usare il seguente comando:

ibmcloud resource tag-detach --tag-names '*' —resource-name 'MyResource'

Di seguito è riportato un esempio per staccare un tag di gestione degli accessi chiamato 'project:myproject da una risorsa chiamata 'MyResource:

ibmcloud resource tag-detach --tag-names project:myproject —resource-name 'MyResource' --tag-type access

Per ulteriori informazioni, vedere il documento 'riferimento al comando ibmcloud resource. Quando si stacca un tag di gestione degli accessi da una risorsa, anche i criteri di accesso associati vengono staccati da quella risorsa.

Aggiunta di tag a una risorsa tramite l'API

È possibile aggiungere tag in modo programmatico chiamando l'API Ricerca globale e tagging - Tagging, come mostrato nelle seguenti richieste di esempio. I valori ammessi per il parametro di query 'tag_type sono: user per i tag utente e 'access per i tag di gestione degli accessi. L'esempio seguente mostra come collegare un tag di gestione degli accessi chiamato " project:myproject a un'istanza di servizio.

  1. Per trovare l'identificatore univoco della risorsa, richiamare il comando seguente:

    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. Estrarre il valore del campo CRN dalla risposta.

       {
       "items": [
         {
           "crn": "crn:v1:bluemix:public:cf:au-syd:a/000af2ea12345aabb1234567801fffab::cf-organization:aaaf4100-0011-2233-1111-11aaffee0011"
         }
       ],
       "limit": 1,
       "search_cursor": "e34535305339jg0rntt39nt3nu5tt9yn3u5ntt329nutt92u4ntt92u4t9u5gt2u5gt92u4n5g982458hg2t45hg9u42rg9t2u49gh285ght28h5t2835th85ht318h4tg9138h4tg91u3hgt931hg45918h34tg18h43hgt31hgt3rng0fnefvodnfvpojdpbojarfdbpojeafrbeafbjeqpnrqngrpqgrhbHNlIiwiY2FuVGFnIjoiZmFsc2UiLCJsdfshfksdhfkshfdkshfdkhkhewrkfehrkhkwhfkwrhkfhrgk3h5k3h45k3hk45hgk3hgk3hfk3h4k3hfkrfh3rkgh3krghk3rgh3kghk3hgk3hgk3rhgdWJsaWM6Y2Y6YXUtwriretoeiroteito4i5ot4i5oyti45ito4tio45ito45io5ogno5iogn5oin5oingoi5o5ngogo4ngo4ngro3jrong3gor3g3gno3jrgo3jrngo3ngro3g32ODQiXX0t"
     }
    
  3. Richiamare il seguente 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))
    

Aggiornamento dei tag chiave:valore di una risorsa

Se si gestiscono tag nel formato 'key:value, è possibile aggiornare il valore atomicamente, senza dover prima staccare il 'key:old-value e attaccare il nuovo 'key:new-value. A tal fine, utilizzare il parametro di query booleano 'update. Quindi, per aggiornare il tag 'env di una risorsa con il valore 'env:qa_test, è sufficiente aggiungere il parametro di query 'update=true alla chiamata API attach. Per ulteriori informazioni sull'uso del parametro di query 'update, vedere Ricerca globale e tagging - Tagging API.

Sostituzione di tutti i tag di una risorsa con un nuovo insieme di tag

L'operazione attach comporta l'aggiunta di tag a una risorsa, oltre a quelli che potrebbe già avere. In alcuni casi è necessario sostituire i tag esistenti collegati a una risorsa con un nuovo set. A tal fine, utilizzare il parametro di query booleano 'replace. Quindi, per sostituire tutti i tag di una risorsa con un nuovo insieme di tag, è sufficiente aggiungere il parametro di query 'replace=true alla chiamata API attach. Per ulteriori informazioni sull'uso del parametro di query 'replace, vedere Ricerca globale e tagging - Tagging API.

Staccare i tag da una risorsa utilizzando l'API

È possibile staccare i tag in modo programmatico chiamando l'API Ricerca globale e tagging - Tagging, come mostrato nelle seguenti richieste di esempio. I valori ammessi per il parametro di query 'tag_type sono: user per i tag utente e 'access per i tag di gestione degli accessi. L'esempio seguente mostra come staccare un tag di gestione degli accessi chiamato " project:myproject da un'istanza di servizio:

  1. Per trovare l'identificatore univoco della risorsa, richiamare il comando seguente:

    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. Estrarre il valore del campo CRN dalla risposta.

       {
       "items": [
         {
           "crn": "crn:v1:bluemix:public:cf:au-syd:a/000af2ea12345aabb1234567801fffab::cf-organization:aaaf4100-0011-2233-1111-11aaffee0011"
         }
       ],
       "limit": 1,
       "search_cursor": "e34535305339jg0rntt39nt3nu5tt9yn3u5ntt329nutt92u4ntt92u4t9u5gt2u5gt92u4n5g982458hg2t45hg9u42rg9t2u49gh285ght28h5t2835th85ht318h4tg9138h4tg91u3hgt931hg45918h34tg18h43hgt31hgt3rng0fnefvodnfvpojdpbojarfdbpojeafrbeafbjeqpnrqngrpqgrhbHNlIiwiY2FuVGFnIjoiZmFsc2UiLCJsdfshfksdhfkshfdkshfdkhkhewrkfehrkhkwhfkwrhkfhrgk3h5k3h45k3hk45hgk3hgk3hfk3h4k3hfkrfh3rkgh3krghk3rgh3kghk3hgk3hgk3rhgdWJsaWM6Y2Y6YXUtwriretoeiroteito4i5ot4i5oyti45ito4tio45ito45io5ogno5iogn5oin5oingoi5o5ngogo4ngo4ngro3jrong3gor3g3gno3jrgo3jrngo3ngro3g32ODQiXX0t"
     }
    
  3. Richiamare il seguente 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))
    

    Quando si stacca un tag di gestione degli accessi da una risorsa, anche i criteri di accesso associati vengono staccati da quella risorsa.

Staccare tutti i tag e staccare i tag per tasto

È possibile utilizzare il carattere jolly '* per staccare i tag, utile per staccare i tag nel formato 'key:value e per staccare tutti i tag. Per esempio, se si vuole staccare il tag 'env da una determinata risorsa, indipendentemente dal suo valore, si può eseguire il seguente 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"

Se si vogliono staccare tutti i tag, basta usare il '* come nome del tag o come elemento unico dell'array 'tag_names, come nel comando seguente:

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"

Aggiunta di tag a una risorsa utilizzando Terraform

Prima di poter collegare i tag a una risorsa usando Terraform, assicuratevi di aver completato quanto segue:

  • Installare la CLI di Terraform e configurare il plug-in del provider IBM Cloud Per Terraform. Per ulteriori informazioni, vedere il tutorial su Come iniziare con Terraform su IBM Cloud®. Il plug-in astrae le API di 'IBM Cloud che vengono utilizzate per completare questo compito.

  • Creare un file di configurazione di Terraform chiamato main.tf. In questo file si definiscono le risorse utilizzando il linguaggio di configurazione HashiCorp. Per ulteriori informazioni, vedere il documento 'Documentazione di Terraform.

Usare i seguenti passaggi per allegare i tag a una risorsa usando Terraform:

  1. Preparare il file di configurazione di Terraform (ad esempio main.tf) per allegare un tag utente a una risorsa esistente nel nostro account seguendo l'esempio documentato in ibm_resource_tag '{: external}.

  2. Dopo aver completato la creazione del file di configurazione, inizializzare la CLI di Terraform. Per ulteriori informazioni, vedere Inizializzazione delle directory di lavoro.

    terraform init
    
  3. Predisporre le risorse dal file 'main.tf. Per ulteriori informazioni, vedere Provisioning dell'infrastruttura con Terraform.

    1. Eseguire 'terraform plan per generare un piano di esecuzione Terraform per visualizzare in anteprima le azioni proposte.

      terraform plan
      
    2. Eseguire 'terraform apply per creare le risorse definite nel piano.

      terraform apply
      

Assegnazione di tag a un ID di servizio nella console

Per aggiungere un'etichetta a un ID servizio, procedere come segue:

  1. Scegliere di allegare un tag di gestione degli accessi o un tag utente.
    • Se si desidera allegare un tag di gestione degli accessi, è necessario prima creare il tag. Per ulteriori informazioni, vedere Creazione di tag.
    • Se si desidera collegare un tag utente, non è necessario creare il tag utente per collegarlo alle risorse o agli ID servizio. Anche l'applicazione del tag lo crea.
  2. Vai a Gestisci > Accesso (IAM) > ID servizio.
  3. Selezionare l'ID del servizio che si desidera etichettare.
  4. Fare clic su 'Aggiungi tag 'Modifica dell'icona.
  5. Immettere il nome del tag e premere Invio.
  6. Fare clic su Salva.

Quando si assegna un tag a un ID servizio, tutte le policy che hanno risorse che hanno come ambito il tag di gestione degli accessi includono l'accesso a questo ID servizio.

Assegnazione di tag a un ID servizio tramite l'uso della CLI

I valori ammessi per il parametro di query 'tag_type sono: user per i tag utente e 'access per i tag di gestione degli accessi. L'esempio seguente mostra come collegare un tag di gestione degli accessi chiamato progetto:myproject a un ID di servizio. Per aggiungere un'etichetta a un ID servizio, procedere come segue:

  1. Scegliere di allegare un tag di gestione degli accessi o un tag utente.

    • Se si desidera allegare un tag di gestione degli accessi, è necessario prima creare il tag. Per ulteriori informazioni, vedere Creazione di tag.
    • Se si desidera collegare un tag utente, non è necessario creare il tag utente per collegarlo alle risorse o agli ID servizio. Anche l'applicazione del tag lo crea.
  2. Per collegare l'etichetta all'ID del servizio, utilizzare il comando 'tag-attach. Per ulteriori informazioni, vedere il documento 'Riferimento al comando CLI.

    ibmcloud resource tag-attach --tag-names project:myproject --resource-name 'ServiceIdName' --tag-type access
    

Quando si assegna un tag a un ID servizio, tutte le policy che hanno risorse che hanno come ambito il tag di gestione degli accessi includono l'accesso a questo ID servizio.

Aggiunta di tag a un ID di servizio tramite l'API

Per aggiungere un'etichetta a un ID servizio, procedere come segue:

  1. Scegliere di allegare un tag di gestione degli accessi o un tag utente.

    • Se si desidera allegare un tag di gestione degli accessi, è necessario prima creare il tag. Per ulteriori informazioni, vedere Creazione di tag.
    • Se si desidera collegare un tag utente, non è necessario creare il tag utente per collegarlo alle risorse o agli ID servizio. Anche l'applicazione del tag lo crea.
  2. Trovare l'identificatore univoco dell'ID del servizio chiamando IAM Identity Services con il seguente 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. Estrarre il valore del campo 'crn dalla risposta.

       {
    "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. Per associare il tag all'ID del servizio, richiamare l'API Ricerca globale e tagging - Tagging con il seguente comando.

    Sostituire {SERVICEID_CRN} con il valore estratto nel passaggio precedente.

    Sostituire (serviceidCRN) con il valore estratto nel passaggio precedente.

    Sostituire serviceidCrn con il valore estratto nel passaggio precedente.

    Sostituire serviceid_crn con il valore estratto nel passaggio precedente.

    Sostituire &serviceidCRN con il valore estratto nel passaggio precedente.

    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))
    

Quando si assegna un tag a un ID servizio, tutte le policy che hanno risorse che hanno come ambito il tag di gestione degli accessi includono l'accesso a questo ID servizio.

Rimozione dei tag su un ID servizio nella console

Per staccare un tag da un ID di servizio, procedere come segue:

  1. Vai a Gestisci > Accesso (IAM) > ID servizio.
  2. Fare clic sull'icona Modifica Modifica l'icona nella colonna Tag.
  3. Fare clic sull'icona Rimuovi Icona sul tag che si desidera staccare dall'ID servizio.
  4. Fare clic su Salva.

Quando si stacca un tag di gestione degli accessi da un ID servizio, qualsiasi criterio che abbia come ambito quel tag non include più l'accesso all'ID servizio.

Quando si stacca un tag utente, questo viene automaticamente eliminato dall'account se non è più collegato a nessuna risorsa.

Rimozione dei tag su un ID servizio mediante l'uso della CLI

Per staccare un'etichetta sull'ID servizio, utilizzare il comando 'tag-detach. Per ulteriori informazioni, vedere il documento 'Riferimento al comando CLI.

ibmcloud resource tag-detach --tag-names project:myproject --resource-id  'ServiceIdName' --tag-type access

Quando si stacca un tag di gestione degli accessi da un ID servizio, tutti i criteri che hanno come ambito quel tag non includono più l'accesso all'ID servizio.

Rimozione di tag su un ID di servizio utilizzando l'API

Per staccare un tag da un ID di servizio, procedere come segue:

  1. Trovare l'identificatore univoco dell'ID del servizio chiamando IAM Identity Services con il seguente 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. Estrarre il valore del campo 'crn dalla risposta.

       {
    "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. Per staccare il tag sull'ID del servizio, richiamare l'API Ricerca globale e tagging - Tagging con il seguente comando.

    Sostituire {SERVICEID_CRN} con il valore estratto nel passaggio precedente.

    Sostituire (serviceidCRN) con il valore estratto nel passaggio precedente.

    Sostituire serviceidCrn con il valore estratto nel passaggio precedente.

    Sostituire serviceid_crn con il valore estratto nel passaggio precedente.

    Sostituire &serviceidCRN con il valore estratto nel passaggio precedente.

    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))
    

Quando si stacca un tag di gestione degli accessi da un ID servizio, qualsiasi criterio che abbia come ambito quel tag non include più l'accesso all'ID servizio.

Eliminazione di tag inutilizzati dall'account

user i tag vengono eliminati automaticamente quando non sono più associati a nessuna risorsa, quindi non dovrebbe essere necessario farlo manualmente. Tuttavia, è necessario farlo per i tag access management.

Prima di poter eliminare un tag, è necessario rimuoverlo da tutte le risorse e gli ID servizio. Se non è ancora possibile eliminarlo, il tag potrebbe essere collegato a una risorsa che non si ha il permesso di visualizzare o che è stata recuperata. Lo stesso tag può essere applicato a più risorse e ID di servizio da utenti diversi dello stesso conto di fatturazione.

Se una risorsa recuperata blocca l'eliminazione del tag, è possibile eliminare completamente la risorsa recuperata o ripristinarla entro 7 giorni dalla sua eliminazione. Non tutte le risorse possono essere ripristinate. È possibile utilizzare la IBM Cloud® Per gestire il processo di bonifica di risorse specifiche. Per ulteriori informazioni, vedere Uso delle reclamazioni di risorse.

Quando si elimina un tag di gestione degli accessi dall'account, vengono eliminati anche i criteri IAM associati.

Eliminazione di tag inutilizzati nella console

  1. Per vedere l'elenco completo dei tag nel vostro account, andate su Gestione > Account nella console IBM Cloud® e selezionate Tag.
  2. Fare clic sull'icona Azioni Icona > Elimina accanto al tag non utilizzato.

Eliminazione di tag inutilizzati tramite la CLI

Accedere a IBM Cloud® e selezionare il proprio account per eseguire il comando 'code1' per eliminare solo uno o tutti i tag inutilizzati E selezionare il proprio account per eseguire il comando 'ibmcloud resource tag-delete per eliminare solo uno o tutti i tag inutilizzati.

  • L'esempio seguente cancella il tag utente " MyTag:

    ibmcloud resource tag-delete --tag-name MyTag
    

Eliminazione di tag inutilizzati tramite l'API

È possibile eliminare i tag chiamando l'API Ricerca globale e tagging - Tagging, come mostrato nelle seguenti richieste di esempio. I valori ammessi per il parametro di query 'tag_type sono: user per i tag utente e 'access per i tag di gestione degli accessi.

Eliminazione di una tag

Eliminazione di un tag di gestione degli accessi chiamato " project:myproject dall'account:

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))

Eliminazione di tutti i tag inutilizzati

Eliminazione di tutti i tag di gestione degli accessi inutilizzati dall'account:

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))