Informazioni sulle chiavi di crittografia gestite dal cliente (CMEK)

Questa pagina descrive il funzionamento delle chiavi di crittografia gestite dal cliente (CMEK) con Memorystore for Redis. Per utilizzare subito questa funzionalità, consulta Utilizzo delle chiavi di crittografia gestite dal cliente (CMEK).

CMEK è adatto a me?

Le chiavi di crittografia gestite dal cliente sono destinate alle organizzazioni che hanno dati sensibili o regolamentati che richiedono la gestione delle proprie chiavi di crittografia.

Confronto tra crittografia gestita da Google e crittografia gestita dal cliente

La funzionalità CMEK ti consente di utilizzare le tue chiavi di crittografia per i dati at-rest in Memorystore for Redis. Dopo aver aggiunto le chiavi di crittografia gestite dal cliente, ogni volta che viene eseguita una chiamata API, Memorystore utilizza la tua chiave per accedere ai dati.

Memorystore utilizza chiavi di crittografia dei dati (DEK) e chiavi di crittografia della chiave (KEK) gestite da Google per criptare Memorystore for Redis. Esistono due livelli di crittografia:

  • La DEK cripta i dati.
  • La KEK cripta la DEK.

L'istanza Memorystore archivia la DEK criptata insieme ai dati criptati nel DP e Google gestisce la KEK di Google. Con le chiavi di crittografia gestite dal cliente, crei una chiave che avvolge la KEK di Google. Le chiavi di crittografia gestite dal cliente ti consentono di creare, revocare ed eliminare la KEK.

Le chiavi di crittografia gestite dal cliente vengono gestite tramite l'API Cloud Key Management Service.

I diagrammi seguenti mostrano come funziona la crittografia dei dati at-rest all'interno di un'istanza Memorystore quando si utilizza la crittografia predefinita di Google rispetto alle chiavi di crittografia gestite dal cliente.

Senza CMEK

I dati vengono caricati su Google, poi suddivisi in blocchi e ogni blocco viene criptato con una propria chiave di crittografia dei dati. Le chiavi di crittografia dei dati vengono sottoposte a wrapping utilizzando una chiave di crittografia della chiave. Con la crittografia Google predefinita, la chiave di crittografia della chiave viene recuperata dal Keystore interno di Google. I blocchi criptati e le chiavi di crittografia con wrapping vengono distribuiti nell'infrastruttura di archiviazione di Google.

Con CMEK

I dati vengono caricati su Google, poi suddivisi in blocchi e ogni blocco viene criptato con una propria chiave di crittografia dei dati. Le chiavi di crittografia dei dati vengono sottoposte a wrapping utilizzando una chiave di crittografia della chiave. Con CMEK che utilizza Cloud KMS, la chiave di crittografia della chiave viene recuperata da Cloud KMS. I blocchi criptati e le chiavi di crittografia con wrapping vengono distribuiti nell'infrastruttura di archiviazione di Google.

Quando decripta i dati con wrapping delle chiavi di crittografia gestite dal cliente, Memorystore utilizza la KEK per decriptare la DEK e la DEK non criptata per decriptare i dati a riposo.

Blocco di dati criptato con DEK e archiviato con DEK con wrapping. Una richiesta di annullamento del wrapping della DEK viene inviata allo spazio di archiviazione KMS, che memorizza la KEK non esportabile. KMS Storage restituisce la DEK decriptata.

Quando Memorystore interagisce con le chiavi CMEK?

Operazione Descrizione
Creazione dell'istanza Durante la creazione dell'istanza, la configuri in modo che utilizzi le chiavi di crittografia gestite dal cliente.
Aggiornamento dell'istanza Memorystore controlla la chiave CMEK durante gli aggiornamenti di un'istanza con CMEK abilitato.

Quali dati vengono criptati utilizzando CMEK?

CMEK cripta i seguenti tipi di dati:

  • Dati dei clienti archiviati in uno spazio di archiviazione permanente.
  • Metadati relativi a funzionalità di sicurezza come AUTH e crittografia in transito.

Informazioni sugli account di servizio

Quando crei un'istanza con CMEK, devi concedere il ruolo cloudkms.cryptoKeyEncrypterDecrypter all'account di servizio Memorystore che ha il seguente formato:

  • service-[PROJECT_NUMBER]@cloud-redis.iam.gserviceaccount.com

La concessione di questa autorizzazione consente all'account di servizio di richiedere l'accesso alle chiavi da Cloud KMS.

Per istruzioni su come concedere questa autorizzazione all'account di servizio, consulta Concedere all'account di servizio l'accesso alla chiave.

Informazioni sulle chiavi

In Cloud KMS, devi creare un portachiavi con una chiave di crittografia che utilizzi un algoritmo di crittografia/decrittografia simmetrica. Quando crei una nuova istanza Memorystore, seleziona questa chiave per criptarla. Puoi creare un progetto sia per le chiavi sia per le istanze Memorystore oppure progetti diversi per ciascuno.

