Configura CMEK per i bucket di log

Questo documento fornisce istruzioni per configurare chiavi di crittografia gestite dal cliente (CMEK) per i log archiviati nei bucket di log. Questo documento descrive inoltre come gestire le chiavi e le limitazioni associate all'utilizzo di CMEK.

Puoi configurare CMEK come impostazione di risorsa predefinita per un'organizzazione o una cartella. Se configurato, Cloud Logging garantisce che tutti i nuovi bucket di log nell'organizzazione o nella cartella siano criptati con una chiave gestita dal cliente. Se non fornisci una chiave quando crei il bucket di log, viene utilizzata la chiave predefinita. Per maggiori informazioni, consulta Configurare una CMEK per Cloud Logging.

Panoramica

Per impostazione predefinita, Cloud Logging cripta i contenuti dei clienti archiviati at-rest. I dati archiviati nei bucket di log da Logging vengono criptati mediante chiavi di crittografia delle chiavi, un processo noto come crittografia envelope. L'accesso ai tuoi dati di logging richiede l'accesso alle chiavi di crittografia delle chiavi, che Google gestisce per te senza alcuna azione da parte tua.

La tua organizzazione potrebbe avere requisiti di crittografia avanzati, relativi alla conformità o a livello normativo che non sono previsti dalla nostra crittografia at-rest predefinita. Per soddisfare i requisiti della tua organizzazione, puoi gestire le tue chiavi, anziché lasciare che sia Google a gestire le chiavi di crittografia che proteggono i tuoi dati.

Per informazioni specifiche sull'utilizzo di CMEK, inclusi vantaggi e limitazioni, consulta Chiavi di crittografia gestite dal cliente.

Per la crittografia simmetrica, è consigliabile utilizzare la rotazione periodica e automatica delle chiavi. Per maggiori informazioni, consulta Rotazione della chiave.

Prerequisiti

Procedi con i seguenti passaggi:

  1. L'utilizzo di CMEK presenta alcune limitazioni. Prima di creare un bucket di log con CMEK abilitata, esamina le Limitazioni.

  2. Installa Google Cloud CLI, quindi initialize eseguendo questo comando:

    gcloud init

    Questa guida fornisce istruzioni sull'utilizzo di Google Cloud CLI.

  3. Crea o identifica il progetto Google Cloud in cui vuoi eseguire Cloud KMS.

  4. Per ottenere le autorizzazioni necessarie per creare le chiavi, chiedi all'amministratore di concederti il ruolo IAM Amministratore Cloud KMS (roles/cloudkms.admin) per il progetto o una risorsa padre. Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.

    Potresti anche essere in grado di ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

  5. Assicurati di disporre delle seguenti autorizzazioni Cloud Logging:

    • logging.settings.get
    • logging.buckets.get
    • logging.buckets.list
    • logging.buckets.create
    • logging.buckets.update
  6. Abilita l'API Cloud KMS per il progetto Google Cloud che esegue Cloud KMS.

  7. Crea un keyring e chiavi per il progetto Google Cloud che esegue Cloud KMS.

    Per allineare i domini in errore, devi utilizzare un keyring la cui località corrisponda all'ambito regionale dei tuoi dati:

    Non puoi abilitare CMEK per i bucket di log creati nella regione global.

  8. Identifica i valori delle seguenti variabili:

    • BUCKET_ID è l'identificatore numerico univoco del bucket Logging da creare.
    • BUCKET_PROJECT_ID è il nome del progetto Google Cloud che contiene il nuovo bucket di log.
    • KMS_PROJECT_ID è l'identificatore alfanumerico univoco, composto dal nome del progetto Google Cloud e da un numero assegnato in modo casuale, del progetto Google Cloud che esegue Cloud KMS.
    • KMS_KEY_LOCATION è la regione della chiave Cloud KMS.
    • KMS_KEY_RING è il nome del keyring Cloud KMS.
    • KMS_KEY_NAME con il nome della chiave Cloud KMS. Il formato è il seguente: projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEYRING/cryptoKeys/KEY

    Per informazioni sull'individuazione degli identificatori delle risorse, consulta Identificazione dei progetti.

Attivare CMEK

Dopo aver completato i passaggi prerequisiti, segui queste istruzioni per abilitare CMEK per un singolo bucket di log.

Stabilire l'ID account di servizio

