Gestione delle chiavi API utente

Un utente federato o non federato può creare una chiave API da usare nella CLI o come parte dell'automazione per accedere come identità utente. È possibile utilizzare la console, la CLI o l'API per gestire le chiavi API di IBM Cloud® elencando le chiavi, creando chiavi, aggiornando chiavi o eliminando chiavi.

La chiave API eredita tutti gli accessi assegnati all'identità dell'utente per cui è stata creata e l'accesso non è limitato al solo account in cui la chiave API è stata creata, poiché eredita tutti i criteri assegnati all'utente. Quindi, se l'utente ha accesso alle risorse da più account, la chiave API eredita l'accesso da tutti gli account. Pertanto, è possibile che la chiave API di un utente possa essere utilizzata per generare un token e accedere a risorse a cui l'utente ha accesso al di fuori dell'account in cui è stata creata la chiave API.

La chiave API associata all'identità dell'utente ha tutti gli accessi a cui l'utente ha diritto in tutti gli account di cui è membro. Per questo motivo, è necessario usare con cautela la propria chiave API. Ad esempio, un servizio di IBM Cloud potrebbe aver bisogno di agire per conto di un utente o di accedere a servizi che non sono abilitati allo IAM, quindi il servizio potrebbe richiedere una chiave API dell'utente. In questi casi, creare una chiave API associata a un ID funzionale a cui è assegnato il livello minimo di accesso richiesto per lavorare con il servizio.

Un ID funzionale è un ID utente creato per rappresentare un programma, un'applicazione o un servizio. L'ID funzionale può essere invitato a un account e gli viene assegnato solo l'accesso per uno scopo particolare, come l'interazione con una risorsa o un'applicazione specifica. All'ID funzionale deve essere concesso solo il livello minimo di accesso in un singolo account, necessario per la funzione specifica per cui è stato creato.

Se si applica un profilo di fiducia, non è possibile creare una chiave API utente. È comunque possibile creare e gestire tutte le altre chiavi API. Ad esempio, le chiavi API dell'ID del servizio. Per ulteriori informazioni, consultare il sito Domande frequenti su IAM.

Gestione delle chiavi API utente

Per gestire le chiavi API IBM Cloud associate alla propria identità utente o quelle che si ha accesso a gestire per altri utenti dell'account, andare su Gestione > Accesso (IAM) > Chiavi API nella console IBM Cloud. Nella pagina delle chiavi API è possibile creare, modificare o eliminare le chiavi API di IBM Cloud. È inoltre possibile gestire tutte le chiavi API dell'infrastruttura classica per gli utenti di cui si è antenati nella gerarchia degli utenti. Inoltre, se si è il proprietario dell'account o un utente a cui è stato assegnato l'accesso richiesto per gestire le chiavi API di altri utenti nell'account, è possibile utilizzare il filtro Visualizza per elencare e gestire anche tali chiavi API.

Accesso richiesto per la gestione delle chiavi API nella pagina delle chiavi API
Opzioni di filtro Chiavi API visualizzate Accesso richiesto Azioni consentite
Le mie chiavi API IBM Cloud Le chiavi API di IBM Cloud Non è richiesto l'accesso Visualizzare, creare, modificare, cancellare
Tutti gli utenti IBM Cloud Chiavi API Tutte le chiavi API di IBM Cloud create da tutti gli utenti dell'account Ruolo di amministratore sul servizio IAM Identity Visualizzare, modificare ed eliminare

Creazione di una chiave API nella console

In qualità di utente IBM Cloud, potresti voler utilizzare una chiave API quando abiliti un programma o uno script senza distribuire la tua password allo script. Un vantaggio dell'uso di una chiave API è che un utente o un'organizzazione può creare più chiavi API per programmi diversi. Le chiavi API possono essere eliminate in modo indipendente se compromesse, senza interferire con altre chiavi API o addirittura con l'utente. Puoi creare fino a 20 chiavi API.

