Gestion des clés d'API d'utilisateur

Un utilisateur fédéré ou non fédéré peut créer une clé API à utiliser dans le CLI ou dans le cadre de l'automatisation pour se connecter en tant qu'identité d'utilisateur. Vous pouvez utiliser la console, l'interface de programmation ou l'API pour gérer vos clés d'API IBM Cloud® en établissant la liste de vos clés, en créant des clés, en mettant à jour des clés ou en supprimant des clés.

La clé d'API hérite de tous les accès affectés pour l'identité utilisateur pour laquelle elle est créée. L'accès n'est pas limité uniquement au compte dans lequel la clé d'API est créée car elle hérite des règles affectées à l'utilisateur. Ainsi, si l'utilisateur a accès aux ressources de plusieurs comptes, la clé d'API hérite de l'accès de tous les comptes. C'est pourquoi, il est possible qu'une clé d'API d'un utilisateur puisse être utilisée pour générer un jeton et pour accéder aux ressources auxquelles un utilisateur a accès hors du compte dans lequel la clé d'API a été créée.

La clé API associée à votre identité d'utilisateur vous donne accès à tous les comptes dont vous êtes membre. C'est pourquoi vous devez être prudent dans l'utilisation de votre clé API. Par exemple, il peut être nécessaire qu'un service IBM Cloud agisse au nom d'un utilisateur ou accède à des services qui ne sont pas activés par IAM. Il est donc possible que le service demande une clé d'API d'utilisateur. Dans ce cas, créez une clé API associée à un identifiant fonctionnel auquel est attribué le niveau d'accès minimum requis pour travailler avec le service.

Un ID fonctionnel est un ID utilisateur créé pour représenter un programme, une application ou un service. L'ID fonctionnel peut être invité à rejoindre un compte et se voir affecter uniquement l'accès pour un but spécifique, comme l'interaction avec une application ou une ressource donnée. L'ID fonctionnel doit disposer uniquement du niveau d'accès minimal d'un compte qui est nécessaire pour la fonction spécifique pour laquelle il a été créé.

Si vous appliquez un profil sécurisé, vous ne pouvez pas créer de clé d'API d'utilisateur. Toutefois, vous pouvez créer et gérer toutes les autres clés d'API, par exemple les clés d'API d'ID de service. Pour plus d'informations, voir le site Questions fréquemment posées sur l'IAM.

Gestion des clés d'API d'utilisateur

Pour gérer les clés d'API IBM Cloud associées à votre identité d'utilisateur ou celles que vous avez le droit de gérer pour d'autres utilisateurs du compte, allez à Gérer > Accès (IAM ) > Clés d'API dans la console IBM Cloud. Sur la page des clés API, vous pouvez créer, modifier ou supprimer les clés API de IBM Cloud pour vous-même. Vous pouvez également gérer toutes les clés API de l'infrastructure classique pour les utilisateurs dont vous êtes l'ancêtre dans la hiérarchie des utilisateurs. De plus, si vous êtes le propriétaire de compte ou un utilisateur auquel ont été affectés les droits d'accès requis pour gérer les clés d'API d'autres utilisateurs du compte, vous pouvez utiliser le filtre Afficher pour répertorier et gérer ces clés d'API également.

Accès requis pour la gestion des clés d'API sur la page Clés d'API
Options de filtre Clés d'API affichées Droits d'accès requis Actions autorisées
Mes clés d'API IBM Cloud Vos clés d'API IBM Cloud Aucun droit d'accès requis Afficher, créer, éditer et supprimer
Toutes les clés d'API IBM Cloud d'utilisateur Toutes les clés d'API IBM Cloud créées par tous les utilisateurs du compte Rôle d'administrateur sur le service d'identité IAM Afficher, éditer et supprimer

Création d'une clé d'API sur la console

