Best practice per l'utilizzo dei CMEK

Questa pagina illustra le best practice per configurare la crittografia a riposo con le chiavi di crittografia gestite dal cliente (CMEK) sulle tue risorse. Trusted Cloud Questa guida è rivolta ad architetti cloud e team di sicurezza e illustra le best practice e le decisioni che devi prendere durante la progettazione dell'architettura CMEK.

Questa guida presuppone che tu abbia già dimestichezza con Cloud Key Management Service (Cloud KMS) e le chiavi di crittografia gestite dal cliente.

Decidere se utilizzare CMEK

Ti consigliamo di utilizzare CMEK per criptare i dati at-rest nei Trusted Cloud servizi se hai bisogno di una delle seguenti funzionalità:

  • Possiedi le tue chiavi di crittografia.

  • Controlla e gestisci le tue chiavi di crittografia, inclusa la scelta della posizione, del livello di protezione, della creazione, del controllo dell'accesso, della rotazione, dell'utilizzo e della distruzione.

  • Genera il materiale della chiave in Cloud KMS o importa il materiale della chiave gestito al di fuori di Trusted Cloud.

  • Imposta le norme relative a dove devono essere utilizzate le chiavi.

  • Eliminare in modo selettivo i dati protetti dalle tue chiavi in caso di offboarding o per risolvere gli eventi di sicurezza (crypto-shredding).

  • Crea e utilizza chiavi univoche per un cliente, stabilendo un confine criptato per i tuoi dati.

  • Registra l'accesso amministrativo e ai dati alle chiavi di crittografia.

  • Soddisfare le normative attuali o future che richiedono uno di questi obiettivi.

Se non hai bisogno di queste funzionalità, valuta se la crittografia predefinita in stato di riposo con Google Cloud-powered keys è appropriata per il tuo caso d'uso. Se scegli di utilizzare solo la crittografia predefinita, puoi interrompere la lettura di questa guida.

Progetta l'architettura CMEK

Quando progetti un'architettura CMEK, devi considerare la configurazione delle chiavi che utilizzerai e la modalità di gestione di queste chiavi. Queste decisioni influiscono sul costo, sul sovraccarico operativo e sulla facilità di implementazione di funzionalità come la crittografia distruttiva.

Le sezioni seguenti illustrano i consigli per ogni scelta di design.

Utilizza un progetto di chiavi CMEK centralizzato per ogni ambiente

Ti consigliamo di utilizzare un progetto di chiavi CMEK centralizzato per ogni cartella dell'ambiente. Non creare risorse criptate con CMEK nello stesso progetto in cui gestisci le chiavi Cloud KMS. Questo approccio aiuta a impedire la condivisione delle chiavi di crittografia tra gli ambienti e a consentire la separazione delle responsabilità.

Il seguente diagramma illustra questi concetti nel design consigliato:

  • Ogni cartella dell'ambiente ha un progetto di chiavi Cloud KMS gestito distintamente dai progetti di applicazione.
  • I keyring e le chiavi Cloud KMS vengono configurati nel progetto chiavi Cloud KMS e queste chiavi vengono utilizzate per criptare le risorse nei progetti di applicazione.
  • I criteri Identity and Access Management (IAM) vengono applicati a progetti o cartelle per consentire la separazione dei compiti. Il principale che gestisce le chiavi Cloud KMS nel progetto chiavi Cloud KMS non è lo stesso che utilizza le chiavi di crittografia nei progetti di applicazione.

Struttura di progetto e cartella Cloud KMS consigliata

Crea keyring Cloud KMS per ogni località

Devi creare keyring Cloud KMS nelle località in cui esegui il deployment delleTrusted Cloud risorse criptate con CMEK.

  • Le risorse regionali e zonali devono utilizzare un keyring e un CMEK nella stessa regione della risorsa o nella località global.
  • Le risorse globali devono utilizzare un keyring e un CMEK nella località global.

L'applicazione delle chiavi regionali è un aspetto di una strategia di regionalizzazione dei dati. Se fornisci l'utilizzo di chiavi e keyring in una regione definita, fornisci anche l'utilizzo di risorse che devono corrispondere alla regione del keyring.

Per i carichi di lavoro che richiedono funzionalità di alta disponibilità o di ripristino dei disastri in più località, è tua responsabilità valutare se il tuo carico di lavoro è resiliente nel caso in cui Cloud KMS non sia disponibile in una determinata regione. Ad esempio, un disco permanente Compute Engine criptato con una chiave Cloud KMS della regione A non può essere ricreato nella regione B in uno scenario di disaster recovery in cui la regione A non è disponibile. Per ridurre il rischio di questo scenario, puoi pianificare la crittografia di una risorsa con chiavi global.

