Gestione delle chiavi API di un ID servizio

Gli ID servizio vengono creati per abilitare l'accesso ai tuoi servizi IBM Cloud® dalle applicazioni ospitate sia all'interno che all'esterno di IBM Cloud. Le chiavi API vengono utilizzate da un'applicazione per autenticarsi come un particolare ID di servizio e ottenere l'accesso associato a quello specifico ID di servizio.

Dopo aver creato un ID servizio, è possibile iniziare a creare chiavi API e assegnare criteri di servizio. Ciascuna politica specifica il livello di accesso consentito quando la chiave API viene utilizzata per eseguire l'autenticazione presso i tuoi servizi. Per ulteriori informazioni sulla creazione di un ID servizio e sull'assegnazione di politiche, vedi Creazione e gestione degli ID servizio. Per ulteriori informazioni sui comandi CLI utilizzati per gestire le chiavi API degli ID servizio, vedere Gestione dell'accesso IAM, chiavi API, ID servizio e gruppi di accesso.

Ogni chiave API associata a un ID servizio eredita il criterio assegnato all'ID servizio. Ad esempio, se si desidera che un'applicazione visualizzi le risorse all'interno di un servizio, è necessario utilizzare una chiave API associata a un ID di servizio con un criterio assegnato al ruolo Viewer. Se si desidera che un'altra applicazione possa avere accesso completo a un servizio, è necessario utilizzare una chiave API associata a un secondo ID di servizio con un criterio assegnato al ruolo di amministratore.

Per alcuni esempi di utilizzo di un ID di servizio, consultare la sezione Utilizzo di credenziali HMAC nella documentazione di Object Storage o questo video di IBM Cloud Data Engine su Come utilizzare l'API REST di IBM Cloud Data Engine.

Accesso richiesto per la gestione delle chiavi API dell'ID del servizio

Tutti gli utenti possono creare ID di servizio in un account e sono l'amministratore di tali ID e possono creare la chiave API e i criteri di accesso associati. Tuttavia, i proprietari degli account e gli utenti a cui è stato assegnato il ruolo di amministratore sul servizio IAM Identity possono gestire le chiavi API per tutti gli ID di servizio di un account. Gli utenti possono anche avere accesso a un solo ID di servizio, se l'ID è specificato quando l'amministratore assegna l'accesso.

Se si è un utente con l'accesso richiesto, è possibile visualizzare, aggiornare ed eliminare le chiavi API per qualsiasi ID di servizio nell'account. Andare alla pagina delle chiavi API e selezionare l'opzione Tutte le chiavi API dell'ID servizio nel menu Visualizza per trovare una chiave API di cui si vogliono visualizzare i dettagli, aggiornare o eliminare.

Creazione di una chiave API per un ID servizio

Creare una chiave API da associare a un ID di servizio nella console:

  1. Nella console IBM Cloud, andare su Gestione > Accesso (IAM) e selezionare ID servizio.
  2. Se non è stato creato un ID servizio, crearlo.
  3. Fare clic sull'icona Azioni Icona Azioni Azioni > Gestisci ID servizio.
  4. Fai clic su Chiavi API.
  5. Fai clic su Crea.
  6. Aggiungi un nome e una descrizione per identificare facilmente la chiave API.
  7. Fai clic su Crea.
  8. Salva la tua chiave API copiandola o scaricandola in un'ubicazione sicura.

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.

Aggiornamento di una chiave API per un ID servizio tramite la console

È possibile aggiornare una chiave API modificando il nome o la descrizione utilizzati per identificare la chiave nell'interfaccia utente.

  1. Nella console IBM Cloud, andare su Gestione > Accesso (IAM) e selezionare ID servizio.
  2. Fare clic sull'icona Azioni Icona Azioni Azioni > Gestisci ID servizio.
  3. Fai clic su Chiavi API.
  4. Fare clic sull'icona Azioni Icona Azioni Azioni > Modifica nome e descrizione.

Se non si è creato l'ID servizio, ma si è il proprietario dell'account o un amministratore del servizio IAM Identity, è possibile aggiornare le chiavi API per qualsiasi ID servizio nell'account. Andare alla pagina delle chiavi API e selezionare l'opzione Tutte le chiavi API dell'ID del servizio nel menu Visualizza per trovare la chiave API con cui si desidera lavorare.

Creazione di una chiave API per un ID servizio tramite la CLI

Per creare una chiave API per un ID servizio utilizzando la CLI, è possibile utilizzare il comando ibmcloud iam service-api-key-create.

ibmcloud iam service-api-key-create NAME (SERVICE_ID_NAME|SERVICE_ID_UUID) [-d, --description DESCRIPTION] [--file FILE] [-f, --force] [--lock]

