Abilitare le chiavi di crittografia gestite dal cliente per Secret Manager

Per impostazione predefinita, Secret Manager cripta i contenuti inattivi dei clienti. Secret Manager gestisce la crittografia per conto tuo senza che tu debba fare altro. Questa opzione è denominata Crittografia predefinita di Google.

Se vuoi controllare le tue chiavi di crittografia, puoi utilizzare le chiavi di crittografia gestite dal cliente (CMEK) in Cloud KMS con servizi integrati con CMEK, tra cui Secret Manager. L'utilizzo delle chiavi Cloud KMS ti consente di controllare il livello di protezione, la località, la pianificazione della rotazione, le autorizzazioni di utilizzo e di accesso e i limiti crittografici. Con Cloud KMS puoi inoltre monitorare l'utilizzo delle chiavi, visualizzare gli audit log e controllare i cicli di vita delle chiavi. Invece di Google, sei tu ad avere la proprietà e la gestione delle chiavi di crittografia della chiave (KEK) simmetriche che proteggono i tuoi dati. Puoi controllare e gestire queste chiavi in Cloud KMS.

Dopo aver configurato le risorse con le CMEK, l'esperienza di accesso alle risorse di Secret Manager è simile all'utilizzo della crittografia predefinita di Google. Per saperne di più sulle opzioni di crittografia, vedi Chiavi di crittografia gestite dal cliente (CMEK).

Secret Manager fornisce strumenti per archiviare, gestire e accedere ai dati sensibili nelle tue applicazioni.

CMEK con Autokey di Cloud KMS

Puoi creare le chiavi CMEK manualmente per proteggere le risorse Secret Manager oppure utilizzare Autokey di Cloud KMS. Con Autokey, le chiavi e le chiavi automatizzate vengono generate on demand durante la creazione delle risorse in Secret Manager. Vengono creati gli agenti di servizio che utilizzano le chiavi per le operazioni di crittografia e decrittografia, se non esistono già, e ricevono i ruoli IAM (Identity and Access Management) richiesti. Per saperne di più, consulta la panoramica di Autokey.

Secret Manager è compatibile con Cloud KMS Autokey solo quando crei risorse utilizzando Terraform o l'API REST.

Per scoprire come utilizzare le chiavi CMEK create manualmente per proteggere le risorse Secret Manager, consulta CMEK con replica automatica e CMEK con replica gestita dall'utente in questa pagina.

Per scoprire come utilizzare le chiavi CMEK create da Autokey di Cloud KMS per proteggere le risorse Secret Manager, consulta Utilizzo di Autokey con le risorse Secret Manager.

Come funziona CMEK in Secret Manager

Prima di scrivere una versione del secret nell'archiviazione permanente in una posizione specifica, Secret Manager cripta i dati con una chiave di crittografia dei dati (DEK) univoca. Questa DEK viene poi criptata con una chiave specifica della replica, chiamata chiave di crittografia della chiave (KEK), di proprietà del servizio Secret Manager.

Quando utilizzi CMEK per Secret Manager, la KEK viene chiamata chiave CMEK ed è una chiave simmetrica che gestisci in Cloud KMS. La chiave CMEK deve trovarsi nella stessa posizione della replica della versione del secret che cripta. Google Cloud Puoi anche utilizzare una chiave Cloud EKM nel criterio CMEK per la crittografia e la decriptazione.

Questa guida illustra come configurare Secret Manager per utilizzare CMEK. Per saperne di più su CMEK in generale, incluso quando e perché abilitarla, consulta la documentazione di Cloud Key Management Service.

Rotazione chiave

Quando ruoti una chiave Cloud Key Management Service, la nuova versione della chiave diventa la versione primary. Secret Manager utilizza la seguente logica per rotazione della chiave:

  • Le nuove versioni del secret create dopo la rotazione utilizzano automaticamente la nuova versione della chiave primaria per la crittografia.
  • Le versioni del secret esistenti non vengono ricriptate automaticamente. Secret Manager può comunque accedere alle versioni dei secret criptate con le versioni precedenti della chiave, a condizione che queste rimangano attive. Ad esempio, se aggiungi una nuova versione a un secret protetto da CMEK e poi ruoti la chiave, la versione originale del secret viene criptata con la versione originale della chiave, mentre la nuova versione del secret viene criptata con la nuova versione della chiave. Entrambe le versioni del secret sono accessibili.

Limitazioni

CMEK è disponibile solo nell'API Secret Manager v1 e in Google Cloud CLI.

Prima di iniziare