Per determinare l'ID account di servizio associato alla risorsa Google Cloud a cui verrà applicata la CMEK:

  1. Esegui questo comando gcloud logging settings describe:

    gcloud logging settings describe --project=BUCKET_PROJECT_ID
    

    Il comando precedente genera un account di servizio per la risorsa specificata, quando non ne esiste già uno, e restituisce l'ID di quell'account di servizio nel campo kmsServiceAccountId:

    kmsServiceAccountId: KMS_SERVICE_ACCT_NAME@gcp-sa-logging.iam.gserviceaccount.com
    loggingServiceAccountId: SERVICE_ACCT_NAME@gcp-sa-logging.iam.gserviceaccount.com
    name: projects/BUCKET_PROJECT_ID/settings
    

    Il campo kmsServiceAccountId elenca l'account di servizio utilizzato da Cloud Logging per chiamare Cloud Key Management Service. Il formato del campo KMS_SERVICE_ACCT_NAME è service-PROJECT_NUMBER o cmek-pPROJECT_NUMBER.

  2. Se il campo KMS_SERVICE_ACCT_NAME è nel formato cmek-pPROJECT_NUMBER e se utilizzi Controlli di servizio VPC o se abiliti la condivisione limitata del dominio, determina se devi eseguire la migrazione del tuo account di servizio CMEK. Per informazioni su quando è necessario eseguire la migrazione e sui passaggi per eseguire la migrazione, consulta Risolvere i problemi relativi ai Controlli di servizio VPC e alla condivisione limitata per i domini.

Assegna il ruolo Autore crittografia/decrittografia

Quando configuri CMEK a livello di bucket di log, concedi all'account di servizio l'autorizzazione per utilizzare Cloud KMS assegnando il ruolo Autore crittografia/decrittografia CryptoKey Cloud KMS all'account di servizio identificato dal campo kmsServiceAccountId:

gcloud kms keys add-iam-policy-binding \
--project=KMS_PROJECT_ID \
--member serviceAccount:KMS_SERVICE_ACCT_NAME@gcp-sa-logging.iam.gserviceaccount.com \
--role roles/cloudkms.cryptoKeyEncrypterDecrypter \
--location=KMS_KEY_LOCATION \
--keyring=KMS_KEY_RING \
KMS_KEY_NAME

Imposta le variabili nel comando precedente come segue:

  • Sostituisci KMS_SERVICE_ACCT_NAME con il valore kmsServiceAccountId determinato nel passaggio precedente.

  • Sostituisci le altre variabili con i valori che hai stabilito nei passaggi relativi ai prerequisiti.

Crea un bucket di log e fornisci la chiave Cloud KMS

Per creare un bucket di log e abilitare CMEK per il bucket di log, esegui questo comando gcloud logging buckets create:

gcloud logging buckets create BUCKET_ID \
--location=LOCATION \
--cmek-kms-key-name=KMS_KEY_NAME

Verifica abilitazione chiave

Per verificare di aver creato correttamente un bucket di log con CMEK abilitata, esegui questo comando:

gcloud logging buckets list --project=BUCKET_PROJECT_ID

Nella tabella visualizzata viene visualizzata una colonna con l'etichetta CMEK. Se il valore della colonna CMEK è TRUE, CMEK è abilitata per il bucket di log.

Per visualizzare i dettagli relativi a un bucket di log specifico, compresi i dettagli della chiave, esegui questo comando:

gcloud logging buckets describe BUCKET_ID

Gestisci la chiave Cloud KMS

Le sezioni seguenti descrivono come aggiornare un bucket di log per utilizzare la versione più recente della chiave primaria di una chiave Cloud KMS. e come modificare, revocare l'accesso e disabilitare la chiave Cloud KMS.

Ruota la chiave Cloud KMS

Quando crei una chiave Cloud KMS, puoi configurare un periodo di rotazione. Puoi anche ruotare manualmente una chiave Cloud KMS. Ogni volta che una chiave viene ruotata, viene creata una nuova versione della chiave.

Se ruoti una chiave Cloud KMS, la nuova versione della chiave si applica solo ai bucket di log creati dopo la rotazione della chiave. Se la chiave viene utilizzata da un bucket di log esistente, la rotazione della chiave non cambia il modo in cui il bucket di log protegge i propri dati.

Ad esempio, supponi di creare un bucket di log e di abilitare CMEK, quindi di ruotare la chiave Cloud KMS. Il bucket di log che hai creato non utilizza la nuova versione della chiave, ma continua a proteggere i propri dati con la versione della chiave contrassegnata come primaria quando è stato creato il bucket di log.

Per aggiornare un bucket di log in modo che utilizzi la versione della chiave primaria più recente di una chiave Cloud KMS, segui questi passaggi:

  1. Identifica la chiave Cloud KMS attuale per il bucket di log. Per saperne di più, consulta Verificare l'attivazione della chiave.
  2. Identifica un'altra chiave Cloud KMS che puoi utilizzare. Se il keyring ha una sola chiave, scegli Crea una chiave.
  3. Cambia la chiave Cloud KMS per il bucket di log con la chiave Cloud KMS creata nel passaggio precedente.
  4. Cambia la chiave Cloud KMS per il bucket di log con la chiave Cloud KMS originale.

Modifica la chiave Cloud KMS

Per modificare la chiave Cloud KMS associata al tuo bucket di log, crea una chiave e aggiorna le impostazioni CMEK per il bucket di log:

gcloud logging buckets update BUCKET_ID --cmek-kms-key-name=NEW_KMS_KEY_NAME

Revoca l'accesso alla chiave Cloud KMS