Aggiornamento di una chiave API per un ID servizio tramite CLI

Per aggiornare una chiave API per un ID servizio utilizzando la CLI, è possibile utilizzare il comando ibmcloud iam service-api-key-update.

ibmcloud iam service-api-key-update NAME SERVICE_ID [-n, --name NEW_sNAME] [-d, --description DESCRIPTION] [-v, --version VERSION] [-f, --force]

Blocco di una chiave API dell'ID servizio

Per le chiavi API che rappresentano l'identità dell'ID servizio, puoi evitarne l'eliminazione eseguendone il blocco. Una chiave API bloccata è indicata dall'icona Bloccata Icona Bloccata nell'interfaccia utente.

  1. Nella console IBM Cloud, fare clic su Gestione > Accesso (IAM) e selezionare ID servizio.
  2. Identifica la riga dell'ID servizio per cui vuoi selezionare una chiave API e seleziona il nome dell'ID servizio.
  3. Fai clic su Chiavi API.
  4. Passare il mouse sulla riga della chiave API che si desidera bloccare e fare clic sull'icona Azioni Icona Azioni Azioni per aprire un elenco di opzioni.
  5. Fai clic su Blocca chiave API.

Puoi sbloccare la tua chiave API in qualsiasi momento per aggiornare, eliminare o aggiungere una politica di accesso oppure per rimuovere la chiave API.

Blocco e sblocco di una chiave API dell'ID servizio con la CLI.

Per le chiavi API che rappresentano l'identità dell'ID servizio, puoi evitarne l'eliminazione eseguendone il blocco. Una chiave API bloccata è indicata dall'icona Bloccata Icona Bloccata nell'interfaccia utente. Per bloccare una chiave API dell'ID servizio, utilizza il seguente comando:

ibmcloud iam service-api-key-lock (APIKEY_NAME|APIKEY_UUID) (SERVICE_ID_NAME|SERVICE_ID_UUID) [-f, --force]
Prerequisiti
Punto finale, accesso, obiettivo

Opzioni comando:

NOME_CHIAVE_API (obbligatorio)
Nome della chiave API, esclusivo con UUID_CHIAVE_API
UUID_CHIAVE_API (obbligatorio)
UUID della chiave API, esclusivo con NOME_CHIAVE_API
SERVICE_ID_NAME (obbligatorio)
Nome dell'ID servizio, esclusivo con UUID_ID_SERVIZIO
SERVICE_ID_UUID (obbligatorio)
UUID dell'ID servizio, esclusivo con NOME_ID_SERVIZIO
-f, --force
Blocca senza conferma

Esempi:

Blocca la chiave API del servizio sample-key dell'ID servizio sample-service:

ibmcloud iam service-api-key-lock sample-key sample-service

Per sbloccare una chiave API dell'ID servizio, utilizza il seguente comando:

ibmcloud iam service-api-key-unlock (APIKEY_NAME|APIKEY_UUID) (SERVICE_ID_NAME|SERVICE_ID_UUID) [-f, --force]

Eliminazione di una chiave API per un ID servizio

Puoi eliminare una chiave API associata a un ID servizio. Tuttavia, l'eliminazione di una chiave API utilizzata da un'applicazione elimina la possibilità per quest'ultima di autenticarsi con i vostri servizi.

  1. Nella console IBM Cloud, andare su Gestione > Accesso (IAM) e selezionare ID servizio.
  2. Se non è stato creato un ID servizio, crearlo.
  3. Fare clic sull'icona Azioni Icona Azioni Azioni > Gestisci ID servizio.
  4. Fai clic su Chiavi API.
  5. Fare clic sull'icona Azioni Icona Azioni Azioni > Elimina.

Se non si è creato l'ID servizio, ma si è il proprietario dell'account o un amministratore del servizio IAM Identity, è possibile eliminare le chiavi API per qualsiasi ID servizio nell'account. Andare alla pagina delle chiavi API e selezionare l'opzione Tutte le chiavi API dell'ID del servizio nel menu Visualizza per trovare la chiave API con cui si desidera lavorare.

Eliminazione di una chiave API per un ID servizio tramite CLI

Puoi eliminare una chiave API associata a un ID servizio. Tuttavia, l'eliminazione di una chiave API utilizzata da un'applicazione elimina la possibilità per quest'ultima di autenticarsi con i vostri servizi. Per eliminare una chiave API per un ID servizio utilizzando la CLI, è possibile utilizzare il comando ibmcloud iam service-api-key-delete.

ibmcloud iam service-api-key-delete NAME SERVICE_ID [-f, --force]

Creare una chiave API per un ID servizio utilizzando l'API

