Abilitare le chiavi di crittografia gestite dal cliente per Secret Manager

Per impostazione predefinita, Secret Manager cripta i contenuti dei clienti riposo. 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 tramite Secret Manager. L'utilizzo delle chiavi Cloud KMS consente di controllare la protezione livello, posizione, pianificazione della rotazione, autorizzazioni di utilizzo e accesso e confini crittografici. L'utilizzo di Cloud KMS ti consente inoltre di monitorare l'utilizzo delle chiavi, visualizzare i log di controllo e controllare i cicli di vita delle chiavi. Invece di lasciare che sia Google a controllare e gestire la simmetria chiavi di crittografia delle chiavi (KEK) che proteggono i dati, sei tu a controllare e gestire queste chiavi in Cloud KMS.

Dopo aver configurato le risorse con le chiavi 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, consulta Chiavi di crittografia gestite dal cliente (CMEK).

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

CMEK con Cloud KMS Autokey

Puoi creare manualmente CMEK per proteggere Secret Manager o usare Cloud KMS Autokey. Con Autokey, i keyring e le chiavi vengono generati on demand come della creazione di risorse in Secret Manager. Gli agenti di servizio che utilizzano le chiavi per le operazioni di crittografia e decrittografia vengono creati se non esistono già e vengono concessi i ruoli IAM (Identity and Access Management) richiesti. Per maggiori informazioni informazioni, consulta la Panoramica di Autokey.

Secret Manager corrente compatibile solo con Cloud KMS Autokey quando e la creazione di risorse usando Terraform o l'API REST.

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

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

Come funziona CMEK in Secret Manager

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

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

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

Limitazioni

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

Prima di iniziare

Puoi scegliere di archiviare tutte le risorse nello stesso progetto o di archiviare secret e 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 di Secret Manager.
    • Se necessario, completa i passaggi descritti nella sezione Configurazione di Secret Manager della guida introduttiva 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 di 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

Esegui l'autenticazione in Google Cloud:

gcloud

Per utilizzare Secret Manager sulla riga di comando, 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à agente di servizio per ogni che richiede chiavi di crittografia gestite dal cliente.

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

gcloud

Per utilizzare Secret Manager sulla riga di comando, 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 Cloud KMS CMEK utilizzata per criptare e decriptare i tuoi secret.

CMEK con replica automatica

Questa sezione riguarda i secret configurati tramite un criterio di replica automatica.

Per i secret che utilizzano il criterio di replica automatica, la chiave CMEK deve trovarsi nella regione multipla global Cloud KMS. Se utilizzi una chiave Cloud EKM, non puoi configurare il segreto per utilizzare 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 un criterio CMEK.

Crea una chiave Cloud KMS simmetrica in Cloud KMS global regione o utilizza una chiave esistente. Questo esempio crea un nuovo mazzo di chiavi chiamato secret-manager-cmek, quindi crea una nuova chiave chiamata my-cmek-key al suo interno.

gcloud

Per utilizzare Secret Manager nella riga di comando, devi 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 di Secret Manager l'accesso per criptare e decriptare utilizzando la chiave CMEK. Questo comando concede al criptatore di Cloud KMS / Ruolo di decrittografia (roles/cloudkms.cryptoKeyEncrypterDecrypter) nella my-cmek-key chiave Cloud KMS all'identità del servizio.

gcloud

Per utilizzare Secret Manager nella riga di comando, devi prima Installa o esegui l'upgrade alla versione 378.0.0 o successive di Google Cloud CLI. In Compute Engine o GKE, devi eseguire l'autenticazione 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 replica automatica. Il nome della risorsa della chiave CMEK viene memorizzato come metadato nel secret.

gcloud

Per utilizzare Secret Manager sulla riga di comando, installa o esegui l'upgrade alla versione 378.0.0 o successive di Google Cloud CLI. In Compute Engine o GKE, devi eseguire l'autenticazione 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 stampa-access-token. In Compute Engine o GKE, devi eseguire l'autenticazione con l'ambito cloud-platform.

Imposta il valore di replication.automatic.customerManagedEncryption.kmsKeyName al 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, il suo payload viene criptato automaticamente utilizzando la chiave prima di essere scritto nello spazio di 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, di creare una nuova versione del secret o di accedervi a una versione esistente restituisce un .