Puoi scegliere di archiviare tutte le risorse nello stesso progetto o di archiviare i secret e le chiavi in progetti separati. Leggi la sezione Separazione dei compiti di Cloud KMS per comprendere meglio questa decisione.

Completa i seguenti prerequisiti per configurare Secret Manager e Cloud KMS:

  • Secret Manager:

    • Crea o utilizza un progetto esistente per contenere le risorse Secret Manager.
    • Se necessario, completa i passaggi descritti nella sezione Configurazione di Secret Manager della guida rapida di Secret Manager.
  • Cloud KMS:

    • Crea o utilizza un progetto esistente per contenere le risorse Cloud KMS.
    • Se necessario, abilita l'API Cloud KMS.

Imposta le seguenti variabili sugli ID progetto dei tuoi progetti Secret Manager e Cloud KMS.

This is an editable variable. Set it to your Secret Manager project ID and the
value will be used in all commands on this page.
SM_PROJECT_ID

This is an editable variable. Set it to your Cloud KMS project ID and the value
will be used in all commands on this page.
KMS_PROJECT_ID

Autenticati su Google Cloud:

gcloud

Per utilizzare Secret Manager dalla riga di comando, prima installa o esegui l'upgrade alla versione 378.0.0 o successive di Google Cloud CLI. Su Compute Engine o GKE, devi autenticarti con l'ambito cloud-platform.

gcloud auth login

Creazione di un'identità dell'agente di servizio

Devi creare un'identità service agent per ogni progetto che richiede chiavi di crittografia gestite dal cliente.

Per creare un'identità di servizio con Google Cloud CLI, esegui il seguente comando:

gcloud

Per utilizzare Secret Manager dalla riga di comando, prima installa o esegui l'upgrade alla versione 378.0.0 o successive di Google Cloud CLI. Su Compute Engine o GKE, devi autenticarti con l'ambito cloud-platform.

gcloud beta services identity create \
    --service "secretmanager.googleapis.com" \
    --project "SM_PROJECT_ID"

che restituirà un nome di identità del servizio nel seguente formato:

service-PROJECT_NUMBER@gcp-sa-secretmanager.iam.gserviceaccount.com

Salva il nome dell'identità del servizio:

The following variable is editable. Click on it to update the value, and it will
be reflected throughout this documentation page.

SM_SERVICE_IDENTITY

Concederai a questa identità di servizio l'accesso alle chiavi CMEK Cloud KMS utilizzate per criptare e decriptare i tuoi secret.

CMEK con replica automatica

Questa sezione riguarda i secret configurati tramite una policy di replica automatica.

Per i secret che utilizzano la policy di replica automatica, la chiave CMEK deve trovarsi nella multiregione Cloud KMS global. Se utilizzi una chiave Cloud EKM, non puoi configurare il secret in modo che utilizzi la replica automatica perché le chiavi Cloud EKM non sono disponibili nella regione global. Per scoprire di più sull'utilizzo delle chiavi Cloud EKM, consulta Aggiungere una chiave Cloud EKM a una policy CMEK.

Crea una chiave Cloud KMS simmetrica nella regione Cloud KMS global o utilizza una chiave esistente. Questo esempio crea un nuovo portachiavi chiamato secret-manager-cmek, quindi crea una nuova chiave chiamata my-cmek-key.

gcloud

Per utilizzare Secret Manager dalla riga di comando, prima installa o esegui l'upgrade alla versione 378.0.0 o successive di Google Cloud CLI. Su Compute Engine o GKE, devi autenticarti con l'ambito cloud-platform.

gcloud kms keyrings create "secret-manager-cmek" \
    --project "KMS_PROJECT_ID" \
    --location "global"
gcloud kms keys create "my-cmek-key" \
    --project "KMS_PROJECT_ID" \
    --location "global" \
    --keyring "secret-manager-cmek" \
    --purpose "encryption"

Concedi all'identità di servizio per Secret Manager l'accesso per criptare e decriptare utilizzando la chiave CMEK. Questo comando concede il ruolo Autore crittografia/decrittografia Cloud KMS (roles/cloudkms.cryptoKeyEncrypterDecrypter) alla chiave Cloud KMS my-cmek-key all'identità di servizio.

gcloud

Per utilizzare Secret Manager dalla riga di comando, prima installa o esegui l'upgrade alla versione 378.0.0 o successive di Google Cloud CLI. Su Compute Engine o GKE, devi autenticarti con l'ambito cloud-platform.

gcloud kms keys add-iam-policy-binding "my-cmek-key" \
    --project "KMS_PROJECT_ID" \
    --location "global" \
    --keyring "secret-manager-cmek" \
    --member "serviceAccount:SM_SERVICE_IDENTITY" \
    --role "roles/cloudkms.cryptoKeyEncrypterDecrypter"