Per creare una chiave API per la tua identità utente nell'IU, completa la seguente procedura:

  1. Nella console IBM Cloud, andare su Gestione > Accesso (IAM) > Chiavi API.
  2. Fai clic su Crea una chiave API IBM Cloud.
  3. Immetti un nome e una descrizione per la tua chiave API.
  4. Fai clic su Crea.
  5. Fai quindi clic su Mostra per visualizzare la chiave API. In alternativa, fai clic su Copia per copiarla e salvarla per dopo oppure fai clic su Scarica.

Per motivi di sicurezza, la chiave API è disponibile per essere copiata o scaricata solo durante la fase di creazione. Se la chiave API viene persa, dovrai crearne una nuova.

Creazione di una chiave API utilizzando la CLI

Per creare una chiave API utilizzando la CLI, utilizza il seguente comando:

  1. Immettere ibmcloud iam api-key-create NAME [-d DESCRIPTION] [-f, --file FILE] [--action-if-leaked VALUE] e specificare un nome, una descrizione e un file per il salvataggio della chiave. Vedi il seguente esempio:
ibmcloud iam api-key-create MyKey -d "this is my API key" --file key_file --action-if-leaked "DELETE"

Per --action-if-leaked, i valori possibili sono "NONE", "DISABLE" o "DELETE". L'azione predefinita è "DISABLE".

  • DISABILITA: la disabilitazione della chiave blocca immediatamente la sua capacità di autenticare e accedere ai servizi. Se necessario, è possibile riabilitare la chiave in un secondo momento.
  • CANCELLA: la chiave API viene eliminata definitivamente dall'account e non può più essere utilizzata per l'autenticazione. Questa azione non può essere annullata.
  • NESSUNO: La chiave rimane attiva e può essere utilizzata per accedere alle risorse.

Creare una chiave API utilizzando l'API

Per creare una chiave API, chiamare l'API IAM Identity Service come mostrato nell'esempio seguente:

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

Per action_when_leaked, i valori possibili sono "none", "disable" o "delete". L'azione predefinita è "disabilita".

  • disabilitare: La disabilitazione della chiave blocca immediatamente la sua capacità di autenticazione e di accesso ai servizi. Se necessario, è possibile riabilitare la chiave in un secondo momento.
  • eliminare: La chiave API viene eliminata definitivamente dall'account e non può più essere utilizzata per l'autenticazione. Questa azione non può essere annullata.
  • nessuna: La chiave rimane attiva e può essere utilizzata per accedere alle risorse.

Per support_sessions, definire se è possibile gestire le sessioni di accesso CLI per la chiave API:

  • vero: Crea sessioni di accesso per questa chiave API, che si possono gestire rivedendo o revocando le sessioni. Per ulteriori informazioni, vedere Monitoraggio delle sessioni di accesso.
  • falso: Non vengono create o tracciate sessioni. Non è possibile revocare o rivedere alcun accesso e per bloccare l'accesso è necessario eliminare o ruotare la chiave API stessa.

Prima di iniziare

Prima di poter gestire le chiavi API degli utenti utilizzando Terraform, assicurarsi di aver completato i seguenti passaggi:

  • Installare la CLI di Terraform e configurare il plug-in IBM Cloud Provider per Terraform. Per ulteriori informazioni, vedere il tutorial su Come iniziare con Terraform su IBM Cloud®. Il plug-in astrae le API di IBM Cloud che vengono utilizzate per completare questo compito.
  • Creare un file di configurazione di Terraform chiamato main.tf. In questo file si definiscono le risorse utilizzando il linguaggio di configurazione HashiCorp. Per ulteriori informazioni, consultare il sito Documentazione di Terraform.

Creare una chiave API utilizzando Terraform