Scegli una strategia di granularità delle chiavi

La granularità si riferisce alla scala e all'ambito dell'utilizzo previsto di ogni chiave. Ad esempio, una chiave che protegge diverse risorse è considerata meno granulare rispetto a una chiave che protegge una sola risorsa.

Le chiavi Cloud KMS utilizzate per la CMEK devono essere provisionate in anticipo prima di creare una risorsa che verrà criptata con la chiave, ad esempio un disco permanente Compute Engine. Puoi scegliere di creare chiavi molto granulari per le singole risorse o chiavi meno granulari per il riutilizzo tra le risorse in modo più generale.

Sebbene non esista uno schema universalmente corretto, valuta i seguenti compromessi dei diversi schemi:

Chiavi ad alta granularità, ad esempio una chiave per ogni singola risorsa

  • Maggiore controllo per disattivare in sicurezza le versioni delle chiavi: la disattivazione o l'eliminazione di una versione della chiave utilizzata per un ambito ristretto comporta un rischio inferiore di influire su altre risorse rispetto alla disattivazione o all'eliminazione di una chiave condivisa. Ciò significa anche che l'utilizzo di chiavi altamente granulari contribuisce a ridurre il potenziale impatto della compromissione di una chiave rispetto all'utilizzo di chiavi a bassa granularità.
  • Costo: l'utilizzo di chiavi granulari richiede la gestione di più versioni attive rispetto a una strategia che utilizza chiavi con una granularità inferiore. Una maggiore granularità delle chiavi richiede un numero maggiore di versioni attive, con costi aggiuntivi.
  • Overhead operativo: l'utilizzo di chiavi altamente granulari potrebbe richiedere un impegno amministrativo o strumenti aggiuntivi per l'automazione per il provisioning di un gran numero di risorse Cloud KMS e per gestire i controlli di accesso per gli agenti di servizio in modo che possano utilizzare solo le chiavi appropriate.

Chiavi a bassa granularità, ad esempio una chiave per ogni applicazione, per ogni regione e per ogni ambiente

  • È necessario prestare attenzione per disattivare in sicurezza le versioni delle chiavi: la disattivazione o l'eliminazione di una versione della chiave utilizzata per un ambito ampio richiede più attenzione rispetto alla disattivazione o all'eliminazione di una chiave altamente granulare. Prima di disattivare la vecchia versione della chiave, devi assicurarti che tutte le risorse criptate da quella versione vengano criptate di nuovo in modo sicuro con una nuova versione. Ciò significa anche che l'utilizzo di chiavi a bassa granularità può aumentare l'impatto potenziale della compromissione di una chiave rispetto all'utilizzo di chiavi ad alta granularità.
  • Costo: l'utilizzo di chiavi meno granulari richiede la creazione di meno versioni di chiavi, il che comporta costi inferiori.
  • Overhead operativo:puoi definire e preconfigurare un numero noto di chiavi con meno impegno per garantire controlli di accesso appropriati.

Scegliere il livello di protezione per le chiavi

Quando crei una chiave, è tua responsabilità selezionare il livello di protezione appropriato per ogni chiave in base ai tuoi requisiti per i dati e i carichi di lavoro criptati con CMEK. Le seguenti domande possono aiutarti nella valutazione:

  1. Hai bisogno di una delle funzionalità CMEK? Puoi esaminare le funzionalità elencate in Decidere se utilizzare CMEK in questa pagina.

    • In questo caso, vai alla domanda successiva.
    • In caso contrario, ti consigliamo di utilizzare la S3NS crittografia predefinita.
  2. Hai bisogno di una certificazione FIPS 140-2 di livello 2 o 3 o che il materiale della chiave venga archiviato al di fuori di Trusted Cloud?

Se possibile, utilizza il materiale della chiave generato da Trusted Cloud

Questa sezione non si applica alle chiavi Cloud EKM.