En tant qu'utilisateur IBM Cloud, vous pouvez choisir d'utiliser une clé d'API lorsque vous activez un programme ou un script sans distribuer votre mot de passe au script. L'utilisation d'une clé API présente l'avantage de permettre à un utilisateur ou à une organisation de créer plusieurs clés API pour différents programmes. Les clés API peuvent être supprimées indépendamment si elles sont compromises, sans interférer avec d'autres clés API ou même avec l'utilisateur. Vous pouvez créer jusqu'à 20 clés d'API.

Pour créer une clé d'API pour votre identité d'utilisateur dans l'interface utilisateur, procédez comme suit :

  1. Dans la console IBM Cloud, accédez à Gérer > Accès (IAM) > Clés d'API.
  2. Cliquez sur Créer une clé d'API IBM Cloud.
  3. Entrez un nom et une description pour votre clé d'API.
  4. Cliquez sur Créer.
  5. Cliquez ensuite sur Afficher pour afficher la clé d'API. Ou, cliquez sur Copier pour la copier et la sauvegarder en vue d'une utilisation ultérieure, ou cliquez sur Télécharger.

Pour des raisons de sécurité, la clé d'API ne peut être copiée ou téléchargée qu'au moment de sa création. Si la clé d'API est perdue, vous devez en créer une autre.

Création d'une clé d'API à l'aide de l'interface de ligne de commande

Pour créer une clé d'API dans l'interface de ligne de commande, utilisez la commande suivante :

  1. Saisissez ibmcloud iam api-key-create NAME [-d DESCRIPTION] [-f, --file FILE] [--action-if-leaked VALUE] et indiquez un nom, une description et un fichier pour l'enregistrement de votre clé. Voir l'exemple suivant :
ibmcloud iam api-key-create MyKey -d "this is my API key" --file key_file --action-if-leaked "DELETE"

Pour --action-if-leaked, les valeurs possibles sont "NONE", "DISABLE" ou "DELETE". L'action par défaut est "DISABLE".

  • DISABLE: La désactivation de la clé bloque immédiatement sa capacité à s'authentifier et à accéder aux services. Vous pouvez réactiver la clé ultérieurement si nécessaire.
  • DELETE: La clé API est définitivement supprimée de votre compte et ne peut plus être utilisée pour s'authentifier. Cette action ne peut pas être annulée.
  • AUCUN: La clé reste active et peut toujours être utilisée pour accéder aux ressources.

Création d'une clé d'API à l'aide de l'API

Pour créer une clé API, appelez l'API IAM Identity Service comme indiqué dans l'exemple suivant :

curl -X POST 'https://iam.cloud.ibm.com/v1/apikeys' -H 'Authorization: Bearer TOKEN' -H 'Content-Type: application/json' -d '{
  "name": "My-apikey",
  "description": "my personal key",
  "iam_id": "IBMid-123WEREW",
  "account_id": "ACCOUNT_ID"
  "store_value": false
  "action_when_leaked": "delete"
  "support_sessions": false
}'
CreateApiKeyOptions createApiKeyOptions = new CreateApiKeyOptions.Builder()
    .name(apiKeyName)
    .iamId(iamId)
    .description("Example ApiKey")
    .build();

Response<ApiKey> response = service.createApiKey(createApiKeyOptions).execute();
ApiKey apiKey = response.getResult();
apikeyId = apiKey.getId();
System.out.println(apiKey.toString());
const params = {
  name: apikeyName,
  iamId: iamId,
  description: 'Example ApiKey',
};

iamIdentityService.createApiKey(params)
  .then(res => {
    apikeyId = res.result.id
    console.log(JSON.stringify(res.result, null, 2));
  })
  .catch(err => {
    console.warn(err);
  });
api_key = iam_identity_service.create_api_key(
  name=apikey_name,
  iam_id=iam_id
).get_result()

apikey_id = api_key['id']

print(json.dumps(api_key, indent=2))
createAPIKeyOptions := iamIdentityService.NewCreateAPIKeyOptions(apikeyName, iamID)
createAPIKeyOptions.SetDescription("Example ApiKey")

