IBM Cloud Docs
Creazione delle credenziali del sevizio

Creazione delle credenziali del sevizio

Puoi usare IBM Cloud® Secrets Manager per creare le credenziali del servizio che potresti utilizzare per accedere a una risorsa IBM Cloud che richiede l'autenticazione.

Le credenziali del servizio possono contenere le credenziali emesse da Identity and Access Management. Le credenziali possono anche essere credenziali native specifiche del servizio come le chiavi HMAC, un ID utente e una password del database, credenziali SASL o certificati TLS. Per ulteriori informazioni sui tipi di segreti che puoi gestire utilizzando Secrets Manager, vedi Cos' è un segreto?.

Servizi IBM Cloud supportati

Puoi creare le credenziali del servizio tramite Secrets Manager per i seguenti servizi IBM Cloud:

Prima di iniziare

Prima di iniziare, assicurati di disporre del livello di accesso richiesto. Per creare o aggiungere segreti, hai bisogno del ruolo del servizio Writer o superiore.

Un amministratore dell'account, o qualsiasi entità con il livello di accesso richiesto, può modificare esternamente le credenziali del servizio create e gestite da Secrets Manager. Se tale credenziale viene eliminata all'esterno di Secrets Manager, il servizio potrebbe comportarsi in modo imprevisto. Ad esempio, potrebbe non essere possibile creare o ruotare le credenziali.

Si noti che nel caso di credenziali del servizio create per i database, se oltre alla credenziale si stanno modificando anche le autorizzazioni del database per la credenziale creata, queste non verranno sincronizzate una volta che la credenziale del servizio è stata ruotata. Quando si esegue la rotazione di una credenziale del servizio Databases, questa è considerata una rotazione dell'identità.

Quando si modifica un TTL di un segreto della credenziale del servizio, verrà applicato solo alla successiva rotazione della versione del segreto.

Il segreto della credenziale di servizio creato da Secrets Manager sarà anche il nome della chiave della risorsa. Ad esempio, una credenziale di servizio segreta per Cloud Object Storage chiamata my-secret-name avrà una chiave di risorsa corrispondente in Cloud Object Storage chiamata my-secret-name. Se in seguito si rinominerà il segreto in Secrets Manager, questa modifica non si rifletterà nella chiave della risorsa, ma la funzionalità non verrà interrotta.

Assegnazione del ruolo di accesso al servizio IAM per credenziali del servizio

Per creare una credenziale del servizio, è necessario selezionare un ruolo di accesso del servizio IAM. I ruoli disponibili da cui effettuare la selezione possono differire tra i servizi supportati. Consultare l'elenco dei servizi supportati per la relativa documentazione. Il ruolo selezionato viene quindi collegato a un ID servizioIAM Service che può essere un ID servizio esistente o uno generato automaticamente.

L'ID servizio continua ad essere utilizzato una volta eseguita la rotazione del segreto. Se si elimina un segreto, non verrà eliminato un ID servizio preesistente, tuttavia verrà eliminato un ID servizio generato automaticamente.

Se si seleziona l'utilizzo di un ID servizio preesistente, è anche possibile preconfigurare le relative politiche di accesso al servizio. In tal caso, selezionare Nessuno come ruolo quando si crea il segreto. Ulteriori informazioni sulle politiche IAM.

Procedure ottimali per le credenziali del servizio

Si consiglia di applicare il principio di accesso con privilegi minimi per i casi di utilizzo di produzione:

  1. Quando si imposta l'autorizzazione service - to - service, deve essere definita tra le istanze del servizio di destinazione e di origine concreto, non tra tutti servizi.
  2. Quando si imposta manualmente l'accesso per gli ID servizio da utilizzare con una credenziale del servizio, questo deve essere applicato per un'istanza del servizio concreta.

Creazione delle credenziali del servizio nell'interfaccia utente

Per creare le credenziali del servizio utilizzando l'IU Secrets Manager, completa la seguente procedura.

  1. Nella console, fare clic sull'icona Menu icona Menu > Elenco risorse.

  2. Dall'elenco di servizi, seleziona la tua istanza di Secrets Manager.

  3. Nella tabella Segreti, fare clic su Aggiungi.

  4. Dall'elenco dei tipi di segreto, fai clic sul tile Service credentials.

  5. Fai clic su Next.

  6. Aggiungere un nome e una descrizione per identificare facilmente il segreto.

  7. Seleziona il gruppo di segretiL'ambiente e i vincoli che contengono segreti in un'istanza devono essere conformi. Un utente può essere associato a un gruppo segreto per consentire l'accesso e la collaborazione. che vuoi assegnare al segreto.

    Non hai un gruppo segreto? Nel campo Gruppo segreto, è possibile fare clic su Crea per fornire un nome e una descrizione per un nuovo gruppo. Il tuo segreto viene aggiunto automaticamente al nuovo gruppo. Per ulteriori informazioni sui gruppi di segreti, consulta Organizzazione dei tuoi segreti.

  8. Facoltativo: aggiungi le etichette per aiutarti a cercare segreti simili nella tua istanza.

  9. Selezionare il servizio e l'istanza del servizio desiderati per cui creare una credenziale

    Se questa è la prima volta che viene selezionata l'istanza del servizio o è stato fornito un CRN del servizio, autorizzare prima Secrets Manager ad accedervi

    1. Fare clic su Autorizza e selezionare Gestore chiavi
  10. Fai clic su Next.

  11. Fornire l'input richiesto, in base al servizio selezionato.

  12. Facoltativo: aggiungi i metadati al tuo segreto o a una versione specifica del tuo segreto.

  13. Caricare un file o immettere i metadati e i metadati della versione in formato JSON.

  14. Facoltativo: impostare una durata del lease o un TTL (time - to - live) per il segreto.

