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
-
Depuis la console IBM Cloud®, cliquez sur l'icône Menu de navigation
> Liste des ressources pour afficher votre liste de ressources.
-
Recherchez la ressource spécifique dans la liste.
-
Pour associer une balise à la ressource, cliquez sur l’icône Actions icon
> Ajouter des étiquettes.
-
Entrez le nom de l'étiquette, puis cliquez sur Sauvegarder.
-
Pour détacher la balise de la ressource, cliquez sur l'icône Éditer
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.
-
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)) -
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" } -
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 :
-
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)) -
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" } -
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 :
-
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}.
-
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 -
Fournir les ressources du fichier "
main.tf. Pour plus d'informations, voir Provisionnement de l'infrastructure avec Terraform.-
Exécutez '
terraform planpour générer un plan d'exécution Terraform afin de prévisualiser les actions proposées.terraform plan -
Exécutez le "
terraform applypour 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 :
- 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.
- Allez dans Gérer > Accès (IAM ) > Service IDs.
- Sélectionnez l'ID de service que vous souhaitez marquer.
- Cliquer sur Ajouter une balise
.
- Saisissez le nom de la balise et appuyez sur Entrée.
- 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 :
-
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.
-
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 :
-
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.
-
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)) -
Extrait la valeur du champ
crnde 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": [] } } -
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
serviceidCrnpar la valeur que vous avez extraite à l'étape précédente.Remplacez
serviceid_crnpar la valeur que vous avez extraite à l'étape précédente.Remplacez
&serviceidCRNpar 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 :
- Allez dans Gérer > Accès (IAM ) > Service IDs.
- Cliquez sur l'icône " Editer ou "
dans la colonne "Tags".
- Cliquez sur l'icône 'Retirer ou '
de l'étiquette que vous souhaitez détacher de l'identifiant de service.
- 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 :
-
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)) -
Extrait la valeur du champ
crnde 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": [] } } -
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
serviceidCrnpar la valeur que vous avez extraite à l'étape précédente.Remplacez
serviceid_crnpar la valeur que vous avez extraite à l'étape précédente.Remplacez
&serviceidCRNpar 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
- 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.
- Cliquez sur l'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))