La chiave di crittografia gestita dal cliente è disponibile in tutte le località delle istanze Memorystore. La regione della chiave e del portachiavi deve essere impostata sulla stessa regione dell'istanza Memorystore for Redis. Una chiave per più regioni o globale non funziona. Una richiesta di creazione di un'istanza Memorystore non va a buon fine se le regioni non corrispondono.

CMEK per Memorystore è compatibile con Cloud External Key Manager (Cloud EKM).

Le chiavi di crittografia gestite dal cliente utilizzano il seguente formato:

projects/[CMEK_ENABLED_PROJECT]/locations/[REGION]/keyRings/[RING_NAME]/cryptoKeys/[KEYNAME]

Se Memorystore non è in grado di accedere a nessuna versione della chiave attualmente in uso (ad esempio se la disattivi), l'istanza viene arrestata senza indugio. Nella console Google Cloud, un'istanza sospesa mostra una descrizione comando con un punto esclamativo rosso nella pagina Istanze. Quando passi il mouse sopra la descrizione comando, viene visualizzato il messaggio "Nessun stato". Una volta che la chiave diventa di nuovo accessibile, Memorystore riprende automaticamente l'istanza.

Come faccio a rendere i dati con crittografia CMEK definitivamente inaccessibili?

Potresti trovarti in situazioni in cui vuoi distruggere definitivamente i dati criptati con CMEK. Per farlo, devi distruggere la versione della chiave di crittografia gestita dal cliente. Non puoi distruggere il portachiavi o la chiave, ma puoi distruggere le versioni della chiave.

Come faccio a esportare e importare dati da e verso un'istanza con CMEK abilitato?

Se vuoi che i tuoi dati rimangano criptati con una chiave gestita dal cliente durante un'importazione o un'esportazione, devi impostare una chiave di crittografia gestita dal cliente nel bucket Cloud Storage prima di esportarvi i dati.

Non sono previsti requisiti o limitazioni speciali per l'importazione dei dati in una nuova istanza Memorystore se i dati sono stati precedentemente archiviati in un'istanza Memorystore con supporto di CMEK.

Comportamento di distruzione/disattivazione di una versione della chiave CMEK

Se vuoi assicurarti che non venga eseguito alcun accesso ai dati della tua istanza, puoi farlo disattivando la versione della chiave primaria della chiave di crittografia gestita dal cliente. In questo modo, l'istanza verrà arrestata senza indugio. Inoltre, Memorystore arresta un'istanza senza indugio se una chiave di crittografia gestita dal cliente in uso viene disattivata/distrutta. Sono incluse tutte le versioni precedenti delle chiavi ancora in uso da un'istanza Memorystore. Puoi utilizzare gcloud o la console Google Cloud per verificare se l'istanza è sospesa:

Per la console Google Cloud, se l'istanza è sospesa, viene visualizzata una notifica di tooltip rossa accanto all'istanza nella pagina Istanze di Memorystore for Redis. Quando passi il cursore sopra la descrizione comando, viene visualizzato il messaggio "Nessun stato".

Per gcloud, se esegui gcloud beta redis instances describe e non vedi state: READY, state: REPAIRING o qualsiasi altro stato nei metadati dell'istanza, significa che l'istanza è sospesa.

Riattivazione/ripristino di una versione della chiave CMEK in uso

Un'istanza viene de nascosta dopo aver riabilitato/ripristinato una versione della chiave CMEK in uso.

Limitazioni

Quando utilizzi le chiavi di crittografia gestite dal cliente con Memorystore, si applicano le seguenti limitazioni:

  • Non puoi attivare le chiavi di crittografia gestite dal cliente su un'istanza Memorystore esistente.
  • La regione per la chiave, il portachiavi e l'istanza Memorystore deve essere uguale per tutte.
  • Devi utilizzare l'algoritmo di crittografia/decrittografia simmetrica per la chiave.
  • Le tariffe di crittografia e decrittografia di Cloud KMS sono soggette a una quota.

Norme dell'organizzazione CMEK

Memorystore for Redis supporta i vincoli dei criteri dell'organizzazione che possono essere utilizzati per la protezione CMEK.

I criteri possono limitare le chiavi Cloud KMS che possono essere utilizzate per la protezione CMEK.

  • Quando l'API Memorystore for Redis è nell'elenco di servizi delle norme Deny nel vincolo constraints/gcp.restrictNonCmekServices, la creazione di Memorystore for Redis non riesce per le istanze non protette da CMEK.

  • Quando constraints/gcp.restrictCmekCryptoKeyProjects è configurato, Memorystore for Redis crea istanze protette da CMEK che vengono criptate utilizzando una chiave di un progetto, di una cartella o di un'organizzazione consentita.

Per saperne di più sulla configurazione dei criteri dell'organizzazione CMEK, consulta Criteri dell'organizzazione CMEK.