Per creare una chiave API dell'ID del servizio, 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": "Service-apikey",
  "description": "my service key",
  "iam_id": "IBMid-123WEREW",
  "account_id": "ACCOUNT_ID"
  "store_value": 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

Aggiornamento di una chiave API per un ID servizio utilizzando l'API

Per modificare una chiave API per un ID servizio 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": "Service-apikey",
  "description": "my service 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))

Blocco e sblocco di una chiave API per un ID di servizio utilizzando l'API

Per le chiavi API che rappresentano l'identità dell'ID servizio, puoi evitarne l'eliminazione eseguendone il blocco.

Blocco di una chiave API

Per bloccare una chiave API per un ID servizio 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);
  });
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 per un ID servizio utilizzando l'API, chiamare l'API IAM Identity Service come mostrato nell'esempio seguente:

curl -X DELETE 'https://iam.cloud.ibm.com/v1/serviceids/SERVICE_ID_UNIQUE_ID/lock' -H 'Authorization: Bearer TOKEN' -H 'Content-Type: application/json'
UnlockServiceIdOptions unlockServiceIdOptions = new UnlockServiceIdOptions.Builder()
    .id(svcId)
    .build();

service.unlockServiceId(unlockServiceIdOptions).execute();
const params = {
  id: svcId,
};

iamIdentityService.unlockServiceId(params)
  .then(res => {
    console.log(JSON.stringify(res.result, null, 2));
  })
  .catch(err => {
    console.warn(err);
    done(err);
  });
response = iam_identity_service.unlock_service_id(id=svc_id)

print(response)
unlockServiceIDOptions := iamIdentityService.NewUnlockServiceIDOptions(svcID)

response, err := iamIdentityService.UnlockServiceID(unlockServiceIDOptions)
if err != nil {
  panic(err)
}

Eliminazione di una chiave API per un ID servizio utilizzando l'API

Per eliminare una chiave API da un ID servizio 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)
}

Prima di iniziare

Prima di poter gestire le chiavi API dell'ID del servizio utilizzando Terraform, assicurarsi di aver completato quanto segue:

  • 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 per un ID di servizio utilizzando Terraform

Usare i seguenti passaggi per creare una chiave API per un ID servizio usando Terraform.

  1. Creare un argomento nel file main.tf. L'esempio seguente crea una chiave API per un ID servizio utilizzando la risorsa ibm_iam_service_api_key, dove name è un nome univoco per identificare la chiave API del servizio. Per completare l'operazione è necessario disporre di un ID IAM del servizio.

    resource "ibm_iam_service_id" "serviceID" {
     name = "servicetest"
    }
    
    resource "ibm_iam_service_api_key" "testacc_apiKey" {
     name = "testapikey"
     iam_service_id = ibm_iam_service_id.serviceID.iam_id
    }
    

    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 per un ID servizio utilizzando Terraform

Usare i seguenti passaggi per aggiornare una chiave API per un ID servizio usando Terraform:

  1. Creare un argomento nel file main.tf. È possibile aggiornare la chiave API per un ID servizio aggiungendo nuovi valori alle opzioni name e iam_service_id nell'esempio seguente.

    resource "ibm_iam_service_id" "serviceID" {
     name = "servicetest"
    }
    
    resource "ibm_iam_service_api_key" "testacc_apiKey" {
     name = "testapikey"
     iam_service_id = ibm_iam_service_id.serviceID.iam_id
    }
    

    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
      

Eliminazione di una chiave API per un ID servizio utilizzando Terraform

È necessario aver creato la chiave API per un ID servizio utilizzando il file Terraform. Per eliminare una chiave API per un ID servizio utilizzando Terraform, procedere come segue.

  1. L'esempio seguente mostra come eliminare la chiave API per un ID servizio.

    resource "ibm_iam_service_id" "serviceID" {
     name = "servicetest"
    }
    
    resource "ibm_iam_service_api_key" "testacc_apiKey" {
     name = "testapikey"
     iam_service_id = ibm_iam_service_id.serviceID.iam_id
    }
    

    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
      

Esame delle chiavi API dell'ID del servizio trapelato mediante la console

Se viene rilevata una chiave API ID servizio 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 dell'ID servizio trapelato.
  3. Andare a Gestione > Accesso > ID servizio.
  4. Selezionare il nome dell'ID del servizio.
  5. Seleziona API keys.
  6. Selezionare il nome della chiave API trapelata per esaminarla.

Esame delle chiavi API dell'ID del servizio trapelato tramite la CLI

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

  1. Accedi alla CLI IBM Cloud.

  2. Esegui il seguente comando:

    ibmcloud iam service-api-key <API_key_ID> <service_id_name>