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
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ù rigorosi.
- Rispetta le normative sulla sovranità dei dati mantenendo le chiavi all'interno della tua infrastruttura.
- Definisci controlli dell'accesso granulari per le tue chiavi di crittografia, specificando chi può utilizzarle e per quali scopi.
Limitazioni:
L'utilizzo di chiavi CMEK con secret regionali presenta le seguenti limitazioni:
- Cloud Key Management Service Autokey (anteprima) non è supportato per i secret regionali.
- La posizione della chiave CMEK deve corrispondere a quella del secret regionale.
Prima di iniziare
- Abilita l'API Secret Manager una volta per progetto.
- Assegna il ruolo di Amministratore Secret Manager (
roles/secretmanager.admin
) al progetto, alla cartella o all'organizzazione. Esegui l'autenticazione all'API Secret Manager utilizzando uno dei seguenti metodi:
- 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.
Per abilitare CMEK e creare le chiavi e le chiavi automatizzate CMEK necessarie per questo passaggio, consulta Abilitare le chiavi di crittografia gestite dal cliente per Secret Manager.
Crea un secret regionale con crittografia CMEK
Per creare un nuovo secret con la crittografia CMEK, utilizza uno dei seguenti metodi:
Console
-
Nella console Google Cloud , vai alla pagina Secret Manager.
-
Nella pagina Secret Manager, fai clic sulla scheda Secret regionali, quindi fai clic su Crea secret regionale.
-
Nella pagina Crea secret regionale, inserisci un nome per il secret nel campo Nome. Il nome di un secret può contenere lettere maiuscole e minuscole, numeri, trattini e trattini bassi. La lunghezza massima consentita per un nome è 255 caratteri.
-
Inserisci un valore per il secret (ad esempio,
abcd1234
). Il valore del secret può essere in qualsiasi formato, ma non deve superare i 64 KiB. 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. -
Scegli la località in cui vuoi che venga archiviato il secret regionale dall'elenco Regione.
-
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 esista nella posizione specificata e che il tuo progetto Secret Manager disponga delle autorizzazioni necessarie per utilizzare la chiave.
-
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
- LOCATION: la Google Cloud posizione in cui vuoi creare il secret
- KMS_PROJECT_ID: l'ID del tuo progetto Google Cloud che esegue Cloud Key Management Service.
- KMS_KEY_LOCATION: la posizione della chiave Cloud KMS. Deve essere la stessa posizione del 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.
Esegui questo comando:
Linux, macOS o Cloud Shell
gcloud secrets create SECRET_ID --location=LOCATION --regional-kms-key-name="projects/KMS_PROJECT_ID/locations/KMS_KEY_LOCATION/keyRings/YOUR_KEY_RING/cryptoKeys/YOUR_CMEK_KEY"
Windows (PowerShell)
gcloud secrets create SECRET_ID --location=LOCATION --regional-kms-key-name="projects/KMS_PROJECT_ID/locations/KMS_KEY_LOCATION/keyRings/YOUR_KEY_RING/cryptoKeys/YOUR_CMEK_KEY"
Windows (cmd.exe)
gcloud secrets create SECRET_ID --location=LOCATION --regional-kms-key-name="projects/KMS_PROJECT_ID/locations/KMS_KEY_LOCATION/keyRings/YOUR_KEY_RING/cryptoKeys/YOUR_CMEK_KEY"
REST
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- LOCATION: la Google Cloud posizione in cui vuoi creare il secret.
- PROJECT_ID: l' Google Cloud ID progetto.
- SECRET_ID: l'ID del secret.
- KMS_PROJECT_ID: l'ID del tuo progetto Google Cloud che esegue Cloud Key Management Service.
- KMS_KEY_LOCATION: la posizione della chiave Cloud KMS. Deve essere la stessa posizione del 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 di queste 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" } }
Aggiornare un secret esistente per utilizzare CMEK
Per aggiornare un secret esistente in modo che utilizzi CMEK, utilizza uno dei seguenti metodi:
Console
-
Nella console Google Cloud , vai alla pagina Secret Manager.
-
Nella pagina Secret Manager, fai clic sulla scheda Secret regionali.
-
Per modificare un secret, utilizza uno dei seguenti metodi:
-
Individua il secret nell'elenco e fai clic sul menu
Azioni associato. Nel menu Azioni, fai clic su Modifica. -
Fai clic sul nome del secret per andare alla pagina dei dettagli. Nella pagina dei dettagli del secret, fai clic su
Modifica secret.
-
-
Nella pagina Modifica secret, vai alla sezione Crittografia.
-
In Crittografia, seleziona Chiave di crittografia gestita dal cliente (CMEK) e poi seleziona la chiave CMEK dall'elenco Chiave di crittografia. Assicurati che la chiave CMEK esista nella posizione specificata e che il tuo progetto Secret Manager disponga delle autorizzazioni necessarie per utilizzare la chiave.
-
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
- LOCATION: la Google Cloud posizione del secret
- KMS_PROJECT_ID: l'ID del tuo progetto Google Cloud che esegue Cloud Key Management Service.
- KMS_KEY_LOCATION: la posizione della chiave Cloud KMS. Deve essere la stessa posizione del 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.
Esegui questo comando:
Linux, macOS o Cloud Shell
gcloud secrets update SECRET_ID --location=LOCATION --regional-kms-key-name="projects/KMS_PROJECT_ID/locations/KMS_KEY_LOCATION/keyRings/YOUR_KEY_RING/cryptoKeys/YOUR_CMEK_KEY"
Windows (PowerShell)
gcloud secrets update SECRET_ID --location=LOCATION --regional-kms-key-name="projects/KMS_PROJECT_ID/locations/KMS_KEY_LOCATION/keyRings/YOUR_KEY_RING/cryptoKeys/YOUR_CMEK_KEY"
Windows (cmd.exe)
gcloud secrets update SECRET_ID --location=LOCATION --regional-kms-key-name="projects/KMS_PROJECT_ID/locations/KMS_KEY_LOCATION/keyRings/YOUR_KEY_RING/cryptoKeys/YOUR_CMEK_KEY"
REST
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- LOCATION: la Google Cloud posizione del secret.
- PROJECT_ID: l' Google Cloud ID progetto.
- SECRET_ID: l'ID del secret.
- KMS_PROJECT_ID: l'ID del tuo progetto Google Cloud che esegue Cloud Key Management Service.
- KMS_KEY_LOCATION: la posizione della chiave Cloud KMS. Deve essere la stessa posizione del 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 di queste 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
,
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" } }