Per impostazione predefinita, Backup per GKE cripta i contenuti dei clienti at-rest. Backup per GKE gestisce la crittografia per conto tuo senza che tu debba fare altro. Questa opzione è denominata Crittografia predefinita di Google.
Se vuoi controllare le tue chiavi di crittografia, puoi utilizzare le chiavi di crittografia gestite dal cliente (CMEK) in Cloud KMS con servizi integrati con CMEK, incluso Backup per GKE. L'utilizzo delle chiavi Cloud KMS ti consente di controllare il livello di protezione, la posizione, la pianificazione della rotazione, l'utilizzo e le autorizzazioni di accesso e i limiti crittografici. L'utilizzo di Cloud KMS consente anche di visualizzare i log di controllo e controllare i cicli di vita delle chiavi. Anziché essere di proprietà di Google e gestite da Google, le chiavi di crittografia delle chiavi (KEK) simmetriche che proteggono i tuoi dati sono controllate e gestite da te in Cloud KMS.
Dopo aver configurato le risorse con le CMEK, l'esperienza di accesso alle risorse di Backup per GKE è simile all'utilizzo della crittografia predefinita di Google. Per saperne di più sulle opzioni di crittografia, consulta Chiavi di crittografia gestite dal cliente (CMEK).
Panoramica
Esistono due tipi di artefatti di dati utente prodotti e archiviati da Backup per GKE:
- Backup della configurazione: un insieme di descrizioni delle risorse Kubernetes estratte dal server API del cluster sottoposto a backup, che acquisiscono lo stato del cluster.
- Backup dei volumi: un insieme di backup dei volumi che corrispondono alle risorse
PersistentVolumeClaim
trovate nel backup della configurazione.
Per impostazione predefinita, tutti gli artefatti di backup prodotti da Backup per GKE vengono criptati inattivi utilizzando una chiave fornita da Google.
Tuttavia, puoi scegliere di criptare questi artefatti utilizzando una chiave di crittografia gestita dal cliente (CMEK) gestita con Cloud Key Management Service.
Attivare la crittografia CMEK
L'attivazione della crittografia CMEK prevede due passaggi:
Specifica una chiave per la crittografia dei backup prodotti per un
BackupPlan
.Concedi l'accesso tramite i service account appropriati alle chiavi appropriate.
Per qualsiasi scenario di backup specifico, sono potenzialmente coinvolte tre chiavi CMEK:
bplan_key
: questa è la chiave a cui fai riferimento quando crei o aggiorniBackupPlan
. Se possibile, questa chiave verrà utilizzata per criptare tutti gli artefatti di backup. Questa chiave deve trovarsi nella stessa regione diBackupPlan
(vedi Informazioni sulle località delle risorse).orig_disk_key
: se hai criptato i volumi dei disco permanente utilizzando una chiave CMEK, i backup dei volumi prodotti da Backup per GKE per questi volumi verranno criptati con questa chiave, anche se è registrata una chiave diversa conBackupPlan
.new_disk_key
: questa è la chiave CMEK che vuoi utilizzare per criptare i volumi che hai ripristinato dal backup. A questo fa riferimentoStorageClass
nel cluster di destinazione del ripristino.
Esistono quattro diversi account di servizio che potrebbero richiedere l'accesso alle chiavi CMEK:
agent_robot
: 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
: durante il backup dei volumi non criptati con CMEK, questo account di servizio deve disporre dell'accesso abplan_key
. Questo account di servizio avrà il formato:service-PROJECT_NUMBER@gcp-sa-gkebackup.iam.gserviceaccount.com
, dovePROJECT_NUMBER
è il numero del tuo progetto Google Cloud .cmek_service_agent
: durante il backup dei volumi criptati con CMEK, a questo account di servizio deve essere concesso l'accesso aorig_disk_key
. Questo account di servizio avrà il formato:service-TENANT_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com
, doveTENANT_PROJECT_NUMBER
è il numero del progetto tenant assegnato al tuoBackupPlan
.compute_service_agent
: questo account di servizio viene utilizzato durante la creazione di nuovi volumi criptati per un cluster e deve avere 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 è impostato per i dischi, dovrai eseguire i seguenti passaggi prima di creare un backup:
Disattiva il criterio dell'organizzazione
iam.disableCrossProjectServiceAccountUsage
per abilitare 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
per 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
Se esegui un'operazione di backup tra progetti o di ripristino tra progetti, devono essere elencati tre nomi di progetto:
cluster_project
: il progetto che contiene il cluster di cui vuoi eseguire il backup.backup_project
: il progetto in cui vuoi archiviare i backup.restore_project
: il progetto che contiene il cluster di destinazione del ripristino.
La tabella seguente riepiloga a quali service account deve essere concesso l'accesso a quali chiavi in vari scenari:
Artefatto | Service account | Numero progetto | Chiave |
---|---|---|---|
config backup cluster | agent_robot |
|
bplan_key |
backup del volume criptato con CMEK | cmek_service_agent | backup_project | orig_disk_key |
backup del volume criptato da Google | non_cmek_service_agent | backup_project | bplan_key |
nuovo volume criptato con CMEK creato durante il ripristino | compute_service_agent | restore_project | new_disk_key |
Puoi scegliere di concedere l'accesso alle chiavi a livello di progetto, il che concede l'accesso a tutte le chiavi del progetto, oppure alla singola chiave.
Concedere l'accesso a livello di progetto
Puoi concedere l'accesso alle chiavi a livello di progetto, il che concede l'accesso a tutte le chiavi del progetto.
Segui queste istruzioni per concedere l'accesso a livello di progetto.
Console
Nella console Google Cloud vai alla pagina IAM.
Fai clic su Concedi accesso.
Nel campo Nuove entità, inserisci l'indirizzo email del account di servizio.
Dall'elenco Seleziona un ruolo, seleziona il ruolo Autore crittografia/decrittografia CryptoKey Cloud KMS.
Fai clic su Salva.
gcloud
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
Sostituisci quanto segue:
PROJECT_ID
: l'ID del progetto a cui vuoi concedere l'accesso.PROJECT_NUMBER
: il numero del progetto a cui vuoi concedere l'accesso.
Terraform
Concedi l'accesso a livello di progetto.
resource "google_project_iam_member" "example_iam_member" { project = "PROJECT_ID" role = "roles/cloudkms.cryptoKeyEncrypterDecrypter" member = "serviceAccount:service-PROJECT_NUMBER@gcp-sa-gkebackup.iam.gserviceaccount.com" }
Sostituisci quanto segue:
PROJECT_ID
: l'ID del progetto a cui vuoi concedere l'accesso.PROJECT_NUMBER
: il numero del progetto a cui vuoi concedere l'accesso.
Concedere l'accesso a livello di chiave
Segui queste istruzioni per concedere l'accesso a livello di singola chiave.
Console
Nella console Google Cloud , vai alla pagina Gestione delle chiavi.
Fai clic sul nome del keyring.
Fai clic sul nome della chiave.
Fai clic sulla scheda Autorizzazioni.
Fai clic su Concedi accesso.
Nel campo Nuove entità, inserisci l'indirizzo email del account di servizio.
Dall'elenco Seleziona un ruolo, seleziona il ruolo Autore crittografia/decrittografia CryptoKey Cloud KMS.
Fai clic su Salva.
gcloud
Concedi l'accesso a livello di singola chiave.
gcloud kms keys add-iam-policy-binding KEY_NAME \ --keyring KEY_RING \ --location LOCATION \ --member "serviceAccount:service-PROJECT_NUMBER@gcp-sa-gkebackup.iam.gserviceaccount.com" \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter
Sostituisci quanto segue:
KEY_NAME
: il nome della chiave.KEY_RING
: il nome delle chiavi automatizzate che contengono la chiave.LOCATION
: la posizione di Cloud KMS delle chiavi automatizzate.PROJECT_NUMBER
: il numero del progetto a cui vuoi concedere l'accesso.
Terraform
Concedi l'accesso a livello di singola chiave.
resource "google_kms_crypto_key_iam_member" "crypto_key_iam_member" { crypto_key_id = "projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME" role = "roles/cloudkms.cryptoKeyEncrypterDecrypter" member = "serviceAccount:service-PROJECT_NUMBER@gcp-sa-gkebackup.iam.gserviceaccount.com" }
Sostituisci quanto segue:
PROJECT_ID
: l'ID del progetto a cui vuoi concedere l'accesso.LOCATION
: la posizione di Cloud KMS delle chiavi automatizzate.KEY_RING
: il nome delle chiavi automatizzate che contengono la chiave.KEY_NAME
: il nome della chiave.PROJECT_NUMBER
: il numero del progetto a cui vuoi concedere l'accesso.
Considerazioni e limitazioni sull'utilizzo
Se vuoi eseguire il backup di un volume criptato con CMEK, devi concedere l'accesso alla chiave di questo disco, anche se non abiliti la crittografia CMEK in
BackupPlan
.Le chiavi CMEK devono trovarsi nella stessa regione di
BackupPlan
per garantire che un'interruzione regionale non rimuova l'accesso alla chiave mentre i backup sono ancora accessibili. Tuttavia, questo vincolo non può essere applicato alle chiavi condivise con volumi criptati. Quando sono coinvolti volumi criptati, è possibile che un ripristino non vada a buon fine anche quando è disponibile un backup, perché la chiave di crittografia del disco potrebbe non essere archiviata nella stessa regione del backup.
Utilizzare e gestire le chiavi esterne
Puoi utilizzare Cloud External Key Manager (Cloud EKM) per creare e gestire chiavi esterne. Le chiavi esterne sono puntatori a chiavi che si trovano al di fuori di Google Cloud. Queste chiavi si trovano presso un partner esterno per la gestione delle chiavi supportato. Per ulteriori informazioni, vedi Cloud External Key Manager.
Dopo aver creato una chiave esterna con Cloud EKM, puoi applicarla a un nuovo piano di backup fornendo l'ID della chiave durante la creazione di un nuovo piano di backup. Questa procedura è identica all'applicazione di una chiave Cloud KMS a un nuovo piano di backup.
Puoi utilizzare Key Access Justifications nell'ambito di Cloud EKM. Key Access Justifications ti consente di visualizzare il motivo di ogni richiesta Cloud EKM. Inoltre, in base alla giustificazione fornita, puoi approvare o rifiutare automaticamente una richiesta. Per maggiori informazioni, consulta la panoramica.