Aggiungere la crittografia CMEK ai secret regionali

Questa pagina descrive come creare nuovi secret con chiavi di crittografia gestite dal cliente (CMEK) e aggiornare i secret esistenti per utilizzare le chiavi CMEK.

Panoramica

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

  • Avere il controllo completo sulle chiavi di crittografia utilizzate per proteggere i tuoi segreti.
  • Utilizza il tuo sistema di gestione delle chiavi con criteri di sicurezza, funzionalità di controllo e funzionalità di conformità potenzialmente più rigidi.
  • Rispetta le normative sulla sovranità dei dati mantenendo le chiavi all'interno della tua infrastruttura.
  • Definisci controlli di accesso granulari per le tue chiavi di crittografia, specificando chi può utilizzarle e a 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 all'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 attivare le chiavi CMEK e creare le chiavi e i mazzi di chiavi CMEK necessari per questo passaggio, consulta Attivare le chiavi di crittografia gestite dal cliente per Secret Manager.

Creare un secret regionale con crittografia CMEK

Per creare un nuovo secret con 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 e poi 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 è 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) e poi scegli la chiave CMEK dall'elenco Chiave di crittografia. Assicurati che la chiave CMEK sia presente nella posizione specificata e che il progetto Secret Manager disponga delle autorizzazioni necessarie per utilizzarla.

  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 della secret o l'identificatore completo della secret
  • LOCATION: la località Google Cloud in cui vuoi creare il 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 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, apporta le seguenti sostituzioni:

  • LOCATION: la località di Google Cloud in cui vuoi creare il segreto.
  • 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 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 nel 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, quindi esegui il comando seguente:

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

Aggiornare un secret esistente per utilizzare CMEK

Per aggiornare un secret esistente in modo che utilizzi 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 segreto nell'elenco e fai clic sul menu Azioni associato al segreto. Nel menu Azioni, fai clic su Modifica.

    • Fai clic sul nome del secret per aprire la pagina dei dettagli del secret. 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 sia presente nella posizione specificata e che il progetto Secret Manager disponga delle autorizzazioni necessarie per utilizzarla.

  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 segreto o l'identificatore completo del segreto
  • 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à di Google Cloud del segreto.
  • 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: 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 nel 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, quindi esegui il comando seguente:

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, quindi esegui il comando seguente:

$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