Per creare gruppi di accesso con Terraform, procedere come segue.

  1. Creare un argomento nel file main.tf. L'esempio seguente crea un gruppo di accesso utilizzando la risorsa ibm_iam_api_key, dove name è un nome univoco per identificare la chiave API.

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

    La proprietà description è disponibile solo se viene fornita una descrizione durante la creazione della chiave API. Per ulteriori informazioni, vedere i dettagli di riferimento degli argomenti nella pagina di Terraform Identity and Access Management(IAM).

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

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

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

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

      terraform apply
      

Aggiornamento di una chiave API nella console

Se desideri modificare il nome o la descrizione di una chiave API, completa le seguenti istruzioni nella IU o nella CLI.

Per modificare una chiave API, completa la seguente procedura:

  1. Nella console IBM Cloud, andare su Gestione > Accesso (IAM) > Chiavi API.
  2. Identificare la riga della chiave API che si desidera aggiornare e fare clic sull'icona Azioni Icona Azioni Azioni > Modifica.
  3. Aggiorna le informazioni per la tua chiave API.
  4. Fai clic su Apply.

Per modificare una chiave API non propria, ma che si ha accesso a gestire, andare alla pagina delle chiavi API. Quindi, selezionare l'opzione Tutte le chiavi API dell'utente IBM Cloud dal menu Visualizza per trovare la chiave API.

Aggiornamento di una chiave API tramite la CLI

Per modificare una chiave API utilizzando la CLI, utilizza il seguente comando:

  1. Immettere ibmcloud iam api-key-update NAME [-n NAME] [-d DESCRIPTION], specificando il vecchio nome, il nuovo nome e la nuova descrizione della chiave. Per ulteriori informazioni, vedere l'esempio seguente:
ibmcloud iam api-key-update MyCurrentName -n MyNewName -d "the new description of my key"

Aggiornamento di una chiave API tramite l'API

Per modificare una chiave API utilizzando l'API, chiamare l'API IAM Identity Service come mostrato nell'esempio seguente:

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

Aggiornare una chiave API utilizzando Terraform

Per aggiornare una chiave API utilizzando terraform, procedere come segue:

  1. Nel file di configurazione di Terraform main.tf, trovare il codice di Terraform utilizzato per creare il sito iam_api_key.

  2. L'esempio seguente aggiorna una chiave API utilizzando la risorsa ibm_iam_api_key, dove name è un nome univoco per identificare la chiave API.

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

    La proprietà description è disponibile solo se viene fornita una descrizione durante la creazione della chiave API. Per ulteriori informazioni, vedere i dettagli di riferimento degli argomenti nella pagina di Terraform Identity and Access Management(IAM).

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

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

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

      terraform apply
      

Per ulteriori informazioni, consultare il sito Documentazione di Terraform.

Blocco e sblocco di una chiave API nella console

Per le chiavi API della piattaforma che rappresentano la tua identità utente, puoi evitarne l'eliminazione eseguendone il blocco. Una chiave API bloccata ha l'icona Bloccata Icona Bloccata.

  1. Nella console IBM Cloud, andare su Gestione > Accesso (IAM) > Chiavi API.
  2. Identificare la riga della chiave API che si desidera bloccare e fare clic sull'icona Azioni Icona Azioni Azioni > Blocca.

Puoi sbloccare la tua chiave API in qualsiasi momento per aggiornarla o rimuoverla dal tuo account. Selezionare la chiave API dalla tabella che si desidera sbloccare e fare clic sull'icona Azioni Icona Azioni Azioni > Sblocca.

Blocco e sblocco di una chiave API utilizzando la CLI

Per le chiavi API della piattaforma che rappresentano la tua identità utente, puoi evitarne l'eliminazione eseguendone il blocco. Per bloccare una chiave API, utilizza il seguente comando:

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

Prerequisiti: Endpoint, Accesso

Opzioni comando:

NAME (required)
Il nome della chiave API da bloccare, esclusiva con UUID.
UUID (obbligatorio)
UUID della chiave API da bloccare, in esclusiva con NAME.
-f, --force
Forza il blocco senza conferma.

Esempio:

Blocca la chiave API test-api-key

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

Per sbloccare una chiave API, immetti il seguente comando:

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