apiKey, response, err := iamIdentityService.CreateAPIKey(createAPIKeyOptions)
if err != nil {
  panic(err)
}
b, _ := json.MarshalIndent(apiKey, "", "  ")
fmt.Println(string(b))
apikeyID = *apiKey.ID

Pour action_when_leaked, les valeurs possibles sont "none", "disable" ou "delete". L'action par défaut est "désactivée".

  • désactiver: La désactivation de la clé bloque immédiatement sa capacité à s'authentifier et à accéder aux services. Vous pouvez réactiver la clé ultérieurement si nécessaire.
  • supprimer: La clé API est définitivement supprimée de votre compte et ne peut plus être utilisée pour s'authentifier. Cette action ne peut pas être annulée.
  • aucun: La clé reste active et peut toujours être utilisée pour accéder aux ressources.

Pour support_sessions, définissez si vous pouvez gérer les sessions de connexion CLI pour la clé API :

  • true: Crée des sessions de connexion pour cette clé API, que vous pouvez gérer en examinant ou en révoquant les sessions. Pour plus d'informations, voir Surveillance des sessions de connexion.
  • faux: Aucune session n'est créée ou suivie. Il n'est pas possible de révoquer ou de réviser les connexions et vous devez supprimer ou faire pivoter la clé API elle-même pour bloquer l'accès.

Avant de commencer

Avant de pouvoir gérer les clés API des utilisateurs à l'aide de Terraform, assurez-vous de suivre les étapes suivantes :

  • Installez le CLI Terraform et configurez le plug-in IBM Cloud Provider pour Terraform. Pour plus d'informations, voir le tutoriel Getting started with 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.

Création d'une clé API à l'aide de Terraform

Les étapes suivantes permettent de créer des groupes d'accès à l'aide de Terraform.

  1. Créez un argument dans votre fichier main.tf. L'exemple suivant crée un groupe d'accès en utilisant la ressource ibm_iam_api_key, où name est un nom unique pour identifier la clé API.

    resource "ibm_iam_api_key" "iam_api_key" {
     name        = "test1234"
    }
    

    La propriété description n'est disponible que si une description est fournie lors de la création de la clé API. Pour plus d'informations, voir les détails de la référence des arguments sur la page Terraform Identity and Access Management(IAM ).

  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 à partir 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 site terraform apply pour créer les ressources définies dans le plan.

      terraform apply
      

Mise à jour d'une clé API dans la console

Si vous désirez modifier le nom ou la description d'une clé d'API, procédez comme suit dans l'interface de ligne de commande ou l'interface utilisateur.

Pour modifier une clé d'API, procédez comme suit :

  1. Dans la console IBM Cloud, accédez à Gérer > Accès (IAM) > Clés d'API.
  2. Identifiez la ligne dela clé API que vous souhaitez mettre à jour et cliquez sur l’icône Actions Icône Actions > Éditer.
  3. Mettez à jour les informations relatives à votre clé d'API.
  4. Cliquez sur Appliquer.

Pour éditer une clé d'API qui n'est pas la vôtre, mais pour laquelle vous disposez des droits de gestion, accédez à la page de clés d'API. Ensuite, sélectionnez l'option Clés d'API IBM Cloud de tous les utilisateurs dans le menu Afficher pour trouver la clé d'API.

Mise à jour d'une clé d'API à l'aide de la CLI

Pour modifier une clé d'API en utilisant l'interface de ligne de commande, entrez la commande suivante :

  1. Saisissez ibmcloud iam api-key-update NAME [-n NAME] [-d DESCRIPTION], en précisant l'ancien nom, le nouveau nom et la nouvelle description de la clé. Pour plus d'informations, voir l'exemple suivant :
ibmcloud iam api-key-update MyCurrentName -n MyNewName -d "the new description of my key"

Mise à jour d'une clé d'API à l'aide de l'API

