Gestion des étiquettes

Vous pouvez attacher et détacher des balises sur une ressource ou un identifiant de service par l'intermédiaire de la console, de l'interface de programmation ou de l'API. Pour attacher ou détacher une balise sur une ressource ou un identifiant de service, les utilisateurs doivent disposer de la permission appropriée. Pour plus d'informations, voir Octroi aux utilisateurs de l'accès leur permettant d'étiqueter des ressources.

Une ressource peut avoir un maximum de 1000 étiquettes d'utilisateur, 1000 étiquettes de service et 250 étiquettes d'accès.

Association et dissociation d'étiquettes sur une ressource à l'aide de la console

  1. Depuis la console IBM Cloud®, cliquez sur l'icône Menu de navigation Icône Menu de navigation > Liste des ressources pour afficher votre liste de ressources.

  2. Recherchez la ressource spécifique dans la liste.

  3. Pour associer une balise à la ressource, cliquez sur l’icône Actions icon Icône Actions > Ajouter des étiquettes.

  4. Entrez le nom de l'étiquette, puis cliquez sur Sauvegarder.

  5. Pour détacher la balise de la ressource, cliquez sur l'icône Éditer Icône d'édition en regard de la balise dans votre liste de ressources.

    Lorsque vous dissociez une étiquette de gestion des accès d'une ressource, toutes les règles d'accès associées sont également dissociées de cette ressource.

Association d'étiquettes à une ressource à l'aide de l'interface de ligne de commande

Connectez-vous à l'interface de ligne de commande IBM Cloud® et sélectionnez votre compte pour exécuter la commande d'interface de ligne de commande appropriée.

Pour associer une étiquette à une ressource, entrez la commande ibmcloud resource tag-attach. Les valeurs admises pour tag-type sont user pour les étiquettes utilisateur et access pour les étiquettes de gestion des accès. La valeur par défaut est user. L'exemple suivant montre comment attacher une balise utilisateur appelée MyTag à une ressource nommée MyResource:

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

Exemple d'association d'une étiquette de gestion des accès nommée project:myproject à une ressource nommée MyResource :

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

Mise à jour des balises clé:valeur d'une ressource à l'aide de la CLI

Connectez-vous à l'interface de ligne de commande IBM Cloud® et sélectionnez votre compte pour exécuter la commande d'interface de ligne de commande appropriée.

Si vous gérez des balises au format " key:value, vous pouvez mettre à jour le " value de manière atomique, sans avoir à détacher le " key:old-value et à y attacher le nouveau " key:new-value.

Pour mettre à jour la valeur d'une balise au format 'key:value, utilisez la commande 'ibmcloud resource tag-attach avec l'option '--update Les valeurs admises pour tag-type sont user pour les étiquettes utilisateur et access pour les étiquettes de gestion des accès. La valeur par défaut est user. L'exemple suivant montre comment mettre à jour à " production la valeur de la balise utilisateur " env sur une ressource nommée " MyResource:

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

Ajoutez l'option 'tag-type à la commande précédente pour mettre à jour un tag de gestion d'accès :

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

Remplacer toutes les balises d'une ressource par un nouvel ensemble de balises à l'aide de la CLI

Connectez-vous à l'interface de ligne de commande IBM Cloud® et sélectionnez votre compte pour exécuter la commande d'interface de ligne de commande appropriée.

L'opération attach permet d'ajouter des balises à une ressource en plus de celles qu'elle possède déjà. Dans certains cas, il est nécessaire de remplacer les balises existantes attachées à une ressource par un nouvel ensemble.

Pour remplacer toutes les balises d'une ressource par un nouvel ensemble de balises, utilisez la commande 'ibmcloud resource tag-attach avec l'option '--replace Les valeurs admises pour tag-type sont user pour les étiquettes utilisateur et access pour les étiquettes de gestion des accès. La valeur par défaut est user. L'exemple suivant montre comment définir les balises " tag1, " tag2 et " tag3 sur une ressource nommée " MyResource, et supprimer toutes celles qu'elle pourrait déjà avoir :

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

Ajoutez l'option 'tag-type à la commande précédente pour définir les balises de gestion de l'accès. Par exemple, pour remplacer toutes les balises de gestion de l'accès par le " compliance:hipaa:

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

Dissociation d'étiquettes d'une ressource à l'aide de l'interface de ligne de commande