Aggiungi una nuova versione del secret. Tieni presente che non devi specificare il nome della risorsa della chiave Cloud KMS, poiché viene letto dai metadati del segreto.

gcloud

Per utilizzare Secret Manager nella riga di comando, devi prima Installa o esegui l'upgrade alla versione 378.0.0 o successive di Google Cloud CLI. In Compute Engine o GKE, devi eseguire l'autenticazione con l'ambito cloud-platform.

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

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

Analogamente, non è necessario l'accesso diretto alla chiave CMEK per accedere al segreto. L'identità del servizio accede alla chiave e cripta o decripta il segreto per tuo conto.

Accedi alla versione del secret appena creata:

gcloud

Per utilizzare Secret Manager sulla riga di comando, 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 configurazione CMEK

Crea una nuova chiave KMS simmetrica nella regione multipla global Cloud KMS.

gcloud

Per utilizzare Secret Manager sulla riga di comando, 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 l'identità del servizio per l'accesso a Secret Manager per criptare e decriptare utilizzando la nuova chiave CMEK. Questo comando concede all'identità di servizio il ruolo di criptatore/decriptatore (roles/cloudkms.cryptoKeyEncrypterDecrypter) Cloud KMS sulla chiave Cloud KMS my-other-key.

gcloud

Per utilizzare Secret Manager nella riga di comando, devi 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 su un secret aggiornando la replica nel con i nuovi nomi delle risorse della chiave Cloud KMS.

gcloud

Per utilizzare Secret Manager sulla riga di comando, installa o esegui l'upgrade alla versione 378.0.0 o successive di Google Cloud CLI. In Compute Engine o GKE, devi eseguire l'autenticazione 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 stampa-access-token. In Compute Engine o GKE, devi eseguire l'autenticazione 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, puoi controllare la posizione Google Cloud dove viene archiviato il secret. I secret sono sempre accessibili da ogni località Google Cloud.

I secret con un criterio di replica gestita dall'utente devono utilizzare chiavi Cloud KMS che mappano esattamente alle località in cui sono archiviate le versioni dei secret. La esempi in questa guida memorizzano un secret in due posizioni separate: us-east1, us- central1. Le richieste di accesso al secret vengono inoltrate a una di queste posizioni.

In ciascuna delle due regioni, crea un keyring e una chiave Cloud KMS per la crittografia o utilizza una chiave esistente. Questo esempio crea un nuovo keyring denominato "secret-manager-cmek", quindi crea una chiave denominata "my-cmek-key" in ogni regione.

gcloud

Per utilizzare Secret Manager sulla riga di comando, 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 sulla riga di comando, installa o esegui l'upgrade alla versione 378.0.0 o successive di Google Cloud CLI. In Compute Engine o GKE, devi eseguire l'autenticazione 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 per CMEK con la replica gestita dall'utente. Il nome della risorsa della chiave CMEK viene memorizzato come metadati nel secret.

gcloud

Per utilizzare Secret Manager nella riga di comando, devi 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

In questi esempi viene utilizzato curl per dimostrare l'utilizzo dell'API. Puoi generare token di accesso con gcloud auth print-access-token. In Compute Engine o GKE, devi eseguire l'autenticazione 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, il suo payload viene criptato automaticamente utilizzando la chiave prima di essere scritto nello spazio di 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, di creare una nuova versione del secret o di accedervi a una versione esistente restituisce un .

Aggiungi una nuova versione del secret. Tieni presente che non devi specificare il nome della risorsa della chiave Cloud KMS, poiché viene letto dai metadati del segreto.

gcloud

Per utilizzare Secret Manager sulla riga di comando, installa o esegui l'upgrade alla versione 378.0.0 o successive di Google Cloud CLI. In Compute Engine o GKE, devi eseguire l'autenticazione con l'ambito cloud-platform.

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

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

Analogamente, non è necessario l'accesso diretto alla chiave CMEK per accedere al il secret. L'identità del servizio accede alla chiave e cripta o decripta il secret per tuo conto.

Accedi alla versione del secret che hai appena creato.

gcloud

Per utilizzare Secret Manager sulla riga di comando, installa o esegui l'upgrade alla versione 378.0.0 o successive di Google Cloud CLI. In Compute Engine o GKE, devi eseguire l'autenticazione con l'ambito cloud-platform.

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

Aggiorna configurazione CMEK

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

gcloud

