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 potenzialmente più rigorosi, funzionalità di controllo e funzionalità di conformità.
- 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 CMEK con i 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 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 o l'identificatore completo del secret
- LOCATION: la Google Cloud posizione in cui vuoi creare il secret
- CMEK_KEY: il percorso completo della chiave CMEK specifica in Cloud Key Management Service che proteggerà il secret
Esegui questo 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 Google Cloud posizione in cui vuoi creare il secret.
- PROJECT_ID: l' Google Cloud ID progetto.
- SECRET_ID: l'ID del secret o l'identificatore completo del secret.
- KMS_PROJECT_ID: l'ID del tuo progetto Google Cloud che esegue Cloud Key Management Service.
- KMS_KEY_LOCATION: il nome della località 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 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 di queste 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
-
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 o l'identificatore completo del secret
- LOCATION: la Google Cloud posizione del secret
- CMEK_KEY: il percorso completo della chiave CMEK specifica in Cloud Key Management Service che proteggerà il secret
Esegui questo 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 Google Cloud posizione del secret.
- PROJECT_ID: l' Google Cloud ID progetto.
- SECRET_ID: l'ID del secret o l'identificatore completo 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 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 di queste 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" } }