Aggiungi la crittografia CMEK ai secret regionali

In questa pagina viene descritto come creare nuovi secret gestiti dal cliente chiavi di crittografia (CMEK) e aggiornare i secret esistenti per utilizzare le chiavi CMEK.

Panoramica

CMEK aggiunge un ulteriore livello di sicurezza e controllo sui tuoi dati sensibili archiviati come secret regionali. Puoi utilizzare CMEK per raggiungere i seguenti obiettivi:

  • Hai il controllo completo sulle chiavi di crittografia utilizzate per proteggere i tuoi secret.
  • Utilizza il tuo sistema di gestione delle chiavi con una sicurezza potenzialmente più restrittiva criteri, funzionalità di controllo e funzionalità di conformità.
  • Rispetta le normative sulla sovranità dei dati mantenendo le chiavi all'interno della tua infrastruttura.
  • Definisci controlli di accesso granulari per le chiavi di crittografia, specificando chi può utilizzarle e per quali scopi.

Limitazioni:

L'utilizzo di CMEK con i secret regionali presenta le seguenti limitazioni:

Prima di iniziare

  1. Abilita l'API Secret Manager, una volta per progetto.
  2. Assegna il ruolo Amministratore Secret Manager (roles/secretmanager.admin) al progetto, alla cartella o all'organizzazione.
  3. Esegui l'autenticazione nell'API Secret Manager in uno dei seguenti modi:

    • Se utilizzi le librerie client per accedere all'API Secret Manager, configura le credenziali predefinite dell'applicazione.
    • Se utilizzi Google Cloud CLI per accedere all'API Secret Manager, utilizza le tue credenziali Google Cloud CLI per l'autenticazione.
    • Per autenticare una chiamata REST, utilizza le credenziali di Google Cloud CLI o le credenziali predefinite dell'applicazione.
  4. Per abilitare CMEK e creare le chiavi e i keyring CMEK necessari per questo passaggio, vedi Abilita le chiavi di crittografia gestite dal cliente per Secret Manager.

Crea un secret regionale con la crittografia CMEK

Per creare un nuovo secret con la crittografia CMEK, utilizza uno dei seguenti metodi:

Console

  1. Vai alla pagina Secret Manager nella console Google Cloud.

    Vai a Secret Manager

  2. Nella pagina Secret Manager, fai clic sulla scheda Secret regionali, quindi Fai clic su Crea secret regionale.

  3. Nella pagina Crea secret regionale, inserisci un nome per il secret nel campo Nome. Un nome della chiave può contenere lettere maiuscole e minuscole, numeri, trattini e trattini bassi. La lunghezza massima consentita per un nome è di 255 caratteri.

  4. Inserisci un valore per il secret (ad esempio abcd1234). Il valore del secret può essere in qualsiasi formato, ma non deve superare i 64 KB. Puoi anche caricare un file di testo contenente il valore del secret utilizzando l'opzione Carica file. Questa azione crea automaticamente la versione del secret.

  5. Scegli la posizione in cui vuoi che venga archiviato il secret regionale dall'elenco Regione.

  6. In Crittografia, seleziona Chiave di crittografia gestita dal cliente (CMEK), quindi scegli la chiave CMEK dall'elenco Chiave di crittografia. Assicurati che la chiave CMEK nella località specificata e il tuo progetto Secret Manager ha i necessari autorizzazioni per utilizzare la chiave.

  7. Fai clic su Crea secret.

gcloud

Prima di utilizzare i dati dei comandi riportati di seguito, effettua le seguenti sostituzioni:

  • SECRET_ID: l'ID del secret o dell'identificatore completo del secret
  • LOCATION: la località Google Cloud in cui vuoi creare il secret
  • CMEK_KEY: il percorso completo della chiave CMEK specifica in Cloud Key Management Service che proteggerà la secret

Esegui il seguente comando:

Linux, macOS o Cloud Shell

gcloud secrets create SECRET_ID --location=LOCATION \
    --regional-kms-key-name=CMEK_KEY

Windows (PowerShell)