Pour modifier une clé API en utilisant l'API, appelez l'API IAM Identity Service comme indiqué dans l'exemple suivant :

curl -X PUT 'https://iam.cloud.ibm.com/v1/apikeys/APIKEY_UNIQUE_ID' -H 'Authorization: Bearer TOKEN' -H 'If-Match: <value of etag header from GET request>' -H 'Content-Type: application/json' -d '{
  "name": "My-apikey",
  "description": "my personal key"
}'
UpdateApiKeyOptions updateApiKeyOptions = new UpdateApiKeyOptions.Builder()
    .id(apikeyId)
    .ifMatch(apikeyEtag)
    .description("This is an updated description")
    .build();

Response<ApiKey> response = service.updateApiKey(updateApiKeyOptions).execute();
ApiKey apiKey = response.getResult();
System.out.println(apiKey.toString());
const params = {
  id: apikeyId,
  ifMatch: apikeyEtag,
  description: 'This is an updated description',
};

iamIdentityService.updateApiKey(params)
  .then(res => {
    console.log(JSON.stringify(res.result, null, 2));
  })
  .catch(err => {
    console.warn(err);
  });
api_key = iam_identity_service.update_api_key(
  id=apikey_id,
  if_match=apikey_etag,
  description='This is an updated description'
).get_result()

print(json.dumps(api_key, indent=2))
updateAPIKeyOptions := iamIdentityService.NewUpdateAPIKeyOptions(apikeyID, apikeyEtag)
updateAPIKeyOptions.SetDescription("This is an updated description")

apiKey, response, err := iamIdentityService.UpdateAPIKey(updateAPIKeyOptions)
if err != nil {
  panic(err)
}
b, _ := json.MarshalIndent(apiKey, "", "  ")
fmt.Println(string(b))

Mise à jour d'une clé d'API à l'aide de Terraform

Suivez les étapes suivantes pour mettre à jour une clé API à l'aide de terraform :

  1. Dans votre fichier de configuration Terraform main.tf, trouvez le code Terraform que vous avez utilisé pour créer le site iam_api_key.

  2. L'exemple suivant met à jour une clé API en utilisant la ressource ibm_iam_api_key, où name est un nom unique pour identifier la clé API.

    resource "ibm_iam_api_key" "iam_api_key" {
     name        = "test1234"
     description = "API key for users"
    }
    

    La propriété description n'est disponible que si une description est fournie lors de la création de la clé API. Pour plus d'informations, voir les détails de la référence des arguments sur la page Terraform Identity and Access Management(IAM ).

  3. Fournir les ressources à partir 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 site terraform apply pour créer les ressources définies dans le plan.

      terraform apply
      

Pour plus d'informations, voir la documentation de Terraform.

Verrouillage et déverrouillage d'une clé API dans la console

Vous pouvez empêcher la suppression des clés d'API de plateforme représentant votre identité utilisateur en les verrouillant. Une clé API verrouillée présente l'icône Verrouillée Icône Verrouillée.

  1. Dans la console IBM Cloud, accédez à Gérer > Accès (IAM) > Clés d'API.
  2. Identifiez la ligne de la clé d'API que vous voulez verrouiller et cliquez sur l’icône Actions Icône Actions > Verrouiller.

Vous pouvez déverrouiller votre clé d'API à tout moment pour mettre à jour ou retirer la clé d'API dans votre compte. Sélectionnez la clé d'API dans le tableau que vous souhaitez déverrouiller et cliquez sur l’icône Actions Icône Actions > Déverrouiller.

Verrouillage et déverrouillage d'une clé d'API à l'aide de l'interface de ligne de commande

Vous pouvez empêcher la suppression des clés d'API de plateforme représentant votre identité utilisateur en les verrouillant. Pour verrouiller une clé d'API, utilisez la commande suivante :

ibmcloud iam api-key-lock (NAME|UUID) [-f, --force]

Prérequis : Noeud final, Connexion

