Questo documento descrive come utilizzare le chiavi di crittografia gestite dal cliente (CMEK) in Cloud Key Management Service (Cloud KMS) per le istanze Memorystore for Redis. Il documento descrive anche quali dati vengono criptati nello spazio di archiviazione persistente e come si comportano le istanze durante gli eventi del ciclo di vita delle chiavi.
CMEK ti consente di controllare le chiavi crittografiche che proteggono i dati archiviati. Gestendo le tue chiavi in Cloud KMS, ottieni un maggiore controllo su accesso, rotazione e utilizzo delle chiavi, il che ti aiuta a soddisfare requisiti normativi e di conformità rigorosi.
L'implementazione di CMEK fornisce un ulteriore livello di sicurezza e controllo sui tuoi dati permanenti, come backup e file di persistenza. Puoi abilitare CMEK solo su nuove istanze. Non puoi applicare CMEK alle istanze esistenti.
Chi dovrebbe utilizzare CMEK?
Le chiavi CMEK sono destinate alle organizzazioni che dispongono di dati sensibili o regolamentati e richiedono il controllo delle proprie chiavi di crittografia. Per saperne di più sull'utilizzo di CMEK per criptare questi dati, consulta Decidere se utilizzare CMEK.
Crittografia gestita dal cliente
CMEK ti consente di utilizzare le tue chiavi di crittografia per proteggere i dati archiviati nelle istanze. Per criptare questi dati, Memorystore for Redis utilizza chiavi di crittografia dei dati (DEK) gestite da Google e chiavi di crittografia della chiave (KEK) gestite dal cliente.
Puoi avere i seguenti livelli di crittografia:
- Crittografia DEK: le DEK criptano i dati in Memorystore for Redis.
- Crittografia KEK: le KEK criptano le DEK.
Memorystore for Redis utilizza le KEK per criptare le DEK e le DEK per criptare i dati archiviati. Se utilizzi CMEK, puoi gestire le KEK che criptano le DEK nella tua istanza.
Il seguente diagramma mostra come un'istanza utilizza CMEK per criptare i dati. I dati caricati nell'infrastruttura di archiviazione di Google vengono suddivisi in blocchi e ogni blocco viene criptato con una propria DEK. Cloud KMS fornisce la KEK per criptare le DEK e l'infrastruttura di archiviazione di Google distribuisce sia i blocchi di dati criptati sia le DEK criptate nel sistema.

Il seguente diagramma mostra come Memorystore for Redis decripta i dati criptati con CMEK. Per accedere a questi dati criptati, Memorystore for Redis invia una richiesta a Cloud KMS, che gestisce la KEK, per decriptare la DEK. Cloud KMS restituisce quindi la DEK decriptata, che l'istanza utilizza per decriptare i dati archiviati.