Prerequisiti: Endpoint, Accesso

Opzioni comando:

NAME (required)
Nome della chiave API da sbloccare, esclusivo con UUID.
UUID (obbligatorio)
UUID della chiave API da sbloccare, esclusivo con NAME.
-f, --force
Forza lo sblocco senza conferma.

Esempio:

Sblocca la chiave API test-api-key

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

Blocco e sblocco di una chiave API tramite l'API

Per le chiavi API della piattaforma che rappresentano la tua identità utente, puoi evitarne l'eliminazione eseguendone il blocco.

Bloccare una chiave API utilizzando l'API

Per bloccare una chiave API utilizzando l'API, chiamare l'API IAM Identity Service come mostrato nell'esempio seguente:

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

Sbloccare una chiave API

Per sbloccare una chiave API utilizzando l'API, chiamare l'API IAM Identity Service come mostrato nell'esempio seguente:

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

Bloccare e sbloccare una chiave API usando Terraform

Per le chiavi API della piattaforma che rappresentano la tua identità utente, puoi evitarne l'eliminazione eseguendone il blocco.

Bloccare una chiave API utilizzando Terraform

Usare i seguenti passaggi per bloccare una chiave API usando Terraform:

  1. Nel file di configurazione di Terraform main.tf, trovare il codice di Terraform utilizzato per creare il sito iam_api_key.

  2. L'esempio seguente aggiorna una chiave API utilizzando la risorsa ibm_iam_api_key, dove entity_lock indica se la chiave API è bloccata per ulteriori operazioni di scrittura. Il valore predefinito è false.

    resource "ibm_iam_api_key" "iam_api_key" {
     entity_lock        = "true"
    }
    
  3. Predisporre le risorse dal file main.tf. Per ulteriori informazioni, vedere Provisioning dell'infrastruttura con Terraform.

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

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

      terraform apply
      

Per ulteriori informazioni, consultare il sito Documentazione di Terraform.

Eliminazione di una chiave API

Se stai utilizzando una strategia di rotazione della chiave, potresti voler eliminare una chiave vecchia e sostituirla con una nuova.

Per eliminare una chiave API, completa la seguente procedura:

  1. Nella console IBM Cloud, andare su Gestione > Accesso (IAM) > Chiavi API.
  2. Identificare la riga della chiave API che si desidera eliminare e fare clic sull'icona Azioni Icona Azioni Azioni > Elimina.
  3. Infine, conferma l'eliminazione facendo clic su Elimina.

Per eliminare una chiave API non propria, ma che si ha accesso a gestire, andare alla pagina delle chiavi API. Quindi, selezionare l'opzione Tutte le chiavi API dell'utente IBM Cloud dal menu Visualizza per trovare la chiave API.

Eliminazione di una chiave API tramite la CLI

Per eliminare una chiave API utilizzando la CLI:

Immettere ibmcloud iam api-key-delete NAME, specificando il nome della chiave da eliminare.

Eliminazione di una chiave API tramite l'API

Per eliminare una chiave API utilizzando l'API, chiamare l'API IAM Identity Service come mostrato nell'esempio seguente:

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

Esaminare le chiavi API degli utenti trapelate utilizzando la console

Se viene rilevata una chiave API utente trapelata, è possibile utilizzare la console per esaminarla. Completa i seguenti passi:

  1. Accedi alla console IBM Cloud.
  2. Selezionare l'account che contiene la chiave API trapelata.
  3. Andare su Gestione > Accesso > Chiavi API per esaminare la chiave API trapelata.

Esaminare le chiavi API degli utenti trapelate utilizzando la CLI

Se viene rilevata una chiave API utente trapelata, è possibile utilizzare la CLI per esaminarla. Completa i seguenti passi:

  1. Accedi alla CLI IBM Cloud.

  2. Selezionare l'account che contiene la chiave API trapelata.

  3. Esegui il seguente comando:

    ibmcloud iam api-key <API_key_ID>