Quando crei una chiave, devi consentire a Cloud KMS di generare il materiale della chiave per te o importare manualmente il materiale della chiave generato al di fuori di Trusted Cloud. Se possibile, ti consigliamo di scegliere l'opzione generata. Questa opzione non espone il materiale della chiave non elaborato al di fuori di Cloud KMS e crea automaticamente nuove versioni della chiave in base al periodo di rotazione della chiave scelto. Se hai bisogno dell'opzione per importare il tuo materiale per le chiavi, ti consigliamo di valutare le seguenti considerazioni operative e i rischi dell'utilizzo dell'approccio BYOK (Bring Your Own Key):

  • Puoi implementare l'automazione per importare in modo coerente le nuove versioni delle chiavi? Sono incluse sia le impostazioni Cloud KMS per limitare le versioni delle chiavi all'importazione sia l'automazione al di fuori di Cloud KMS per generare e importare in modo coerente il materiale della chiave. Qual è l'impatto se l'automazione non riesce a creare una nuova versione della chiave al momento previsto?
  • Come intendi archiviare o mettere in custodia in modo sicuro il materiale della chiave originale?
  • Come puoi ridurre il rischio che il processo di importazione delle chiavi lasci trapelare il materiale della chiave non elaborato?
  • Quali sarebbero le conseguenze della reimportazione di una chiave eliminata in precedenza perché il materiale della chiave non elaborato è stato conservato al di fuori di Trusted Cloud?
  • Il vantaggio dell'importazione autonoma del materiale chiave giustifica l'aumento del costo operativo e del rischio?

Scegli lo scopo e l'algoritmo della chiave più adatti alle tue esigenze

Quando crei una chiave, devi selezionare lo scopo e l'algoritmo sottostante per la chiave. Per i casi d'uso CMEK, è possibile utilizzare solo chiavi con lo scopo ENCRYPT_DECRYPT simmetrico. Questo scopo della chiave utilizza sempre l'algoritmoGOOGLE_SYMMETRIC_ENCRYPTION, che utilizza chiavi Advanced Encryption Standard (AES-256) a 256 bit in modalità Galois Counter (GCM), con padding dei metadati interni di Cloud KMS. Quando utilizzi Autokey, queste impostazioni vengono applicate automaticamente.

Per altri casi d'uso, come la crittografia lato client, esamina gli scopi e gli algoritmi delle chiavi disponibili per scegliere l'opzione più appropriata per il tuo caso d'uso.

Scegli un periodo di rotazione

Ti consigliamo di valutare il periodo di rotazione delle chiavi appropriato per le tue esigenze. La frequenza di rotazione delle chiavi dipende dai requisiti degli tuoi carichi di lavoro in base alla sensibilità o alla conformità. Ad esempio, la rotazione delle chiavi potrebbe essere obbligatoria almeno una volta all'anno per soddisfare determinati standard di conformità oppure potresti scegliere un periodo di rotazione più frequente per i carichi di lavoro altamente sensibili.

Dopo aver ruotato una chiave simmetrica, la nuova versione viene contrassegnata come versione della chiave primaria e viene utilizzata per tutte le nuove richieste per proteggere le informazioni. Le vecchie versioni delle chiavi rimangono disponibili per la decriptazione dei dati criptati in precedenza protetti con quella versione. Quando ruoti una chiave, i dati criptati con le versioni precedenti della chiave non vengono criptati di nuovo automaticamente.

La rotazione frequente delle chiavi contribuisce a limitare il numero di messaggi criptati con la stessa versione della chiave, il che contribuisce a ridurre il rischio e le conseguenze della compromissione di una chiave.

Applica i controlli di accesso appropriati

Ti consigliamo di prendere in considerazione i principi del privilegio minimo e della separazione dei compiti quando pianifichi i controlli di accesso. Le sezioni seguenti illustrano questi consigli.

Applica il principio del privilegio minimo

Quando assegni l'autorizzazione per la gestione dei CMEK, tieni presente il principio del privilegio minimo e concedi le autorizzazioni minime necessarie per eseguire un'attività. Ti consigliamo vivamente di evitare di utilizzare i ruoli di base. Assegna invece ruoli Cloud KMS predefiniti per ridurre i rischi di incidenti di sicurezza relativi all'accesso con privilegi in eccesso.

Pianifica la separazione dei compiti

Mantieni identità e autorizzazioni separate per chi amministra le chiavi di crittografia e per chi le utilizza. Lo standard NIST SP 800-152 definisce una separazione dei compiti tra l'ufficiale responsabile della crittografia che attiva e gestisce i servizi di un sistema di gestione delle chiavi di crittografia e un utente che utilizza queste chiavi per criptare o decriptare le risorse.

Quando utilizzi CMEK per gestire la crittografia a riposo con i Trusted Cloud servizi, il ruolo IAM per l'utilizzo delle chiavi di crittografia viene assegnato all'agente di servizio del Trusted Cloud servizio, non al singolo utente. Ad esempio, per creare oggetti in un bucket Cloud Storage criptato, un utente deve disporre solo del ruolo IAM roles/storage.objectCreator, mentre l'agente di servizio Cloud Storage nello stesso progetto (ad esempio service-PROJECT_NUMBER@gs-project-accounts.s3ns-system.iam.gserviceaccount.com) deve disporre del ruolo IAM roles/cloudkms.cryptoKeyEncrypterDecrypter.