Pour dissocier une étiquette d'une ressource, entrez la commande ibmcloud resource tag-detach. L'exemple suivant permet de détacher une étiquette utilisateur appelée MyTag d'une ressource appelée MyResource:

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

Vous pouvez utiliser le caractère générique '* pour détacher les balises, ce qui est utile pour détacher les balises au format 'key:value, et pour détacher toutes les balises. Par exemple, si vous souhaitez détacher la balise " env de " MyResource, quelle que soit sa valeur, vous pouvez exécuter la commande suivante :

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

Pour détacher toutes les balises de 'MyResource, vous pouvez utiliser la commande suivante :

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

Voici un exemple de détachement d'une balise de gestion des accès appelée project:myproject d'une ressource appelée MyResource:

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

Pour plus d'informations, voir la référence pour la commande ibmcloud resource. Lorsque vous dissociez une étiquette de gestion des accès d'une ressource, toutes les règles d'accès associées sont également dissociées de cette ressource.

Association d'étiquettes à une ressource à l'aide de l'API

Vous pouvez attacher des balises de manière programmatique en appelant l'API Recherche globale et balisage - Balisage, comme le montrent les exemples de requêtes suivants. Les valeurs admises pour le paramètre de requête tag_type sont user pour les étiquettes utilisateur et access pour les étiquettes de gestion des accès. L'exemple suivant montre comment attacher une balise de gestion d'accès appelée project:myproject à une instance de service.

  1. Recherchez l'identificateur unique de votre ressource en appelant la commande suivante :

    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. Extrayez la valeur de la zone CRN (nom de ressource de cloud) de la réponse.

       {
       "items": [
         {
           "crn": "crn:v1:bluemix:public:cf:au-syd:a/000af2ea12345aabb1234567801fffab::cf-organization:aaaf4100-0011-2233-1111-11aaffee0011"
         }
       ],
       "limit": 1,
       "search_cursor": "e34535305339jg0rntt39nt3nu5tt9yn3u5ntt329nutt92u4ntt92u4t9u5gt2u5gt92u4n5g982458hg2t45hg9u42rg9t2u49gh285ght28h5t2835th85ht318h4tg9138h4tg91u3hgt931hg45918h34tg18h43hgt31hgt3rng0fnefvodnfvpojdpbojarfdbpojeafrbeafbjeqpnrqngrpqgrhbHNlIiwiY2FuVGFnIjoiZmFsc2UiLCJsdfshfksdhfkshfdkshfdkhkhewrkfehrkhkwhfkwrhkfhrgk3h5k3h45k3hk45hgk3hgk3hfk3h4k3hfkrfh3rkgh3krghk3rgh3kghk3hgk3hgk3rhgdWJsaWM6Y2Y6YXUtwriretoeiroteito4i5ot4i5oyti45ito4tio45ito45io5ogno5iogn5oin5oingoi5o5ngogo4ngo4ngro3jrong3gor3g3gno3jrgo3jrngo3ngro3g32ODQiXX0t"
     }
    
  3. Appelez la commande suivante :

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

Mise à jour des balises clé:valeur d'une ressource

Si vous gérez des balises au format 'key:value, vous pouvez mettre à jour la valeur de manière atomique, sans détacher le 'key:old-value et attacher le nouveau 'key:new-value. Pour ce faire, utilisez le paramètre de requête booléen " update Ainsi, pour mettre à jour la balise " env d'une ressource avec la valeur " env:qa_test, il suffit d'ajouter le paramètre de requête " update=true à l'appel de l'API d'attachement. Voir Recherche globale et balisage - API de balisage pour plus d'informations sur l'utilisation du paramètre de requête " update

Remplacer toutes les balises d'une ressource par un nouvel ensemble de balises

L'opération attach permet d'ajouter des balises à une ressource en plus de celles qu'elle possède déjà. Dans certains cas, il est nécessaire de remplacer les balises existantes attachées à une ressource par un nouvel ensemble. Pour ce faire, utilisez le paramètre de requête booléen " replace Ainsi, pour remplacer toutes les balises d'une ressource par un nouvel ensemble de balises, il suffit d'ajouter le paramètre de requête " replace=true à l'appel de l'API d'attachement. Voir Recherche globale et balisage - API de balisage pour plus d'informations sur l'utilisation du paramètre de requête " replace

Dissociation d'étiquettes d'une ressource à l'aide de l'API