Options de commande :

NAME (obligatoire)
Le nom de la clé API à verrouiller, exclusif avec UUID.
UUID (obligatoire)
UUID de la clé API à verrouiller, exclusif avec NAME.
-f, --force
Forcer le verrouillage sans confirmation.

Exemple :

Verrouiller la clé d'API test-api-key

ibmcloud iam api-key-lock test-api-key

Pour déverrouiller une clé d'API, exécutez la commande suivante :

ibmcloud iam api-key-unlock (NAME|UUID) [-f, --force]

Prérequis : Noeud final, Connexion

Options de commande :

NAME (obligatoire)
Nom de la clé d'API à déverrouiller, exclut UUID.
UUID (obligatoire)
Identificateur unique universel de la clé d'API à déverrouiller, exclut NAME.
-f, --force
Forcer le déverrouillage sans confirmation.

Exemple :

Déverrouiller la clé d'API test-api-key

ibmcloud iam api-key-unlock test-api-key

Verrouillage et déverrouillage d'une clé d'API à l'aide de l'API

Vous pouvez empêcher la suppression des clés d'API de plateforme représentant votre identité utilisateur en les verrouillant.

Verrouiller une clé API en utilisant l'API

Pour verrouiller une clé API en utilisant l'API, appelez l'API IAM Identity Service comme indiqué dans l'exemple suivant :

curl -X POST 'https://iam.cloud.ibm.com/v1/apikeys/APIKEY_UNIQUE_ID/lock' -H 'Authorization: Bearer TOKEN' -H 'Content-Type: application/json'
LockApiKeyOptions lockApiKeyOptions = new LockApiKeyOptions.Builder()
    .id(apikeyId)
    .build();

service.lockApiKey(lockApiKeyOptions).execute();
const params = {
  id: apikeyId,
};

iamIdentityService.lockApiKey(params)
  .then(res => {
    console.log(JSON.stringify(res.result, null, 2));
  })
  .catch(err => {
    console.warn(err);
  });
lock_api_key(self,
        id: str,
        **kwargs
    ) -> DetailedResponse

response = iam_identity_service.lock_api_key(id=apikey_id)

print(response)
lockAPIKeyOptions := iamIdentityService.NewLockAPIKeyOptions(apikeyID)

response, err := iamIdentityService.LockAPIKey(lockAPIKeyOptions)
if err != nil {
  panic(err)
}

Déverrouillage d'une clé d'API

Pour déverrouiller une clé API en utilisant l'API, appelez l'API IAM Identity Service comme indiqué dans l'exemple suivant :

curl -X DELETE 'https://iam.cloud.ibm.com/v1/apikeys/APIKEY_UNIQUE_ID/lock' -H 'Authorization: Bearer TOKEN' -H 'Content-Type: application/json'
UnlockApiKeyOptions unlockApiKeyOptions = new UnlockApiKeyOptions.Builder()
    .id(apikeyId)
    .build();

service.unlockApiKey(unlockApiKeyOptions).execute();
const params = {
  id: apikeyId,
};

iamIdentityService.unlockApiKey(params)
  .then(res => {
    console.log(JSON.stringify(res.result, null, 2));
  })
  .catch(err => {
    console.warn(err);
  });
response = iam_identity_service.unlock_api_key(id=apikey_id)

print(response)
unlockAPIKeyOptions := iamIdentityService.NewUnlockAPIKeyOptions(apikeyID)

response, err := iamIdentityService.UnlockAPIKey(unlockAPIKeyOptions)
if err != nil {
  panic(err)
}

Verrouillage et déverrouillage d'une clé d'API à l'aide de l'outil Terraform

Vous pouvez empêcher la suppression des clés d'API de plateforme représentant votre identité utilisateur en les verrouillant.

Verrouiller une clé d'API en utilisant Terraform