Crea un secret con la replica automatica. Il nome della risorsa della chiave CMEK viene memorizzato come metadati nel secret.

gcloud

Per utilizzare Secret Manager dalla riga di comando, prima installa o esegui l'upgrade alla versione 378.0.0 o successive di Google Cloud CLI. Su Compute Engine o GKE, devi autenticarti con l'ambito cloud-platform.

gcloud secrets create "SECRET_ID" \
    --replication-policy "automatic" \
    --kms-key-name "projects/KMS_PROJECT_ID/locations/global/keyRings/secret-manager-cmek/cryptoKeys/my-cmek-key" \
    --project "SM_PROJECT_ID"

API

Questi esempi utilizzano curl per dimostrare l'utilizzo dell'API. Puoi generare token di accesso con gcloud auth print-access-token. Su Compute Engine o GKE, devi autenticarti con l'ambito cloud-platform.

Imposta il valore di replication.automatic.customerManagedEncryption.kmsKeyName sul nome della risorsa per la chiave CMEK.

curl "https://secretmanager.googleapis.com/v1/projects/${SM_PROJECT_ID}/secrets?secretId=SECRET_ID" \
    --request "POST" \
    --header "Content-Type: application/json" \
    --header "Authorization: Bearer ACCESS_TOKEN" \
    --data-binary @- <<EOF
{
  "replication":{
    "automatic":{
      "customerManagedEncryption":{
        "kmsKeyName": "projects/KMS_PROJECT_ID/locations/global/keyRings/secret-manager-cmek/cryptoKeys/my-cmek-key"
      }
    }
  }
}
EOF

Ora, ogni volta che viene creata una versione del secret in quel secret, il payload della versione del secret viene criptato automaticamente utilizzando la chiave prima di essere scritto nell'archiviazione permanente, a condizione che l'identità del servizio abbia accesso alla chiave CMEK. Se l'identità del servizio perde l'accesso o se la chiave non è più disponibile, un tentativo di creare una nuova versione del secret o di accedere a una esistente restituisce un errore.

Aggiungi una nuova versione del secret. Tieni presente che non specifichi il nome risorsa della chiave Cloud KMS; viene letto dai metadati del secret.

gcloud

Per utilizzare Secret Manager dalla riga di comando, prima installa o esegui l'upgrade alla versione 378.0.0 o successive di Google Cloud CLI. Su Compute Engine o GKE, devi autenticarti con l'ambito cloud-platform.

echo -n "SECRET_DATA" | gcloud secrets versions add "SECRET_ID" \
    --project "SM_PROJECT_ID" \
    --data-file -

La versione del secret viene creata anche se il chiamante non ha accesso diretto per utilizzare la chiave CMEK. L'identità del servizio per Secret Manager, anziché il chiamante, è responsabile della crittografia e della decrittografia dei secret durante la lettura o la scrittura.

Allo stesso modo, non hai bisogno dell'accesso diretto alla chiave CMEK per accedere al secret. L'identità del servizio accede alla chiave e cripta o decripta il secret per tuo conto.

Accedi alla versione del secret appena creata:

gcloud

Per utilizzare Secret Manager dalla riga di comando, prima installa o esegui l'upgrade alla versione 378.0.0 o successive di Google Cloud CLI. Su Compute Engine o GKE, devi autenticarti con l'ambito cloud-platform.

gcloud secrets versions access "latest" \
    --project "SM_PROJECT_ID" \
    --secret "SECRET_ID"

Aggiorna la configurazione CMEK

Crea nuove chiavi KMS simmetriche nella multiregione Cloud KMS global.

gcloud

Per utilizzare Secret Manager dalla riga di comando, prima installa o esegui l'upgrade alla versione 378.0.0 o successive di Google Cloud CLI. Su Compute Engine o GKE, devi autenticarti con l'ambito cloud-platform.

gcloud kms keys create "my-other-key" \
    --project "KMS_PROJECT_ID" \
    --location "global" \
    --keyring "secret-manager-cmek" \
    --purpose "encryption"

Concedi all'identità di servizio per Secret Manager l'accesso per criptare e decriptare utilizzando la nuova chiave CMEK. Questo comando concede il ruolo Autore crittografia / decrittografia Cloud KMS (roles/cloudkms.cryptoKeyEncrypterDecrypter) alla chiave Cloud KMS my-other-key all'identità di servizio.

gcloud