Vous pouvez détacher des balises de manière programmatique en appelant l'API Recherche globale et balisage - Balisage, comme le montrent les exemples de requêtes suivants. Les valeurs admises pour le paramètre de requête tag_type sont user pour les étiquettes utilisateur et access pour les étiquettes de gestion des accès. L'exemple suivant montre comment détacher une balise de gestion d'accès appelée project:myproject d'une instance de service :

  1. Recherchez l'identificateur unique de votre ressource en appelant la commande suivante :

    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. Extrayez la valeur de la zone CRN (nom de ressource de cloud) de la réponse.

       {
       "items": [
         {
           "crn": "crn:v1:bluemix:public:cf:au-syd:a/000af2ea12345aabb1234567801fffab::cf-organization:aaaf4100-0011-2233-1111-11aaffee0011"
         }
       ],
       "limit": 1,
       "search_cursor": "e34535305339jg0rntt39nt3nu5tt9yn3u5ntt329nutt92u4ntt92u4t9u5gt2u5gt92u4n5g982458hg2t45hg9u42rg9t2u49gh285ght28h5t2835th85ht318h4tg9138h4tg91u3hgt931hg45918h34tg18h43hgt31hgt3rng0fnefvodnfvpojdpbojarfdbpojeafrbeafbjeqpnrqngrpqgrhbHNlIiwiY2FuVGFnIjoiZmFsc2UiLCJsdfshfksdhfkshfdkshfdkhkhewrkfehrkhkwhfkwrhkfhrgk3h5k3h45k3hk45hgk3hgk3hfk3h4k3hfkrfh3rkgh3krghk3rgh3kghk3hgk3hgk3rhgdWJsaWM6Y2Y6YXUtwriretoeiroteito4i5ot4i5oyti45ito4tio45ito45io5ogno5iogn5oin5oingoi5o5ngogo4ngo4ngro3jrong3gor3g3gno3jrgo3jrngo3ngro3g32ODQiXX0t"
     }
    
  3. Appelez la commande suivante :

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

    Lorsque vous dissociez une étiquette de gestion des accès d'une ressource, toutes les règles d'accès associées sont également dissociées de cette ressource.

Détacher toutes les étiquettes et détacher les étiquettes par clé

Vous pouvez utiliser le caractère générique '* pour détacher les balises, ce qui est utile pour détacher les balises au format 'key:value, et pour détacher toutes les balises. Par exemple, si vous souhaitez détacher la balise " env d'une ressource donnée, quelle que soit sa valeur, vous pouvez exécuter la commande suivante :

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 vous souhaitez détacher toutes les balises, il vous suffit d'utiliser '* comme nom de balise ou comme élément unique dans le tableau 'tag_names comme dans la commande suivante :

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"

Association d'étiquettes à une ressource à l'aide de Terraform

Avant de pouvoir attacher des balises à une ressource à l'aide de Terraform, assurez-vous d'avoir effectué les opérations suivantes :

  • Installez le CLI Terraform et configurez le plug-in IBM Cloud Pour Terraform. Pour plus d'informations, voir le tutoriel pour démarrer avec Terraform sur IBM Cloud® Ce plug-in résume les API IBM Cloud utilisées pour effectuer cette tâche.

  • Créez un fichier de configuration Terraform nommé main.tf. Dans ce fichier, vous définissez les ressources en utilisant le langage de configuration HashiCorp. Pour plus d'informations, voir la documentation de Terraform.

Suivez les étapes suivantes pour attacher des balises à une ressource à l'aide de Terraform :

  1. Préparez votre fichier de configuration Terraform (par exemple main.tf) pour attacher un tag utilisateur à une ressource existante dans notre compte en suivant l'exemple documenté à ibm_resource_tag '{: external}.

  2. Une fois que vous avez fini de construire votre fichier de configuration, initialisez le CLI Terraform. Pour plus d'informations, voir Initialisation des répertoires de travail.

    terraform init
    
  3. Fournir les ressources du fichier " main.tf. Pour plus d'informations, voir Provisionnement de l'infrastructure avec Terraform.

    1. Exécutez 'terraform plan pour générer un plan d'exécution Terraform afin de prévisualiser les actions proposées.

      terraform plan
      
    2. Exécutez le " terraform apply pour créer les ressources définies dans le plan.

      terraform apply
      

Attacher des balises à un identifiant de service dans la console