Suivez les étapes suivantes pour verrouiller une clé API à l'aide de Terraform :

  1. Dans votre fichier de configuration Terraform main.tf, trouvez le code Terraform que vous avez utilisé pour créer le site iam_api_key.

  2. L'exemple suivant met à jour une clé API en utilisant la ressource ibm_iam_api_key, où entity_lock indique si la clé API est verrouillée pour d'autres opérations d'écriture. La valeur par défaut est false.

    resource "ibm_iam_api_key" "iam_api_key" {
     entity_lock        = "true"
    }
    
  3. Fournir les ressources à partir 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 site terraform apply pour créer les ressources définies dans le plan.

      terraform apply
      

Pour plus d'informations, voir la documentation de Terraform.

Suppression d'une clé d'API

Si vous utilisez une stratégie de rotation des clés, vous pouvez être amené à supprimer une ancienne clé et la remplacer par une nouvelle.

Pour supprimer une clé d'API, procédez comme suit :

  1. Dans la console IBM Cloud, accédez à Gérer > Accès (IAM) > Clés d'API.
  2. Identifiez la ligne de la clé API que vous souhaitez supprimer, et cliquez sur l'icône Actions Actions > Supprimer.
  3. Confirmez ensuite la suppression en cliquant sur Supprimer.

Pour supprimer une clé d'API qui n'est pas la vôtre, mais pour laquelle vous disposez des droits de gestion, accédez à la page de clés d'API. Ensuite, sélectionnez l'option Clés d'API IBM Cloud de tous les utilisateurs dans le menu Afficher pour trouver la clé d'API.

Suppression d'une clé d'API à l'aide de l'interface de ligne de commande

Pour supprimer une clé d'API à l'aide de l'interface de ligne de commande :

Entrez ibmcloud iam api-key-delete NAME, en spécifiant le nom de la clé à supprimer.

Suppression d'une clé d'API à l'aide de l'API

Pour supprimer une clé API à l'aide de l'API, appelez l'API IAM Identity Service comme indiqué dans l'exemple suivant :

curl -X DELETE 'https://iam.cloud.ibm.com/v1/apikeys/APIKEY_UNIQUE_ID' -H 'Authorization: Bearer TOKEN' -H 'Content-Type: application/json'
DeleteApiKeyOptions deleteApiKeyOptions = new DeleteApiKeyOptions.Builder()
    .id(apikeyId)
    .build();

service.deleteApiKey(deleteApiKeyOptions).execute();
const params = {
  id: apikeyId,
};

iamIdentityService.deleteApiKey(params)
  .then(res => {
    console.log(JSON.stringify(res.result, null, 2));
  })
  .catch(err => {
    console.warn(err);
  });
delete_api_key(self,
        id: str,
        **kwargs
    ) -> DetailedResponse

response = iam_identity_service.delete_api_key(id=apikey_id)

print(response)
deleteAPIKeyOptions := iamIdentityService.NewDeleteAPIKeyOptions(apikeyID)

response, err := iamIdentityService.DeleteAPIKey(deleteAPIKeyOptions)
if err != nil {
  panic(err)
}

Examen des fuites de clés d'API d'utilisateur à l'aide de la console

Si une fuite de clé API d'utilisateur est détectée, vous pouvez utiliser la console pour l'examiner. Procédez comme suit :

  1. Connectez-vous à la console Web IBM Cloud.
  2. Sélectionnez le compte qui contient la clé API qui a fui.
  3. Allez dans Gérer > Accès > Clés API pour vérifier la clé API qui a fui.

Examen des clés d'API d'utilisateurs ayant fait l'objet d'une fuite à l'aide de l'interface de gestion (CLI)

Si une fuite de clé API d'utilisateur est détectée, vous pouvez utiliser la CLI pour la vérifier. Procédez comme suit :

  1. Connectez-vous à l'interface de ligne de commande IBM Cloud.

  2. Sélectionnez le compte qui contient la clé API qui a fui.

  3. Exécutez la commande suivante :

    ibmcloud iam api-key <API_key_ID>