Impostando una durata del lease per le credenziali del servizio, si determina per quanto tempo le credenziali associate rimangono valide. Una volta terminato il periodo di locazione, la credenziale di servizio viene revocata automaticamente.

  1. Facoltativo: abilita la rotazione automatica del tuo segreto.
  2. Fai clic su Next.
  3. Esamina i dettagli del tuo segreto.
  4. Fai clic su Aggiungi.

Creazione delle credenziali del servizio dalla CLI

Per creare un segreto delle credenziali del servizio utilizzando il plug-in CLI Secrets Manager, esegui il comando ibmcloud secrets-manager secret-create. È possibile specificare il tipo di segreto utilizzando l'opzione --secret-type service_credentials. Ad esempio, il seguente comando crea una credenziale del servizio per una istanza Cloud Object Storage, con supporto HMAC. Oltre a specificare il ruolo IAM da fornire per questa credenziale, ad esempio Writer.

ibmcloud secrets-manager secret-create --secret-type="service_credentials" --secret-name="example-service-credentials-secret" --secret-source-service='{"instance": {"crn": "CRN of the instance to create a credential for"},"parameters": {"HMAC": true},"role": {"crn": "crn:v1:bluemix:public:iam::::serviceRole:Writer"}}'

Il comando emette il valore di ID del segreto, insieme ad altri metadati. Per ulteriori informazioni relative alle opzioni del comando, consultare ibmcloud secrets-manager secret-create.

Creazione delle credenziali del servizio con l'API

Puoi creare le credenziali del servizio in modo programmatico richiamando l'API Secrets Manager.

Puoi archiviare i metadati che sono pertinenti alle esigenze della tua organizzazione con i parametri di richiesta custom_metadata e version_custom_metadata. I valori di version_custom_metadata vengono restituiti solo per le versioni di un segreto. I metadati personalizzati del tuo segreto vengono memorizzati come tutti gli altri metadati, per un massimo di 50 versioni, e non devi includere dati riservati.

Nell'esempio seguente, viene creata una credenziale di servizio per Cloud Object Storage, con parametri personalizzati con l'ID IAM di un Service ID esistente e l'abilitazione di HMAC. Oltre a specificare il ruolo IAM da fornire per questa credenziale, ad esempio Writer.

curl -X POST  
    -H "Authorization: Bearer {iam_token}" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -d '{
      {
        "name": "example-service-credentials-secret",
        "description": "Description of my Service Credentials secret",
        "secret_type": "service_credentials",
        "secret_group_id": "bfc0a4a9-3d58-4fda-945b-76756af516aa",
        "labels": [
          "dev",
          "us-south"
        ],
        "source_service": {
          "instance": {
            "crn": "CRN of the instance to create a credential for"
          },
          "parameters": {
            "serviceid_crn": "Existing Service ID's IAM ID",
            "HMAC": true
          },
          "role": {
            "crn": "crn:v1:bluemix:public:iam::::serviceRole:Writer"
          }
        }
      }' \ "https://{instance_ID}.{region}.secrets-manager.appdomain.cloud/api/v2/secrets"

Una risposta di successo restituisce il valore ID del segreto, insieme ad altri metadati. Per ulteriori informazioni sui parametri di richiesta obbligatori e facoltativi, consulta la Guida di riferimento API.

Creare le credenziali del servizio con Terraform

È possibile creare le credenziali del servizio in modo programmatico, utilizzando Terraform per Secrets Manager. L'esempio seguente mostra una configurazione che si può usare per creare credenziali di servizio per Cloud Object Storage.

    resource "ibm_sm_service_credentials_secret" "my_service_credentials_secret" {
      instance_id = "local.instance_id"
      region = "local.region"
      name = "example-service-credentials-secret"
      secret_group_id = "ibm_sm_secret_group.sm_secret_group_test.secret_group_id"
      description = "Description of my Service Credentials secret"
      ttl = "24h"
      source_service {
        role = {
          crn = "crn:v1:bluemix:public:iam::::serviceRole:Writer"
        },
        instance = {
          crn = "crn:v1:bluemix:public:cloud-object-storage:global:a/347df6de25020f0fa8b711c6d9881111:f35e85fc-3d4d-476e-8547-51222e3c1111::"
        },
        parameters = {
          HMAC: true
        }
      }
      rotation {
        auto_rotate = true
        interval = 1
        unit = "day"
      }
    }