Pour ajouter une balise à un identifiant de service, procédez comme suit :

  1. Choisissez d'attacher une étiquette de gestion d'accès ou une étiquette d'utilisateur.
    • Si vous souhaitez attacher une balise de gestion des accès, vous devez d'abord créer la balise. Pour plus d'informations, voir Création de balises.
    • Si vous souhaitez attacher un tag utilisateur, il n'est pas nécessaire de créer le tag utilisateur pour l'attacher aux ressources ou aux identifiants de service. Le fait d'attacher la balise la crée également.
  2. Allez dans Gérer > Accès (IAM ) > Service IDs.
  3. Sélectionnez l'ID de service que vous souhaitez marquer.
  4. Cliquer sur Ajouter une balise Editer l'icône.
  5. Saisissez le nom de la balise et appuyez sur Entrée.
  6. Cliquez sur Sauvegarder.

Lorsque vous marquez un identifiant de service, toutes les politiques dont les ressources sont couvertes par votre balise de gestion des accès incluent l'accès à cet identifiant de service.

Attacher des balises à un identifiant de service à l'aide de la CLI

Les valeurs admises pour le paramètre de requête tag_type sont user pour les étiquettes utilisateur et access pour les étiquettes de gestion des accès. L'exemple suivant montre comment attacher une balise de gestion des accès appelée project:myproject à un identifiant de service. Pour ajouter une balise à un identifiant de service, procédez comme suit :

  1. Choisissez d'attacher une étiquette de gestion d'accès ou une étiquette d'utilisateur.

    • Si vous souhaitez attacher une balise de gestion des accès, vous devez d'abord créer la balise. Pour plus d'informations, voir Création de balises.
    • Si vous souhaitez attacher un tag utilisateur, il n'est pas nécessaire de créer le tag utilisateur pour l'attacher aux ressources ou aux identifiants de service. Le fait d'attacher la balise la crée également.
  2. Pour attacher l'étiquette à votre identifiant de service, utilisez la commande " tag-attach. Pour plus d'informations, voir la référence des commandes CLI.

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

Lorsque vous marquez un identifiant de service, toutes les politiques dont les ressources sont couvertes par votre balise de gestion des accès incluent l'accès à cet identifiant de service.

Attacher des balises à un identifiant de service en utilisant l'API