La tabella seguente elenca i ruoli IAM tipicamente associati a ciascuna funzione lavorativa:

Ruolo IAM Descrizione Designazione NIST SP 800-152
roles/cloudkms.admin Fornisce l'accesso alle risorse Cloud KMS, ad eccezione dell'accesso a tipi di risorse e operazioni crittografiche con limitazioni. Funzionariato per la crittografia
roles/cloudkms.cryptoKeyEncrypterDecrypter Offre la possibilità di utilizzare le risorse Cloud KMS solo per le operazioni encrypt e decrypt. Utente del sistema di gestione delle chiavi di crittografia
roles/cloudkms.viewer Abilita le operazioni get e list. Amministratore di controllo

Applicare CMEK in modo coerente

Le sezioni seguenti descrivono controlli aggiuntivi per contribuire ad attenuare i rischi, come l'utilizzo incoerente delle chiavi o l'eliminazione o la distruzione accidentale.

Applicare i pignoramenti del progetto

Ti consigliamo di proteggere i progetti con blocchi per evitare l'eliminazione accidentale. Quando viene applicato un blocco del progetto, l'eliminazione del progetto della chiave Cloud KMS viene bloccata fino alla rimozione del blocco.

Richiedere chiavi CMEK

Ti consigliamo di applicare l'utilizzo di CMEK nell'ambiente utilizzando i vincoli delle norme dell'organizzazione.

Utilizza constraints/gcp.restrictNonCmekServices per bloccare le richieste di creazione di determinati tipi di risorse senza specificare una chiave CMEK.

Richiedere una durata minima per l'eliminazione pianificata

Ti consigliamo di impostare una durata minima per Pianificata per l'eliminazione. La distruzione delle chiavi è un'operazione irreversibile che può comportare la perdita di dati. Per impostazione predefinita, Cloud KMS utilizza una durata pianificata per l'eliminazione (a volte chiamata periodo di eliminazione temporanea) di 30 giorni prima che il materiale della chiave venga distrutto in modo irreversibile. In questo modo hai un po' di tempo per recuperare una chiave in caso di distruzione accidentale. Tuttavia, è possibile per un utente con il ruolo di amministratore Cloud KMS creare una chiave con una durata pianificata per l'eliminazione minima di 24 ore, che potrebbe non essere sufficiente per rilevare un problema e ripristinare la chiave. La durata Prevista per l'eliminazione può essere impostata solo durante la creazione della chiave.

Quando una chiave è prevista per l'eliminazione, non può essere utilizzata per le operazioni di crittografia e tutte le richieste di utilizzo della chiave non vanno a buon fine. Durante questo periodo, monitora i log di controllo per verificare che la chiave non sia in uso. Se vuoi utilizzare di nuovo la chiave, devi ripristinarla prima del termine del periodo prevista per la distruzione.

Per garantire che tutte le chiavi create rispettino una durata minima pianificata per l'eliminazione, ti consigliamo di configurare il vincolo dei criteri dell'organizzazione constraints/cloudkms.minimumDestroyScheduledDuration con un minimo di 30 giorni o con la durata che preferisci. Questo criterio dell'organizzazione impedisce agli utenti di creare chiavi con una durata pianificata per l'eliminazione inferiore al valore specificato nel criterio.

Applica i livelli di protezione consentiti per i CMEK

Ti consigliamo di applicare i requisiti per i livelli di protezione delle chiavi in modo coerente nell'ambiente utilizzando i vincoli dei criteri dell'organizzazione.

Utilizza constraints/cloudkms.allowedProtectionLevels per imporre che le nuove chiavi, le versioni delle chiavi e i job di importazione debbano utilizzare i livelli di protezione che consenti.

Configura i controlli di rilevamento per i CMEK

Trusted Cloud fornisce vari controlli di rilevamento per i CMEK. Le sezioni che seguono illustrano come attivare e utilizzare questi controlli pertinenti per Cloud KMS.

Attivare e aggregare i log di controllo

Ti consigliamo di aggregare gli audit log delle attività amministrative di Cloud KMS (insieme agli audit log delle attività amministrative per tutti i servizi) in una posizione centralizzata per tutte le risorse della tua organizzazione. In questo modo, un team di sicurezza o un revisore può esaminare contemporaneamente tutte le attività relative alla creazione o alla modifica delle risorse Cloud KMS. Per guidance sulla configurazione dei sink dei log aggregati, consulta Aggregare e archiviare i log dell'organizzazione.