Per utilizzare Secret Manager dalla riga di comando, prima installa o esegui l'upgrade alla versione 378.0.0 o successive di Google Cloud CLI. Su Compute Engine o GKE, devi autenticarti con l'ambito cloud-platform.

gcloud kms keys add-iam-policy-binding "my-other-key" \
    --project "KMS_PROJECT_ID" \
    --location "global" \
    --keyring "secret-manager-cmek" \
    --member "serviceAccount:SM_SERVICE_IDENTITY" \
    --role "roles/cloudkms.cryptoKeyEncrypterDecrypter"

Modifica la configurazione CMEK di un secret aggiornando la replica del secret con i nuovi nomi delle risorse chiave Cloud KMS.

gcloud

Per utilizzare Secret Manager dalla riga di comando, prima installa o esegui l'upgrade alla versione 378.0.0 o successive di Google Cloud CLI. Su Compute Engine o GKE, devi autenticarti con l'ambito cloud-platform.

gcloud secrets replication update "SECRET_ID" \
    --set-kms-key "projects/KMS_PROJECT_ID/locations/global/keyRings/secret-manager-cmek/cryptoKeys/my-other-key" \
    --project "SM_PROJECT_ID"

API

Questi esempi utilizzano curl per dimostrare l'utilizzo dell'API. Puoi generare token di accesso con gcloud auth print-access-token. Su Compute Engine o GKE, devi autenticarti con l'ambito cloud-platform.

curl "https://secretmanager.googleapis.com/v1/projects/${SM_PROJECT_ID}/secrets/SECRET_ID?updateMask=replication" \
    --request "PATCH" \
    --header "Authorization: Bearer ACCESS_TOKEN" \
    --header "Content-Type: application/json" \
    --data-binary @- <<EOF
{
  "replication": {
    "automatic":{
      "customerManagedEncryption":{
        "kmsKeyName": "projects/KMS_PROJECT_ID/locations/global/keyRings/secret-manager-cmek/cryptoKeys/my-other-key"
      }
    }
  }
}
EOF

CMEK con replica gestita dall'utente

Questa sezione riguarda i secret configurati con un criterio di replica gestito dall'utente. Con un criterio di replica gestito dall'utente, controlli la posizione Google Cloud in cui viene archiviato il secret. I secret sono sempre accessibili da ogni Google Cloud posizione.

I secret con un criterio di replica gestito dall'utente devono utilizzare chiavi Cloud KMS che corrispondono esattamente alle località in cui sono archiviate le versioni del secret. Gli esempi in questa guida archiviano un secret in due località separate: us-east1 e us- central1. Le richieste di accesso al secret vengono indirizzate a una di queste località.

In ciascuna delle due regioni, crea un keyring e una chiave Cloud KMS con lo scopo di crittografia oppure utilizza una chiave esistente. Questo esempio crea un nuovo portachiavi denominato "secret-manager-cmek", quindi crea una chiave denominata "my-cmek-key" in ogni regione.

gcloud

Per utilizzare Secret Manager dalla riga di comando, prima installa o esegui l'upgrade alla versione 378.0.0 o successive di Google Cloud CLI. Su Compute Engine o GKE, devi autenticarti con l'ambito cloud-platform.

gcloud kms keyrings create "secret-manager-cmek" \
    --project "KMS_PROJECT_ID" \
    --location "us-east1"
gcloud kms keys create "my-cmek-key" \
    --project "KMS_PROJECT_ID" \
    --location "us-east1" \
    --keyring "secret-manager-cmek" \
    --purpose "encryption"
gcloud kms keyrings create "secret-manager-cmek" \
    --project "KMS_PROJECT_ID" \
    --location "us-central1"
gcloud kms keys create "my-cmek-key" \
    --project "KMS_PROJECT_ID" \
    --location "us-central1" \
    --keyring "secret-manager-cmek" \
    --purpose "encryption"

Concedi all'identità di servizio per Secret Manager l'autorizzazione per criptare e decriptare utilizzando la chiave CMEK concedendo il ruolo Autore crittografia/decrittografia Cloud KMS (roles/cloudkms.cryptoKeyEncrypterDecrypter) per ciascuna delle chiavi CMEK singolarmente o per tutte le chiavi del progetto.

gcloud

Per utilizzare Secret Manager dalla riga di comando, prima installa o esegui l'upgrade alla versione 378.0.0 o successive di Google Cloud CLI. Su Compute Engine o GKE, devi autenticarti con l'ambito cloud-platform.

