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:
- Nella console IBM Cloud, andare su Gestione > Accesso (IAM) e selezionare ID servizio.
- Se non è stato creato un ID servizio, crearlo.
- Fare clic sull'icona Azioni
Azioni > Gestisci ID servizio.
- Fai clic su Chiavi API.
- Fai clic su Crea.
- Aggiungi un nome e una descrizione per identificare facilmente la chiave API.
- Fai clic su Crea.
- 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.
- Nella console IBM Cloud, andare su Gestione > Accesso (IAM) e selezionare ID servizio.
- Fare clic sull'icona Azioni
Azioni > Gestisci ID servizio.
- Fai clic su Chiavi API.
- Fare clic sull'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 nell'interfaccia utente.
- Nella console IBM Cloud, fare clic su Gestione > Accesso (IAM) e selezionare ID servizio.
- Identifica la riga dell'ID servizio per cui vuoi selezionare una chiave API e seleziona il nome dell'ID servizio.
- Fai clic su Chiavi API.
- Passare il mouse sulla riga della chiave API che si desidera bloccare e fare clic sull'icona Azioni
Azioni per aprire un elenco di opzioni.
- 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 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.
- Nella console IBM Cloud, andare su Gestione > Accesso (IAM) e selezionare ID servizio.
- Se non è stato creato un ID servizio, crearlo.
- Fare clic sull'icona Azioni
Azioni > Gestisci ID servizio.
- Fai clic su Chiavi API.
- Fare clic sull'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.
-
Creare un argomento nel file
main.tf. L'esempio seguente crea una chiave API per un ID servizio utilizzando la risorsaibm_iam_service_api_key, dovenameè 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).
-
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 -
Predisporre le risorse dal file
main.tf. Per ulteriori informazioni, vedere Provisioning dell'infrastruttura con Terraform.-
Eseguire
terraform planper generare un piano di esecuzione di Terraform per visualizzare in anteprima le azioni proposte.terraform plan -
Eseguire
terraform applyper 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:
-
Creare un argomento nel file
main.tf. È possibile aggiornare la chiave API per un ID servizio aggiungendo nuovi valori alle opzioninameeiam_service_idnell'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).
-
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 -
Predisporre le risorse dal file
main.tf. Per ulteriori informazioni, vedere Provisioning dell'infrastruttura con Terraform.-
Eseguire
terraform planper generare un piano di esecuzione di Terraform per visualizzare in anteprima le azioni proposte.terraform plan -
Eseguire
terraform applyper 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.
-
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).
-
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 -
Predisporre le risorse dal file
main.tf. Per ulteriori informazioni, vedere Provisioning dell'infrastruttura con Terraform.-
Eseguire
terraform planper generare un piano di esecuzione di Terraform per visualizzare in anteprima le azioni proposte.terraform plan -
Eseguire
terraform applyper 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:
- Accedi alla console IBM Cloud.
- Selezionare l'account che contiene la chiave API dell'ID servizio trapelato.
- Andare a Gestione > Accesso > ID servizio.
- Selezionare il nome dell'ID del servizio.
- Seleziona API keys.
- 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:
-
Accedi alla CLI IBM Cloud.
-
Esegui il seguente comando:
ibmcloud iam service-api-key <API_key_ID> <service_id_name>