Per utilizzare Secret Manager sulla riga di comando, installa o esegui l'upgrade alla versione 378.0.0 o successive di Google Cloud CLI. In Compute Engine o GKE, devi eseguire l'autenticazione 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 l'identità del servizio per l'accesso a Secret Manager per criptare e decriptare utilizzando le nuove chiavi CMEK. Questo comando concede all'identità del servizio il ruolo di criptatore/decriptatore (roles/cloudkms.cryptoKeyEncrypterDecrypter) di Cloud KMS sulle chiavi my-other-key Cloud KMS.

gcloud

Per utilizzare Secret Manager sulla riga di comando, 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 in un segreto aggiornando la replica sul segreto con i nuovi nomi delle risorse chiave Cloud KMS.

gcloud

Per utilizzare Secret Manager sulla riga di comando, 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 il criterio di replica tramite un file.

gcloud

Per utilizzare Secret Manager sulla riga di comando, installa o esegui l'upgrade alla versione 378.0.0 o successive di Google Cloud CLI. In Compute Engine o GKE, devi eseguire l'autenticazione 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 nelle tue app preferite editor. Poi imposta il nuovo criterio:

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

API

In questi esempi viene utilizzato curl per dimostrare l'utilizzo dell'API. Puoi generare token di accesso con gcloud auth stampa-access-token. In Compute Engine o GKE, devi eseguire l'autenticazione 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 ispezionare i metadati di una versione del segreto, ad esempio se la versione del segreto è attivata per CMEK e il nome della risorsa della versione della chiave CMEK, visualizza i relativi metadati.

gcloud

Per utilizzare Secret Manager nella riga di comando, devi 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 stampa-access-token. In Compute Engine o GKE, devi eseguire l'autenticazione 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"

Viene restituito il nome completo della risorsa Cloud KMS della versione della chiave utilizzata per criptare la versione del segreto.

{
  "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"
      }
    }
  }
}

Aggiungere una chiave EKM di Cloud a un criterio CMEK

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

Poiché Cloud EKM al momento non supporta le regioni multiple 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 tranne global). Questo esempio crea un nuovo keyring denominato secret-manager-cmek-ekm, quindi una nuova chiave denominata my-ekm-key nel keyring.

gcloud

Per utilizzare Secret Manager nella riga di comando, devi 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 nel keyring:

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"

A questo punto, crea una nuova versione di my-ekm-key utilizzando l'URI esterno della chiave. Per ulteriori informazioni sugli URI esterni per le chiavi Cloud EKM, consulta Creare una chiave esterna.

gcloud

Per utilizzare Secret Manager nella riga di comando, devi 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 l'identità del servizio per l'accesso a Secret Manager per criptare e con la chiave esterna. Questo comando concede a Cloud KMS Ruolo di crittografia / decrittografia (roles/cloudkms.cryptoKeyEncrypterDecrypter) attivo my-ekm-key all'identità del servizio.

gcloud

Per utilizzare Secret Manager nella riga di comando, devi 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 per CMEK che utilizza una chiave Cloud EKM.

gcloud

Per utilizzare Secret Manager nella riga di comando, devi prima Installa o esegui l'upgrade alla versione 378.0.0 o successive di Google Cloud CLI. In Compute Engine o GKE, devi eseguire l'autenticazione 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 suo payload viene criptato automaticamente utilizzando la chiave EKM di Cloud prima di essere scritto nello spazio di 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, di creare una nuova versione del secret o di accedervi a una versione esistente restituisce un .

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

gcloud

Per utilizzare Secret Manager nella riga di comando, devi prima Installa o esegui l'upgrade alla versione 378.0.0 o successive di Google Cloud CLI. In Compute Engine o GKE, devi eseguire l'autenticazione 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 chi chiama non ha accesso diretto all'uso della chiave. L'identità del servizio per Secret Manager, anziché dell'chiamante, è responsabile della crittografia e della decrittografia dei secret durante la lettura o la scrittura.

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

gcloud

Per utilizzare Secret Manager nella riga di comando, devi 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"

Disattiva CMEK

Rimuovi la configurazione CMEK da un secret aggiornando il criterio di replica.

gcloud

Per utilizzare Secret Manager sulla riga di comando, 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

In questi esempi viene utilizzato curl per dimostrare l'utilizzo dell'API. Puoi generare token di accesso con gcloud auth stampa-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.