gcloud kms keys add-iam-policy-binding "my-cmek-key" \
    --project "KMS_PROJECT_ID" \
    --location "us-east1" \
    --keyring "secret-manager-cmek" \
    --member "serviceAccount:SM_SERVICE_IDENTITY" \
    --role "roles/cloudkms.cryptoKeyEncrypterDecrypter"
gcloud kms keys add-iam-policy-binding "my-cmek-key" \
    --project "KMS_PROJECT_ID" \
    --location "us-central1" \
    --keyring "secret-manager-cmek" \
    --member "serviceAccount:SM_SERVICE_IDENTITY" \
    --role "roles/cloudkms.cryptoKeyEncrypterDecrypter"

Crea un secret abilitato a CMEK con la replica gestita dall'utente. Il nome della risorsa della chiave CMEK viene archiviato come metadati nel secret.

gcloud

Per utilizzare Secret Manager dalla riga di comando, prima installa o esegui l'upgrade alla versione 378.0.0 o successive di Google Cloud CLI. Su Compute Engine o GKE, devi autenticarti con l'ambito cloud-platform.

cat <<EOF > ./replication-policy.json
{
  "userManaged":{
    "replicas":[
      {
        "location":"us-east1",
        "customerManagedEncryption":{
          "kmsKeyName":"projects/KMS_PROJECT_ID/locations/us-east1/keyRings/secret-manager-cmek/cryptoKeys/my-cmek-key"
        }
      },
      {
        "location":"us-central1",
        "customerManagedEncryption":{
          "kmsKeyName":"projects/KMS_PROJECT_ID/locations/us-central1/keyRings/secret-manager-cmek/cryptoKeys/my-cmek-key"
        }
      }
    ]
  }
}
EOF
gcloud secrets create "my-ummr-secret" \
    --replication-policy-file ./replication-policy.json \
    --project "SM_PROJECT_ID"

API

Questi esempi utilizzano curl per dimostrare l'utilizzo dell'API. Puoi generare token di accesso con gcloud auth print-access-token. Su Compute Engine o GKE, devi autenticarti con l'ambito cloud-platform.

Imposta il valore di replication.userManaged.replicas.customerManagedEncryption.kmsKeyName sui nomi delle risorse per le chiavi CMEK.

curl "https://secretmanager.googleapis.com/v1/projects/SM_PROJECT_ID/secrets?secretId=my-ummr-secret" \
--request "POST" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer ACCESS_TOKEN" \
--data-binary @- <<EOF
{
  "replication":{
    "userManaged":{
      "replicas":[
        {
          "location":"us-east1",
          "customerManagedEncryption":{
            "kmsKeyName":"projects/KMS_PROJECT_ID/locations/us-east1/keyRings/secret-manager-cmek/cryptoKeys/my-cmek-key"
          }
        },
        {
          "location":"us-central1",
          "customerManagedEncryption":{
            "kmsKeyName":"projects/KMS_PROJECT_ID/locations/us-central1/keyRings/secret-manager-cmek/cryptoKeys/my-cmek-key"
          }
        }
      ]
    }
  }
}
EOF

Ora, ogni volta che viene creata una versione del secret in quel secret, il payload della versione del secret viene criptato automaticamente utilizzando la chiave prima di essere scritto nell'archiviazione permanente, a condizione che l'identità del servizio abbia accesso alla chiave CMEK. Se l'identità del servizio perde l'accesso o se la chiave non è più disponibile, un tentativo di creare una nuova versione del secret o di accedere a una esistente restituisce un errore.

Aggiungi una nuova versione del secret. Tieni presente che non specifichi il nome risorsa della chiave Cloud KMS; viene letto dai metadati del secret.

gcloud

Per utilizzare Secret Manager dalla riga di comando, prima installa o esegui l'upgrade alla versione 378.0.0 o successive di Google Cloud CLI. Su Compute Engine o GKE, devi autenticarti con l'ambito cloud-platform.

echo -n "SECRET_DATA" | gcloud secrets versions add "my-ummr-secret" \
    --project "SM_PROJECT_ID" \
    --data-file -

La versione del secret viene creata anche se il chiamante non ha accesso diretto per utilizzare la chiave CMEK. L'identità del servizio per Secret Manager, anziché il chiamante, è responsabile della crittografia e della decrittografia dei secret durante la lettura o la scrittura.

Allo stesso modo, non hai bisogno dell'accesso diretto alla chiave CMEK per accedere al secret. L'identità del servizio accede alla chiave e cripta o decripta il secret per tuo conto.

Accedi alla versione del secret appena creata.

gcloud

Per utilizzare Secret Manager dalla riga di comando, prima installa o esegui l'upgrade alla versione 378.0.0 o successive di Google Cloud CLI. Su Compute Engine o GKE, devi autenticarti con l'ambito cloud-platform.

