Questa pagina descrive come funziona il supporto delle chiavi di crittografia gestite dal cliente (CMEK) in Backup per GKE.
Panoramica
Esistono due tipi di artefatti dei dati utente che vengono prodotti e archiviati Backup per GKE:
- Config backup: un insieme di descrizioni delle risorse Kubernetes estratti dal server API del cluster in fase di backup, con l'acquisizione lo stato del cluster.
- Backup del volume: un insieme di backup del volume che corrisponde
PersistentVolumeClaim
risorse trovate nel backup della configurazione.
Per impostazione predefinita, tutti gli artefatti di backup prodotti da Backup per GKE sono criptati at-rest utilizzando una chiave fornita da Google.
Tuttavia, puoi scegliere di criptare questi elementi utilizzando un chiave di crittografia gestita dal cliente (CMEK) gestita con Cloud Key Management servizio.
Abilita la crittografia CMEK
L'abilitazione della crittografia CMEK prevede due passaggi:
Specifica una chiave per criptare i backup prodotti per una
BackupPlan
.Concedi agli account di servizio appropriati l'accesso alle chiavi appropriate.
Per qualsiasi scenario di backup particolare, sono potenzialmente tre le chiavi CMEK coinvolti:
bplan_key
: questa è la chiave a cui fai riferimento durante la creazione o l'aggiornamentoBackupPlan
. Se possibile, questa chiave che verrà utilizzata per la crittografia tutti gli artefatti di backup. Questa chiave deve trovarsi nella stessa regione diBackupPlan
(consulta Informazioni sulle località delle risorse).orig_disk_key
: se hai criptato i volumi dei disco permanente utilizzando una chiave CMEK, i backup del volume prodotti da Backup per GKE volumi verranno criptati con questa chiave, anche se viene utilizzata una chiave diversa registrato pressoBackupPlan
.new_disk_key
: questa è la chiave CMEK che vuoi utilizzare per criptare i volumi che hai ripristinato dalla copia di backup. È indicato daStorageClass
nel il cluster di destinazione del ripristino.
Esistono cinque diversi account di servizio che potrebbero richiedere l'accesso alle chiavi CMEK:
agent_wi
: se esegui la versione di anteprima dell'agente (cluster GKE con versione 1.23 o precedenti), questo servizio deve disporre dell'accesso albplan_key
. Questo account di servizio avrà il modulo:PROJECT_ID.svc.id.goog[gkebackup/agent]
, dovePROJECT_ID
è l'ID del tuo progetto Google Cloud.agent_robot
: se la versione 1.24 o successiva dei tuoi cluster GKE è in esecuzione, a questo account di servizio deve essere concesso l'accesso abplan_key
. Questo account di servizio avrà il formato:service-PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com
, dovePROJECT_NUMBER
è il numero del tuo progetto Google Cloud.non_cmek_service_agent
: quando esegui il backup di volumi non criptati con CMEK, questo account di servizio deve essere ha ottenuto l'accesso albplan_key
. Questo account di servizio avrà modulo:service-PROJECT_NUMBER@gcp-sa-gkebackup.iam.gserviceaccount.com
, dovePROJECT_NUMBER
è il numero del tuo progetto Google Cloud.cmek_service_agent
: quando esegui il backup di volumi criptati con CMEK, questo account di servizio deve essere ha ottenuto l'accesso alorig_disk_key
. Questo account di servizio avrà modulo:service-TENANT_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com
, doveTENANT_PROJECT_NUMBER
è il numero del progetto tenant assegnato perBackupPlan
.compute_service_agent
: questo account di servizio viene utilizzato per la creazione di nuovi account criptati volumi per un cluster e devi concedere l'accesso anew_disk_key
. Questo account di servizio avrà il formato:service-PROJECT_NUMBER@compute-system.iam.gserviceaccount.com
, dovePROJECT_NUMBER
è il numero del tuo progetto Google Cloud.
Se diskEncryptionKey.kmsKeyServiceAccount è già impostato per i dischi, devi eseguire le seguenti operazioni prima per creare un backup:
Disattiva il criterio dell'organizzazione
iam.disableCrossProjectServiceAccountUsage
per abilita la simulazione dell'identità degli account di servizio tra progetti:gcloud resource-manager org-policies disable-enforce \ iam.disableCrossProjectServiceAccountUsage --project=PROJECT_ID
Concedi a
cmek_service_agent
il ruoloroles/iam.serviceAccountTokenCreator
a creare credenziali di breve durata:gcloud iam service-accounts add-iam-policy-binding \ # Replace the email with the value from # `diskEncryptionKey.kmsKeyServiceAccount` your-kms-key-service-acount@PROJECT_ID.iam.gserviceaccount.com \ --member=service-TENANT_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountTokenCreator
La tabella seguente riassume a quali account di servizio deve essere concesso l'accesso chiave in vari scenari:
Artefatto | Account di servizio | Chiave |
---|---|---|
backup della configurazione, cluster 1.23 | agent_wi | bplan_key |
backup della configurazione, cluster 1.24 e versioni successive | agent_robot | bplan_key |
backup del volume criptato con CMEK | cmek_service_agent | orig_disk_key |
backup del volume criptato con Google | non_cmek_service_agent | bplan_key |
nuovo volume criptato con CMEK creato durante il ripristino | compute_service_agent | new_disk_key |
Puoi scegliere di concedere l'accesso alle chiavi a livello di progetto, in modo da concedere l'accesso a tutte le chiavi del progetto o alla singola chiave.
Esempio: concedi l'accesso a livello di progetto
gcloud projects add-iam-policy-binding PROJECT_ID \
--member serviceAccount:service-PROJECT_NUMBER@gcp-sa-gkebackup.iam.gserviceaccount.com \
--role roles/cloudkms.cryptoKeyEncrypterDecrypter
Esempio: concedere l'accesso a livello di chiave
gcloud kms keys add-iam-policy-binding key \
--keyring key-ring \
--location location \
--member "serviceAccount:PROJECT_ID.svc.id.goog[gkebackup/agent]" \
--role roles/cloudkms.cryptoKeyEncrypterDecrypter
Considerazioni sull'utilizzo e limitazioni
Se vuoi eseguire il backup di un volume criptato con CMEK, devi concedere l'accesso al disco anche se non abiliti la crittografia CMEK nel tuo
BackupPlan
.Le chiavi CMEK devono trovarsi nella stessa regione di
BackupPlan
per garantire che un'interruzione a livello di regione non rimuoverà l'accesso alla chiave durante l'esecuzione dei backup ancora accessibili. Tuttavia, questo vincolo non può essere applicato in modo forzato per le chiavi condivise con volumi criptati. Quando sono coinvolti volumi criptati, è possibile il ripristino potrebbe non riuscire anche quando è disponibile un backup, perché il disco non può essere archiviata nella stessa regione del backup.