Pour ajouter une balise à un identifiant de service, procédez comme suit :

  1. Choisissez d'attacher une étiquette de gestion d'accès ou une étiquette d'utilisateur.

    • Si vous souhaitez attacher une balise de gestion des accès, vous devez d'abord créer la balise. Pour plus d'informations, voir Création de balises.
    • Si vous souhaitez attacher un tag utilisateur, il n'est pas nécessaire de créer le tag utilisateur pour l'attacher aux ressources ou aux identifiants de service. Le fait d'attacher la balise la crée également.
  2. Trouvez l'identifiant unique de votre service ID en appelant les services d'identité IAM à l'aide de la commande suivante :

    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. Extrait la valeur du champ crn de la réponse.

       {
    "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. Pour attacher la balise à votre identifiant de service, appelez la recherche globale et le balisage - API de balisage à l'aide de la commande suivante.

    Remplacez {SERVICEID_CRN} par la valeur que vous avez extraite à l'étape précédente.

    Remplacez (serviceidCRN) par la valeur que vous avez extraite à l'étape précédente.

    Remplacez serviceidCrn par la valeur que vous avez extraite à l'étape précédente.

    Remplacez serviceid_crn par la valeur que vous avez extraite à l'étape précédente.

    Remplacez &serviceidCRN par la valeur que vous avez extraite à l'étape précédente.

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

Lorsque vous marquez un identifiant de service, toutes les politiques dont les ressources sont couvertes par votre balise de gestion des accès incluent l'accès à cet identifiant de service.

Détacher les étiquettes d'un identifiant de service dans la console

Pour détacher une étiquette d'un identifiant de service, procédez comme suit :

  1. Allez dans Gérer > Accès (IAM ) > Service IDs.
  2. Cliquez sur l'icône " Editer ou " Editer l'icône dans la colonne "Tags".
  3. Cliquez sur l'icône 'Retirer ou 'Supprimer l'icône de l'étiquette que vous souhaitez détacher de l'identifiant de service.
  4. Cliquez sur Sauvegarder.

Lorsque vous détachez une balise de gestion des accès d'un identifiant de service, toutes les stratégies liées à cette balise n'incluent plus l'accès à l'identifiant de service.

Lorsque vous détachez une balise utilisateur, elle est automatiquement supprimée du compte si elle n'est plus attachée à une ressource.

Détacher les balises d'un identifiant de service à l'aide de la CLI

Pour détacher une étiquette de votre identifiant de service, utilisez la commande 'tag-detach Pour plus d'informations, voir la référence des commandes CLI.

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

Lorsque vous détachez une balise de gestion des accès d'un identifiant de service, toutes les stratégies dont le champ d'application est défini par cette balise n'incluent plus l'accès à l'identifiant de service.

Détacher des balises sur un identifiant de service en utilisant l'API

Pour détacher une étiquette d'un identifiant de service, procédez comme suit :

  1. Trouvez l'identifiant unique de votre service ID en appelant les services d'identité IAM à l'aide de la commande suivante :

    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. Extrait la valeur du champ crn de la réponse.

       {
    "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. Pour détacher la balise de votre identifiant de service, appelez la recherche globale et le balisage - API de balisage à l'aide de la commande suivante.

    Remplacez {SERVICEID_CRN} par la valeur que vous avez extraite à l'étape précédente.

    Remplacez (serviceidCRN) par la valeur que vous avez extraite à l'étape précédente.

    Remplacez serviceidCrn par la valeur que vous avez extraite à l'étape précédente.

    Remplacez serviceid_crn par la valeur que vous avez extraite à l'étape précédente.

    Remplacez &serviceidCRN par la valeur que vous avez extraite à l'étape précédente.

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

Lorsque vous détachez une balise de gestion des accès d'un identifiant de service, toutes les stratégies liées à cette balise n'incluent plus l'accès à l'identifiant de service.

Suppression des étiquettes inutilisées du compte

user sont automatiquement supprimées lorsqu'elles ne sont plus associées à une ressource, de sorte qu'il n'est pas nécessaire de le faire manuellement. Cependant, vous devriez le faire pour les balises access management.

Avant de pouvoir supprimer une balise, vous devez la supprimer de toutes les ressources et de tous les identifiants de service. Si vous ne pouvez toujours pas la supprimer, il se peut que l'étiquette soit associée à une ressource que vous n'êtes pas autorisé à consulter ou réclamer. La même étiquette peut être attachée à plusieurs ressources et identifiants de service par différents utilisateurs sur le même compte de facturation.

Si une ressource réclamée bloque la suppression d'une étiquette, vous pouvez supprimer entièrement la ressource réclamée ou la restaurer dans un délai de sept jours après sa suppression. Toutes les ressources ne peuvent pas être restaurées. Vous pouvez utiliser l'interface de ligne de commande IBM Cloud® pour gérer le processus de réclamation de ressources spécifiques. Pour plus d'informations, voir Utilisation des réclamations de ressource.

Lorsque vous supprimez une étiquette de gestion des accès dans le compte, toutes les règles IAM associées sont également supprimées.

Suppression des étiquettes inutilisées dans la console

  1. Pour afficher la liste complète des étiquettes dans votre compte, accédez à Gérer > Compte dans la console IBM Cloud®, puis sélectionnez Etiquettes.
  2. Cliquez sur l'icône Actions Icône Actions > Supprimer en regard de la balise inutilisée.

Suppression des étiquettes inutilisées à l'aide de l'interface de ligne de commande

Connectez-vous à l'interface de ligne de commande IBM Cloud® et sélectionnez votre compte pour exécuter la commande ibmcloud resource tag-delete en vue de supprimer une seule ou toutes les étiquettes non utilisées.

  • L'exemple suivant supprime l'étiquette utilisateur MyTag :

    ibmcloud resource tag-delete --tag-name MyTag
    

Suppression des étiquettes inutilisées à l'aide de l'API

Vous pouvez supprimer des balises en appelant l'API Recherche globale et balisage - Balisage, comme indiqué dans les exemples de requêtes suivants. Les valeurs admises pour le paramètre de requête tag_type sont user pour les étiquettes utilisateur et access pour les étiquettes de gestion des accès.

Suppression d'une étiquette

Suppression d'une étiquette de gestion des accès nommée project:myproject du compte :

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

Suppression de toutes les étiquettes inutilisées

Suppression de toutes les étiquettes de gestion des accès inutilisées du compte :

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