gcloud secrets versions access "latest" \
    --project "SM_PROJECT_ID" \
    --secret "my-ummr-secret"

Aggiorna la configurazione CMEK

Crea due nuove chiavi KMS simmetriche nelle stesse regioni del secret.

gcloud

Per utilizzare Secret Manager dalla riga di comando, prima installa o esegui l'upgrade alla versione 378.0.0 o successive di Google Cloud CLI. Su Compute Engine o GKE, devi autenticarti con l'ambito cloud-platform.

gcloud kms keys create "my-other-key" \
    --project "KMS_PROJECT_ID" \
    --location "us-east1" \
    --keyring "secret-manager-cmek" \
    --purpose "encryption"
gcloud kms keys create "my-other-key" \
    --project "KMS_PROJECT_ID" \
    --location "us-central1" \
    --keyring "secret-manager-cmek" \
    --purpose "encryption"

Concedi all'identità di servizio per Secret Manager l'accesso per criptare e decriptare utilizzando le nuove chiavi CMEK. Questo comando concede il ruolo Autore crittografia / decrittografia Cloud KMS (roles/cloudkms.cryptoKeyEncrypterDecrypter) per le chiavi Cloud KMS my-other-key all'identità di servizio.

gcloud

Per utilizzare Secret Manager dalla riga di comando, prima installa o esegui l'upgrade alla versione 378.0.0 o successive di Google Cloud CLI. Su Compute Engine o GKE, devi autenticarti con l'ambito cloud-platform.

gcloud kms keys add-iam-policy-binding "my-other-key" \
    --project "KMS_PROJECT_ID" \
    --location "us-east1" \
    --keyring "secret-manager-cmek" \
    --member "serviceAccount:SM_SERVICE_IDENTITY" \
    --role "roles/cloudkms.cryptoKeyEncrypterDecrypter"
gcloud kms keys add-iam-policy-binding "my-other-key" \
    --project "KMS_PROJECT_ID" \
    --location "us-central1" \
    --keyring "secret-manager-cmek" \
    --member "serviceAccount:SM_SERVICE_IDENTITY" \
    --role "roles/cloudkms.cryptoKeyEncrypterDecrypter"

Modifica la configurazione CMEK di un secret aggiornando la replica del secret con i nuovi nomi delle risorse chiave Cloud KMS.

gcloud

Per utilizzare Secret Manager dalla riga di comando, prima installa o esegui l'upgrade alla versione 378.0.0 o successive di Google Cloud CLI. Su Compute Engine o GKE, devi autenticarti con l'ambito cloud-platform.

gcloud secrets replication update "my-ummr-secret" \
    --set-kms-key "projects/KMS_PROJECT_ID/locations/us-east1/keyRings/secret-manager-cmek/cryptoKeys/my-other-key" \
    --location us-east1 \
    --project "SM_PROJECT_ID"
gcloud secrets replication update "my-ummr-secret" \
    --set-kms-key "projects/KMS_PROJECT_ID/locations/us-central1/keyRings/secret-manager-cmek/cryptoKeys/my-other-key" \
    --location us-central1 \
    --project "SM_PROJECT_ID"

Per aggiornare più chiavi in un secret contemporaneamente, puoi ottenere e impostare la policy di replica tramite un file.

gcloud

Per utilizzare Secret Manager dalla riga di comando, prima installa o esegui l'upgrade alla versione 378.0.0 o successive di Google Cloud CLI. Su Compute Engine o GKE, devi autenticarti con l'ambito cloud-platform.

gcloud secrets replication get "my-ummr-secret" \
    --project "SM_PROJECT_ID" \
    --format=json > ./replication-policy.json

Aggiorna il file in modo che rifletta la configurazione CMEK desiderata nel tuo editor preferito. Poi imposta il nuovo criterio:

gcloud secrets replication set "my-ummr-secret" \
    --replication-policy-file ./replication-policy.json \
    --project "SM_PROJECT_ID"

API

Questi esempi utilizzano curl per dimostrare l'utilizzo dell'API. Puoi generare token di accesso con gcloud auth print-access-token. Su Compute Engine o GKE, devi autenticarti con l'ambito cloud-platform.