Quali dati vengono criptati utilizzando CMEK?
CMEK cripta i seguenti tipi di dati dei clienti archiviati in uno spazio di archiviazione permanente:
- Backup: i backup ti consentono di recuperare i dati a un momento specifico, nonché di esportarli e analizzarli. I backup sono utili anche per ripristino di emergenza, la migrazione dei dati, la condivisione dei dati e gli scenari di conformità.
- Persistenza: Memorystore for Redis supporta la persistenza Redis Database (RDB), che ti consente di salvare snapshot dei tuoi dati in uno spazio di archiviazione durevole.
- Metadati relativi a funzionalità di sicurezza come
AUTHe crittografia in transito. Per saperne di più, consulta Informazioni su Redis AUTH e Informazioni sulla crittografia in transito.
Componenti CMEK
Le sezioni seguenti descrivono i requisiti e i comportamenti degli account di servizio, delle chiavi di crittografia, delle versioni delle chiavi e delle policy dell'organizzazione che compongono l'architettura CMEK.
Service account
Per creare un'istanza abilitata a CMEK, devi concedere il ruolo
roles/cloudkms.cryptoKeyEncrypterDecrypter alaccount di serviziot Memorystore for Redis
che utilizza il seguente formato:
service-PROJECT_NUMBER@cloud-redis.iam.gserviceaccount.com
La concessione di questa autorizzazione consente al account di servizio di richiedere l'accesso alla chiave da Cloud KMS.
Chiavi
In Cloud KMS, devi creare un keyring e poi una chiave di crittografia che utilizzi un algoritmo di crittografia simmetrica. Quando crei un'istanza Memorystore for Redis, selezioni questa chiave per criptare l'istanza. Puoi creare un progetto per le chiavi e le istanze oppure progetti diversi per ciascuno.
La chiave CMEK è disponibile in tutte le località delle istanze Memorystore for Redis. Devi creare il portachiavi e la chiave nella stessa regione in cui vuoi creare l'istanza. Una chiave per una regione multiregionale o globale non funziona. Se le regioni o le località non corrispondono, la richiesta di creazione dell'istanza non va a buon fine.
Per l'ID risorsa della chiave, CMEK utilizza il seguente formato:
projects/CMEK_ENABLED_PROJECT/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME
Per saperne di più su come trovare gli ID risorsa delle chiavi esistenti, consulta Recupero di un ID risorsa di Cloud KMS.
Nella console Google Cloud , un'istanza sospesa mostra un tooltip con un punto esclamativo rosso nella pagina Istanze. Se passi il mouse sopra la descrizione comando,
viene visualizzato lo stato No state. Una volta che la chiave diventa accessibile,
Memorystore for Redis riprende automaticamente l'istanza.
Chiavi esterne
Nell'ambito della tua strategia CMEK, puoi utilizzare chiavi esterne. Per farlo, utilizza Cloud External Key Manager (Cloud EKM) per criptare i dati all'interno di Google Cloud utilizzando chiavi esterne che gestisci.
Quando utilizzi una chiave Cloud EKM, Google non ha alcun controllo sulla disponibilità delle chiavi gestite esternamente. Se una chiave non è disponibile quando crei l'istanza, Memorystore for Redis non la crea. Inoltre, se la chiave esterna non è più disponibile in qualsiasi momento dopo la creazione dell'istanza, Memorystore for Redis sospende l'istanza finché l'accesso non viene ripristinato.
Per ulteriori considerazioni sull'utilizzo di chiavi esterne, vedi Considerazioni.
Versioni delle chiavi
Cloud KMS archivia il materiale della chiave di crittografia che utilizzi per criptare e decriptare i dati in una versione della chiave. Una singola chiave può contenere più versioni. Ogni volta che ruoti una chiave, crei una versione della chiave.
Le sezioni seguenti descrivono il comportamento delle istanze e dei relativi dati protetti durante gli eventi chiave del ciclo di vita, come la disattivazione, l'eliminazione, l'attivazione o il ripristino delle versioni delle chiavi. Le sezioni spiegano anche l'impatto della sostituzione di una chiave Cloud KMS, forniscono indicazioni sulla ricriptazione manuale dei dati e descrivono in dettaglio come importare o esportare i dati per un'istanza abilitata a CMEK.
Disattivazione o eliminazione della versione di una chiave CMEK
Potresti trovarti in situazioni in cui vuoi rendere inaccessibili in modo permanente i dati criptati con CMEK, ad esempio quando stai correggendo una perdita di dati. Per ottenere questa eliminazione dei dati ad alta affidabilità (nota anche come eliminazione della crittografia), elimina la versione della chiave. Per ulteriori informazioni sull'eliminazione delle versioni delle chiavi, consulta Eliminare e ripristinare le versioni delle chiavi.
Se vuoi assicurarti che non ci sia accesso ai dati della tua istanza, disattiva la versione della chiave principale. L'istanza viene sospesa. Inoltre, se una chiave CMEK in uso viene disattivata o eliminata, Memorystore for Redis sospende l'istanza. Ciò include qualsiasi versione precedente della chiave utilizzata dall'istanza.
Per verificare se Memorystore for Redis ha sospeso l'istanza, utilizza una delle seguenti interfacce:
- ConsoleGoogle Cloud : nella pagina Istanze, viene visualizzata una descrizione comando con un punto esclamativo rosso accanto all'istanza. Se passi il mouse sopra la descrizione comando, viene visualizzato lo stato Nessuno stato.
- gcloud CLI: utilizza il comando
gcloud redis instances describe. Controlla il campostate. Un'istanza sospesa non mostra lo statoREADYoREPAIRING.
Sostituzione di una chiave Cloud KMS protetta
Se sostituisci una chiave Cloud KMS protetta con una chiave diversa o una nuova versione della chiave primaria, Memorystore for Redis applica questa modifica solo alle operazioni future.
La sostituzione di una chiave protetta influisce sulle tue risorse nei seguenti modi:
- Backup: Memorystore for Redis esporta i backup in Cloud Storage. Pertanto, le impostazioni di crittografia del bucket di destinazione (non la CMEK dell'istanza) controllano la modalità di crittografia dei dati esportati.
- Persistenza: la volta successiva che l'istanza viene riavviata o viene eseguita una manutenzione, viene utilizzata la nuova chiave.
- Cache principale: la sostituzione di questa chiave non ha alcun impatto. CMEK non cripta i dati in memoria perché non sono considerati dati a riposo.
Ricrittografare manualmente i dati protetti da CMEK
Memorystore for Redis non supporta il rewrapping on demand dei dati esistenti inattivi. Non puoi attivare manualmente un processo per utilizzare una nuova versione della chiave per criptare nuovamente i backup esistenti o i file di persistenza attivi. Tuttavia, puoi utilizzare la nuova versione della chiave per criptare i dati appena scritti.
Importazione o esportazione di dati per un'istanza abilitata per CMEK
Se vuoi che i dati esportati rimangano protetti da una CMEK, devi configurare la CMEK nel bucket Cloud Storage di destinazione prima di esportare i dati. Se i tuoi dati sono già archiviati in un'istanza abilitata per CMEK, non esistono requisiti o limitazioni speciali per l'importazione di questi dati in una nuova istanza. Per saperne di più, consulta Informazioni sull'importazione e l'esportazione dei dati.
Abilitazione o ripristino della versione della chiave CMEK primaria
Se abiliti o ripristini la versione della chiave primaria, Memorystore for Redis riprende automaticamente l'istanza.
Vincoli delle policy dell'organizzazione
Memorystore for Redis supporta i vincoli dei criteri dell'organizzazione per CMEK. Utilizzando questi vincoli, puoi applicare la protezione CMEK alle tue istanze e limitare le chiavi Cloud KMS che puoi utilizzare per questa protezione.
Puoi configurare i seguenti vincoli dei criteri dell'organizzazione:
constraints/gcp.restrictNonCmekServices: utilizza questo vincolo per applicare la protezione CMEK alle tue istanze. Se l'API Memorystore for Redis si trova nell'elenco dei servizi dei criteriDenyper questo vincolo, non puoi creare istanze non protette da CMEK.constraints/gcp.restrictCmekCryptoKeyProjects: utilizza questo vincolo per limitare le chiavi Cloud KMS che puoi utilizzare per la protezione CMEK. Se configuri questo vincolo, le istanze che utilizzano la crittografia CMEK devono utilizzare una chiave di un progetto, una cartella o un'organizzazione consentiti.
Poiché sia Memorystore for Redis che Memorystore for Redis Cluster
condividono lo stesso endpoint (redis.googleapis.com), non puoi applicare CMEK per
le istanze indipendentemente dai cluster in Memorystore for Redis Cluster.
Per saperne di più sui vincoli delle policy dell'organizzazione correlati a CMEK che Google gestisce per Memorystore for Redis, consulta Vincoli delle policy dell'organizzazione.
Prezzi
Memorystore for Redis fattura un'istanza abilitata a CMEK come qualsiasi altra istanza; non sono previsti costi aggiuntivi. Per ulteriori informazioni, consulta la pagina Prezzi di Memorystore for Redis.
Per gestire le chiavi CMEK, utilizzi l'API Cloud KMS. Quando crei un'istanza con CMEK, Memorystore utilizza la chiave periodicamente per criptare i dati.
Cloud KMS ti addebita il costo della chiave e delle operazioni di crittografia e decriptazione quando Memorystore for Redis utilizza la chiave. Per ulteriori informazioni, consulta la pagina Prezzi di Cloud KMS.
Limitazioni
Quando utilizzi CMEK con Memorystore for Redis, si applicano le seguenti limitazioni:
- Non puoi abilitare CMEK su un'istanza esistente.
- La chiave, il portachiavi e l'istanza devono trovarsi nella stessa regione.
- Devi utilizzare l'algoritmo di crittografia simmetrica per la chiave.
- Le velocità di crittografia e decrittografia di Cloud KMS sono soggette a una quota.
Passaggi successivi
- Scopri di più su CMEK.
- Scopri come migliorare la sicurezza dei dati utilizzando CMEK.
- Scopri di più sui backup.
- Scopri di più sulla persistenza.