gcloud secrets create SECRET_ID --location=LOCATION `
    --regional-kms-key-name=CMEK_KEY

Windows (cmd.exe)

gcloud secrets create SECRET_ID --location=LOCATION ^
    --regional-kms-key-name=CMEK_KEY

REST

Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:

  • LOCATION: la località Google Cloud in cui vuoi creare il secret.
  • PROJECT_ID: l'ID progetto Google Cloud.
  • SECRET_ID: l'ID del secret o l'identificatore completo del secret.
  • KMS_PROJECT_ID: l'ID del tuo progetto Google Cloud su cui è in esecuzione Cloud Key Management Service.
  • KMS_KEY_LOCATION: il nome della località della chiave Cloud KMS. Deve trovarsi nella stessa posizione del tuo secret.
  • YOUR_KEY_RING: il nome della raccolta di chiavi in Cloud KMS in cui hai archiviato la chiave CMEK.
  • YOUR_CMEK_KEY: la chiave di crittografia gestita dal cliente (CMEK) specifica che hai creato all'interno del keyring scelto in Cloud KMS.

Metodo HTTP e URL:

POST https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets?secretId=SECRET_ID

Corpo JSON della richiesta:

{"customer_managed_encryption": {"kms_key_name": "projects/KMS_PROJECT_ID/locations/KMS_KEY_LOCATION/keyRings/YOUR_KEY_RING/cryptoKeys/YOUR_CMEK_KEY"}}

Per inviare la richiesta, scegli una delle seguenti opzioni:

curl

Salva il corpo della richiesta in un file denominato request.json. ed esegui questo comando:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets?secretId=SECRET_ID"

PowerShell

Salva il corpo della richiesta in un file denominato request.json, quindi esegui il comando seguente:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets?secretId=SECRET_ID" | Select-Object -Expand Content

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID",
  "createTime": "2024-03-27T13:30:07.437859Z",
  "etag": "\"1614a467b60423\""
  "customerManagedEncryption": {
    "kmsKeyName": "projects/KMS_PROJECT_ID/locations/KMS_KEY_LOCATION/keyRings/secret-manager-cmek/cryptoKeys/my-cmek-key"
  }
}

Aggiorna un secret esistente per utilizzare CMEK

Per aggiornare un secret esistente in modo da utilizzare CMEK, utilizza uno dei seguenti metodi:

Console

  1. Vai alla pagina Secret Manager nella console Google Cloud.

    Vai a Secret Manager

  2. Nella pagina Secret Manager, fai clic sulla scheda Secret regionali.

  3. Per modificare un secret, utilizza uno dei seguenti metodi:

    • Individua il secret nell'elenco e fai clic sul pulsante Azioni. associato al secret. Nel menu Azioni, fai clic su Modifica.

    • Fai clic sul nome del secret per accedere alla relativa pagina dei dettagli. Nella pagina dei dettagli del secret, fai clic su Modifica secret.

  4. Nella pagina Modifica secret, vai alla sezione Crittografia.

  5. In Crittografia, seleziona Chiave di crittografia gestita dal cliente (CMEK), quindi seleziona la chiave CMEK dall'elenco Chiave di crittografia. Assicurati che la chiave CMEK nella località specificata e il tuo progetto Secret Manager ha i necessari autorizzazioni per utilizzare la chiave.

  6. Fai clic su Aggiorna secret.

gcloud

Prima di utilizzare i dati dei comandi riportati di seguito, effettua le seguenti sostituzioni:

  • SECRET_ID: l'ID del secret o dell'identificatore completo del secret
  • LOCATION: la località di Google Cloud del segreto
  • CMEK_KEY: il percorso completo della chiave CMEK specifica in Cloud Key Management Service che proteggerà la secret

Esegui il seguente comando:

Linux, macOS o Cloud Shell

gcloud secrets update SECRET_ID --location=LOCATION \
    --regional-kms-key-name=CMEK_KEY

Windows (PowerShell)

gcloud secrets update SECRET_ID --location=LOCATION `
    --regional-kms-key-name=CMEK_KEY

Windows (cmd.exe)

gcloud secrets update SECRET_ID --location=LOCATION ^
    --regional-kms-key-name=CMEK_KEY

REST

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • LOCATION: la località Google Cloud del secret.
  • PROJECT_ID: l'ID progetto Google Cloud.
  • SECRET_ID: l'ID del secret o l'identificatore completo del secret.
  • KMS_PROJECT_ID: l'ID del progetto Google Cloud che esegue Cloud Key Management Service.
  • KMS_KEY_LOCATION: la posizione della chiave Cloud KMS. Deve trovarsi nella stessa posizione del tuo secret.
  • YOUR_KEY_RING: il nome della raccolta di chiavi in Cloud KMS in cui hai archiviato la chiave CMEK.
  • YOUR_CMEK_KEY: la chiave di crittografia gestita dal cliente (CMEK) specifica che hai creato all'interno del keyring scelto in Cloud KMS.

Metodo HTTP e URL:

PATCH https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID?updateMask=customer_managed_encryption

Corpo JSON della richiesta:

{"customer_managed_encryption": {"kms_key_name": "projects/KMS_PROJECT_ID/locations/KMS_KEY_LOCATION/keyRings/YOUR_KEY_RING/cryptoKeys/YOUR_CMEK_KEY"}}"

Per inviare la richiesta, scegli una delle seguenti opzioni:

curl

Salva il corpo della richiesta in un file denominato request.json. ed esegui questo comando:

curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID?updateMask=customer_managed_encryption"

PowerShell

Salva il corpo della richiesta in un file denominato request.json. ed esegui questo comando:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID?updateMask=customer_managed_encryption" | Select-Object -Expand Content

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID",
  "createTime": "2024-03-27T13:30:07.437859Z",
  "etag": "\"16211daf5f29c5\""
  "customerManagedEncryption": {
    "kmsKeyName": "projects/KMS_PROJECT_ID/locations/KMS_KEY_LOCATION/keyRings/secret-manager-cmek/cryptoKeys/my-cmek-key"
  }
}

Passaggi successivi