curl "https://secretmanager.googleapis.com/v1/projects/${SM_PROJECT_ID}/secrets/my-ummr-secret?updateMask=replication" \
    --request "PATCH" \
    --header "Authorization: Bearer ACCESS_TOKEN" \
    --header "Content-Type: application/json" \
    --data-binary @- <<EOF
{
  "replication":{
    "userManaged":{
      "replicas":[
        {
          "location":"us-east1",
          "customerManagedEncryption":{
            "kmsKeyName":"projects/KMS_PROJECT_ID/locations/us-east1/keyRings/secret-manager-cmek/cryptoKeys/my-other-key"
          }
        },
        {
          "location":"us-central1",
          "customerManagedEncryption":{
            "kmsKeyName":"projects/KMS_PROJECT_ID/locations/us-central1/keyRings/secret-manager-cmek/cryptoKeys/my-other-key"
          }
        }]
      }
    }
  }
EOF

Visualizza la configurazione CMEK della versione del secret

Per esaminare i metadati di una versione del secret, incluso se la versione del secret è abilitata a CMEK e il nome risorsa della versione della chiave CMEK, visualizza i relativi metadati.

gcloud

Per utilizzare Secret Manager dalla riga di comando, prima installa o esegui l'upgrade alla versione 378.0.0 o successive di Google Cloud CLI. Su Compute Engine o GKE, devi autenticarti con l'ambito cloud-platform.

gcloud secrets versions describe "latest" \
    --secret "SECRET_ID" \
    --project "SM_PROJECT_ID"

API

Questi esempi utilizzano curl per dimostrare l'utilizzo dell'API. Puoi generare token di accesso con gcloud auth print-access-token. Su Compute Engine o GKE, devi autenticarti con l'ambito cloud-platform.

curl "https://secretmanager.googleapis.com/v1/projects/SM_PROJECT_ID/secrets/SECRET_ID/versions/latest" \
    --request "GET" \
    --header "Authorization: Bearer ACCESS_TOKEN" \
    --header "Content-Type: application/json"

Restituisce il nome completo della risorsa Cloud KMS della versione della chiave utilizzata per criptare la versione del secret.

{
  "name": "projects/PROJECT_NUMBER/secrets/SECRET_ID/versions/1",
  "createTime": "2021-07-...",
  "state": "ENABLED",
  "replicationStatus": {
    "automatic": {
      "customerManagedEncryption": {
        "kmsKeyVersionName": "projects/KMS_PROJECT_ID/locations/global/keyRings/secret-manager-cmek/cryptoKeys/my-cmek-key/cryptoKeyVersions/1"
      }
    }
  }
}

Aggiungi una chiave Cloud EKM a una policy CMEK

Questa sezione illustra l'aggiunta di una chiave Cloud EKM a una policy CMEK. Questi passaggi consentono di utilizzare una chiave Cloud EKM per criptare o decriptare i secret.

Poiché Cloud EKM al momento non supporta la regione multipla global, le chiavi Cloud EKM possono essere utilizzate solo con i secret configurati per la replica gestita dall'utente.

Crea una chiave simmetrica nella regione Cloud KMS us-central1 (o in qualsiasi regione, ad eccezione di global). Questo esempio crea un nuovo keyring chiamato secret-manager-cmek-ekm, quindi crea una nuova chiave chiamata my-ekm-key nel keyring.

gcloud

Per utilizzare Secret Manager dalla riga di comando, prima installa o esegui l'upgrade alla versione 378.0.0 o successive di Google Cloud CLI. Su Compute Engine o GKE, devi autenticarti con l'ambito cloud-platform.

Crea un nuovo keyring:

gcloud kms keyrings create "secret-manager-cmek-ekm" \
  --project "KMS_PROJECT_ID" \
  --location "us-central1"

Crea una chiave in questa chiave automatizzata:

gcloud kms keys create "my-ekm-key" \
  --keyring "secret-manager-cmek-ekm" \
  --location "us-central1" \
  --purpose "encryption" \
  --protection-level "external" \
  --skip-initial-version-creation \
  --default-algorithm "external-symmetric-encryption"

Successivamente, crea una nuova versione di my-ekm-key utilizzando l'URI esterno della chiave. Per saperne di più sugli URI esterni per le chiavi Cloud EKM, consulta Crea una chiave esterna.

gcloud

Per utilizzare Secret Manager dalla riga di comando, prima installa o esegui l'upgrade alla versione 378.0.0 o successive di Google Cloud CLI. Su Compute Engine o GKE, devi autenticarti con l'ambito cloud-platform.

gcloud kms keys versions create \
  --key "my-ekm-key" \
  --keyring "secret-manager-cmek-ekm" \
  --location "us-central1" \
  --external-key-uri EXTERNAL_KEY_URI \
  --primary