Se vuoi, puoi attivare i log di accesso ai dati per registrare le operazioni che utilizzano le chiavi, incluse le operazioni di crittografia e decrittografia. Quando utilizzi le chiavi CMEK, questo può generare un volume di log considerevole e influire sui costi perché ogni operazione di ogni servizio che utilizza le chiavi CMEK creerà log di accesso ai dati. Prima di attivare i log di accesso ai dati, ti consigliamo di definire un caso d'uso chiaro per i log aggiuntivi e di valutare l'aumento dei costi di registrazione.

Valuta i tuoi requisiti di conformità

I diversi framework di conformità hanno requisiti diversi per la crittografia e la gestione delle chiavi. Un framework di conformità in genere definisce i principi e gli scopi di alto livello della gestione delle chiavi di crittografia, ma non è prescrittivo in merito al prodotto o alla configurazione specifici che garantiscono la conformità. È tua responsabilità comprendere i requisiti del tuo framework di conformità e in che modo i tuoi controlli, inclusa la gestione delle chiavi, possono soddisfarli.

Per indicazioni su come i Trusted Cloud servizi possono aiutarti a soddisfare i requisiti di diversi framework di conformità, consulta la seguente risorsa:

Riepilogo delle best practice

La tabella seguente riassume le best practice consigliate in questo documento:

Argomento Attività
Decidere se utilizzare CMEK Utilizza CMEK se hai bisogno di una delle funzionalità attivate da CMEK.
Progetti di chiavi Cloud KMS Utilizza un progetto di chiavi centralizzato per ogni ambiente. Non creare risorse Cloud KMS nello stesso progetto delle Trusted Cloud risorse protette dalle chiavi.
Raccolte di chiavi Cloud KMS Crea chiavi automatizzate Cloud KMS per ogni località in cui vuoi proteggere le risorse Trusted Cloud.
Granularità delle chiavi Scegli un pattern di granularità delle chiavi che sia in grado di soddisfare le tue esigenze in termini di tolleranza al rischio, costi e overhead operativo.
Livello di protezione Scegli Cloud EKM se il materiale delle chiavi deve essere archiviato al di fuori di Trusted Cloud o se hai bisogno di una certificazione FIPS 140-2 di livello 2 o 3. In caso contrario, scegli le chiavi software. Consulta le linee guida per selezionare un livello di protezione.
Materiale chiave Per il materiale della chiave ospitato su Trusted Cloud, utilizza il materiale della chiave generato da Trusted Cloud, se possibile. Se utilizzi materiale chiave importato, implementa automazioni e procedure per mitigare i rischi.
Scopo e algoritmo della chiave Tutte le chiavi CMEK devono utilizzare lo scopo della chiave simmetrica ENCRYPT_DECRYPT e l'algoritmo GOOGLE_SYMMETRIC_ENCRYPTION.
Periodo di rotazione Utilizza la rotazione automatica delle chiavi per assicurarti che vengano ruotate in base alla programmazione. Scegli e applica un periodo di rotazione che soddisfi le tue esigenze, idealmente non meno di una volta all'anno. Utilizza una rotazione delle chiavi più frequente per i carichi di lavoro sensibili.
Principio del privilegio minimo Concedi i ruoli predefiniti più limitati che consentono ai tuoi principali di completare le loro attività. Non utilizzare i ruoli di base.
Separazione dei compiti Mantieni autorizzazioni separate per gli amministratori delle chiavi e per i principali che utilizzano le chiavi.
Ippigioni del progetto Utilizza i blocchi dei progetti per evitare l'eliminazione accidentale dei progetti delle chiavi.
Richiedi CMEK Utilizza il vincolo constraints/gcp.restrictNonCmekServices.
Richiedere una durata minima per l'eliminazione pianificata Utilizza il vincolo constraints/cloudkms.minimumDestroyScheduledDuration.
Applica i livelli di protezione consentiti per i CMEK Utilizza il vincolo constraints/cloudkms.allowedProtectionLevels.
Attivare e aggregare gli audit log Audit log delle attività amministrative aggregate per tutte le risorse della tua organizzazione. Valuta se attivare la registrazione delle operazioni che utilizzano le chiavi.
Valutare i requisiti di conformità Esamina l'architettura Cloud KMS e confrontala con eventuali requisiti di conformità a cui devi attenerti.