Per revocare in qualsiasi momento l'accesso di Logging alla chiave Cloud KMS, rimuovi l'autorizzazione IAM dell'account di servizio configurato per quella chiave.

Se rimuovi l'accesso di Logging a una chiave, l'applicazione della modifica può richiedere fino a un'ora.

Se hai un set di dati BigQuery collegato, BigQuery non può utilizzare questo accesso per applicare la chiave a una nuova tabella BigQuery. Se vuoi utilizzare una chiave nella tabella BigQuery che non è collegata a Logging, segui la documentazione di BigQuery per farlo. Se revochi l'accesso di Logging a una chiave e hai un set di dati BigQuery collegato, revocherai anche l'accesso di BigQuery alla stessa chiave.

Non puoi revocare l'accesso di BigQuery alla chiave del set di dati collegato mantenendo l'accesso di Logging.

Per ulteriori informazioni sull'impatto della revoca dell'accesso, consulta Limitazioni.

Per rimuovere l'accesso di Logging a una chiave, esegui questo comando:

gcloud kms keys remove-iam-policy-binding \
--project=KMS_PROJECT_ID \
--member serviceAccount:KMS_SERVICE_ACCT_NAME@gcp-sa-logging.iam.gserviceaccount.com \
--role roles/cloudkms.cryptoKeyEncrypterDecrypter \
--location=KMS_KEY_LOCATION \
--keyring=KMS_KEY_RING \
KMS_KEY_NAME

Limitazioni

Di seguito sono riportate alcune limitazioni note.

CMEK disattiva Error Reporting

Se vuoi utilizzare Error Reporting, non abilitare le chiavi di crittografia gestite dal cliente (CMEK) nei bucket di log. Per ulteriori informazioni, consulta la sezione Risoluzione dei problemi.

Impossibile rimuovere CMEK dai bucket di log

Non puoi riconfigurare i bucket di log per modificare o rimuovere CMEK.

Riduzione dovuta all'indisponibilità della chiave Cloud KMS

Una chiave Cloud KMS viene considerata disponibile e accessibile da Logging se si verificano entrambe le seguenti condizioni:

  • La chiave è abilitata.
  • L'account di servizio Logging dispone di autorizzazioni di crittografia e decriptazione per la chiave.

Logging consiglia vivamente di garantire che tutte le chiavi siano configurate correttamente e sempre disponibili.

Perdita del ripristino di emergenza

Se si verificano errori critici nell'archiviazione principale di Cloud Logging, Logging esegue il mirroring dei dati di logging nei file di ripristino di emergenza. Quando CMEK è abilitata per una risorsa, ad esempio un'organizzazione Google Cloud, i log appartenenti a quella risorsa sono protetti dalla chiave CMEK configurata. Se la chiave CMEK non è accessibile, i file di ripristino di emergenza non possono essere scritti per quella risorsa.

La perdita dei file di ripristino di emergenza non influisce sulle normali operazioni di logging. Tuttavia, in caso di emergenza nell'archiviazione, Cloud Logging potrebbe non essere in grado di recuperare i log dalle risorse la cui CMEK non è configurata correttamente.

Vincoli di assistenza

L'assistenza clienti Google Cloud non può leggere i log della risorsa se la chiave non è configurata correttamente o non è più disponibile.

Prestazioni delle query ridotte

Quando una chiave di crittografia gestita dal cliente non è accessibile, Cloud Logging continua a criptare i dati e ad archiviare i dati nei bucket di log. Tuttavia, Cloud Logging non può eseguire ottimizzazioni in background su questi dati. Se l'accesso alle chiavi viene ripristinato, i dati diventano disponibili; tuttavia, i dati vengono inizialmente archiviati in uno stato non ottimizzato e le prestazioni delle query potrebbero risentirne.

Riduzione dovuta all'indisponibilità della chiave Cloud EKM

Quando utilizzi una chiave Cloud EKM, Google non ha alcun controllo sulla disponibilità della tua chiave gestita esternamente nel sistema esterno del partner di gestione delle chiavi. Per CMEK a livello di bucket, se una chiave gestita esternamente non è disponibile, Cloud Logging continua ad archiviare i log nei bucket di log, ma gli utenti non possono accedere a questi log.

Per ulteriori considerazioni e potenziali alternative, quando utilizzi chiavi esterne, consulta la documentazione di Cloud External Key Manager.

Aree geografiche

Quando crei un bucket di log e abiliti CMEK, devi utilizzare una chiave la cui regione corrisponda all'ambito regionale dei tuoi dati. Non puoi configurare CMEK per i bucket di log creati nella regione global.

Disponibilità della libreria client

Le librerie client di Logging non forniscono metodi per configurare CMEK.

Quote

Per maggiori dettagli sui limiti di utilizzo di Logging, consulta Quote e limiti.

Risolvere gli errori di configurazione

Per informazioni sulla risoluzione degli errori di configurazione di CMEK, vedi Risolvere i problemi relativi a CMEK e impostazione dell'organizzazione.