Concedi all'identità di servizio per l'accesso a Secret Manager l'autorizzazione a criptare e decriptare utilizzando la chiave esterna. Questo comando concede il ruolo Autore crittografia / decrittografia Cloud KMS (roles/cloudkms.cryptoKeyEncrypterDecrypter) su my-ekm-key all'identità di servizio.

gcloud

Per utilizzare Secret Manager dalla riga di comando, prima installa o esegui l'upgrade alla versione 378.0.0 o successive di Google Cloud CLI. Su Compute Engine o GKE, devi autenticarti con l'ambito cloud-platform.

gcloud kms keys add-iam-policy-binding "my-ekm-key" \
  --project "KMS_PROJECT_ID" \
  --location "us-central1" \
  --keyring "secret-manager-cmek-ekm" \
  --member "serviceAccount:SM_SERVICE_IDENTITY" \
  --role "roles/cloudkms.cryptoKeyEncrypterDecrypter"

Crea un secret abilitato a CMEK che utilizza una chiave Cloud EKM.

gcloud

Per utilizzare Secret Manager dalla riga di comando, prima installa o esegui l'upgrade alla versione 378.0.0 o successive di Google Cloud CLI. Su Compute Engine o GKE, devi autenticarti con l'ambito cloud-platform.

cat <<EOF > ./replication-policy.json
{
  "userManaged":{
    "replicas":[
      {
        "location":"us-central1",
        "customerManagedEncryption":{
          "kmsKeyName":"projects/KMS_PROJECT_ID/locations/us-central1/keyRings/secret-manager-cmek-ekm/cryptoKeys/my-ekm-key"
        }
      }
    ]
  }
}
EOF
gcloud secrets create "my-ekm-secret" \
    --replication-policy-file ./replication-policy.json \
    --project "SM_PROJECT_ID"

Ora, ogni volta che viene creata una versione del secret in my-ekm-secret, il payload della versione del secret viene criptato automaticamente utilizzando la chiave Cloud EKM prima di essere scritto nell'archiviazione permanente, a condizione che l'identità del servizio abbia accesso alla chiave. Se l'identità del servizio perde l'accesso o se la chiave non è più disponibile, un tentativo di creare una nuova versione del secret o di accedere a una esistente restituisce un errore.

Aggiungi una nuova versione del secret. Tieni presente che il nome risorsa della chiave viene letto dai metadati del secret.

gcloud

Per utilizzare Secret Manager dalla riga di comando, prima installa o esegui l'upgrade alla versione 378.0.0 o successive di Google Cloud CLI. Su Compute Engine o GKE, devi autenticarti con l'ambito cloud-platform.

echo -n "SECRET_DATA" | gcloud secrets versions add "my-ekm-secret" \
    --project "SM_PROJECT_ID" \
    --data-file -

La versione del secret viene creata anche se il chiamante non ha accesso diretto per utilizzare la chiave. L'identità del servizio per Secret Manager, anziché il chiamante, è responsabile della crittografia e della decrittografia dei secret durante la lettura o la scrittura.

Accedi alla versione del secret appena creata. È qui che l'identità del servizio accede alla chiave e cripta o decripta il secret per tuo conto.

gcloud

Per utilizzare Secret Manager dalla riga di comando, prima installa o esegui l'upgrade alla versione 378.0.0 o successive di Google Cloud CLI. Su Compute Engine o GKE, devi autenticarti con l'ambito cloud-platform.

gcloud secrets versions access "latest" \
  --project "SM_PROJECT_ID" \
  --secret "my-ekm-secret"

Disattivare CMEK

Rimuovi la configurazione CMEK da un secret aggiornando la policy di replica.

gcloud

Per utilizzare Secret Manager dalla riga di comando, prima installa o esegui l'upgrade alla versione 378.0.0 o successive di Google Cloud CLI. Su Compute Engine o GKE, devi autenticarti con l'ambito cloud-platform.

gcloud secrets replication update "SECRET_ID" --remove-cmek \
    --project "SM_PROJECT_ID"

API

Questi esempi utilizzano curl per dimostrare l'utilizzo dell'API. Puoi generare token di accesso con gcloud auth print-access-token. Su Compute Engine o GKE, devi autenticarti con l'ambito cloud-platform.

curl "https://secretmanager.googleapis.com/v1/projects/${SM_PROJECT_ID}/secrets/SECRET_ID?updateMask=replication" \
    --request "PATCH" \
    --header "Authorization: Bearer ACCESS_TOKEN" \
    --header "Content-Type: application/json" \
    --data-binary @- <<EOF
{
  "replication":{
    "automatic":{}
  }
}
EOF

Passaggi successivi

  • Scopri di più su CMEK.