Configurare CMEK per i bucket di log

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

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

Panoramica

Per impostazione predefinita, Cloud Logging cripta i contenuti archiviati inattivi dei clienti. I dati archiviati nei bucket di log da Logging vengono criptati utilizzando chiavi di crittografia delle chiavi, un processo noto come crittografia dell'involucro. L'accesso ai dati di log richiede l'accesso a queste chiavi di crittografia delle chiavi, che Google Cloud gestisce per tuo conto senza che tu debba fare nulla.

La tua organizzazione potrebbe avere requisiti di crittografia avanzati, normativi o relativi alla conformità che la nostra crittografia at-rest predefinita non fornisce. Per soddisfare i requisiti della tua organizzazione, puoi gestire le chiavi di crittografia che proteggono i tuoi dati anziché lasciare che sia Google Cloud a farlo.

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

Per la crittografia simmetrica, la rotazione periodica e automatica delle chiavi è una pratica di sicurezza consigliata. Per ulteriori informazioni, consulta la sezione Rotazione delle chiavi.

Prerequisiti

Completa i seguenti passaggi:

  1. Esistono alcune limitazioni per l'utilizzo di CMEK. Prima di creare un bucket di log con CMEK abilitata, consulta le limitazioni.

  2. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  3. Configura il progetto Google Cloud in cui prevedi di creare le chiavi:

    1. Per ottenere le autorizzazioni necessarie per creare le chiavi, chiedi all'amministratore di concederti il ruolo IAM Amministratore Cloud KMS (roles/cloudkms.admin) nel progetto o in una risorsa principale. Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.

      Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

    2. Abilita l'API Cloud KMS.

    3. Crea un keyring e le chiavi.

      Cloud Logging ti consente di utilizzare una chiave da qualsiasi regione. Tuttavia, quando crei un bucket di log, la posizione del bucket deve corrispondere a quella della chiave. Per informazioni sulle regioni supportate, consulta quanto segue:

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

  4. Assicurati di disporre delle seguenti autorizzazioni di Cloud Logging nel progetto Google Cloud in cui prevedi di creare bucket di log:

    • logging.settings.get
    • logging.buckets.get
    • logging.buckets.list
    • logging.buckets.create
    • logging.buckets.update

Attivare CMEK

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

Determina l'ID account di servizio

Per determinare l'ID account di servizio associato alla risorsa Google Cloud per la quale verrà applicato il CMEK, svolgi i seguenti passaggi:

  1. Esegui il seguente gcloud logging settings describe comando:

    gcloud logging settings describe --project=BUCKET_PROJECT_ID
    

    Prima di eseguire il comando precedente, esegui la seguente sostituzione:

    • BUCKET_PROJECT_ID: il nome del progetto Google Cloud in cui hai intenzione di creare il bucket dei log.

    Il comando precedente genera un account di servizio per la risorsa specificata, se non esiste già, 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.

  2. Se il campo KMS_SERVICE_ACCT_NAME ha il formato cmek-pPROJECT_NUMBER, e se utilizzi i Controlli di servizio VPC o se attivi la condivisione limitata dei domini, devi determinare se è necessario eseguire la migrazione dell'account di servizio CMEK. Per informazioni su quando devi eseguire la migrazione e sulla procedura da seguire, consulta Risolvere i problemi relativi a VPC Service Controls e alla condivisione con restrizioni per il dominio.

Assegna il ruolo di Encrypter/Decrypter

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

Prima di eseguire il comando precedente, esegui le seguenti sostituzioni:

  • 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. Per informazioni su come ottenere questo identificatore, consulta Identificazione dei progetti.
  • KMS_SERVICE_ACCT_NAME: il nome dell'account di servizio visualizzato nel campo kmsServiceAccountId della risposta del comando gcloud logging settings describe.
  • KMS_KEY_LOCATION: la regione della chiave Cloud KMS.
  • KMS_KEY_RING: il nome della raccolta di chiavi Cloud KMS.
  • KMS_KEY_NAME: Il nome della chiave Cloud KMS. È formattato come segue: projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KMS_KEY_RING/cryptoKeys/KEY.

Crea un bucket di log e fornisci la chiave Cloud KMS

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

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

Prima di eseguire il comando precedente, esegui le seguenti sostituzioni:

  • BUCKET_ID: il nome o l'ID del bucket dei log.
  • LOCATION: la posizione del bucket di log.
  • KMS_KEY_NAME: Il nome della chiave Cloud KMS. È formattato come segue: projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KMS_KEY_RING/cryptoKeys/KEY.
  • BUCKET_PROJECT_ID: il nome del progetto Google Cloud in cui verrà creato il bucket dei log.

Verifica l'abilitazione della chiave

Per verificare di aver creato correttamente un bucket di log con CMEK abilitato, esegui il seguente gcloud logging buckets list comando:

gcloud logging buckets list --project=BUCKET_PROJECT_ID

Prima di eseguire il comando precedente, esegui la seguente sostituzione:

  • BUCKET_PROJECT_ID: il nome del progetto Google Cloud che memorizza il bucket dei log.

Nell'output tabulare viene visualizzata una colonna denominata CMEK. Se il valore della colonna CMEK è TRUE, CMEK è attivato per il bucket dei log.

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

gcloud logging buckets describe BUCKET_ID --location=LOCATION --project=BUCKET_PROJECT_ID

Gestire la chiave Cloud KMS

Le sezioni seguenti descrivono come aggiornare un bucket di log in modo da utilizzare la versione più recente della chiave primaria di una chiave Cloud KMS. Inoltre, descrivono come modificare, revocare l'accesso e disattivare 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, ne viene creata una nuova versione.

Se ruoti una chiave Cloud KMS, la nuova versione della chiave si applica solo ai bucket dei 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 suoi dati.

Ad esempio, supponiamo che tu crei un bucket di log e attivi CMEK, quindi ruoti la chiave Cloud KMS. Il bucket dei log che hai creato non utilizza la nuova versione della chiave, ma continua a proteggere i suoi dati con la versione della chiave contrassegnata come principale al momento della creazione del bucket dei log.

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

  1. Identifica la chiave Cloud KMS corrente per il bucket dei log. Per ulteriori informazioni, vedi Verificare l'attivazione della chiave.
  2. Identifica un'altra chiave Cloud KMS che puoi utilizzare. Se il tuo mazzo di chiavi ha una sola chiave, crea una chiave.
  3. Modifica la chiave Cloud KMS per il bucket dei log impostandola sulla chiave Cloud KMS creata nel passaggio precedente.
  4. Modifica la chiave Cloud KMS per il bucket dei log con la chiave Cloud KMS originale.

Modificare la chiave Cloud KMS

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

gcloud logging buckets update BUCKET_ID --location=LOCATION \
--cmek-kms-key-name=NEW_KMS_KEY_NAME --project=BUCKET_PROJECT_ID
  • BUCKET_ID: il nome o l'ID del bucket dei log.
  • LOCATION: la posizione del bucket di log.
  • NEW_KMS_KEY_NAME: il nome della nuova chiave.
  • BUCKET_PROJECT_ID: il nome del progetto Google Cloud che memorizza il bucket dei log.

Revoca l'accesso alla chiave Cloud KMS

Per revocare l'accesso di Logging alla chiave Cloud KMS in qualsiasi momento, 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. Se revochi l'accesso di Logging a una chiave e hai un set di dati BigQuery collegato, revochi 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 il seguente 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

Prima di eseguire il comando precedente, esegui le seguenti sostituzioni:

  • 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. Per informazioni su come ottenere questo identificatore, consulta Identificazione dei progetti.
  • KMS_SERVICE_ACCT_NAME: il nome dell'account di servizio visualizzato nel campo kmsServiceAccountId della risposta del comando gcloud logging settings describe.
  • KMS_KEY_LOCATION: la regione della chiave Cloud KMS.
  • KMS_KEY_RING: il nome della raccolta di chiavi Cloud KMS.
  • KMS_KEY_NAME: Il nome della chiave Cloud KMS. È formattato come segue: projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KMS_KEY_RING/cryptoKeys/KEY.

Limitazioni

Di seguito sono riportate le limitazioni note.

CMEK disattiva Error Reporting

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

Non è possibile rimuovere CMEK dai bucket dei log

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

Degrado dovuto alla mancata disponibilità della chiave Cloud KMS

Una chiave Cloud KMS è considerata disponibile e accessibile da logging se entrambe le seguenti condizioni sono vere:

  • La chiave è attivata.
  • L'account di servizio Logging dispone delle autorizzazioni di crittografia e decrittografia per la chiave.

Per il logging, ti consigliamo vivamente di assicurarti 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 log nei file di disaster recovery. Quando CMEK è abilitato 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 dei disastri non possono essere scritti per quella risorsa.

La perdita dei file di ripristino dei disastri non influisce sulle normali operazioni di logging. Tuttavia, in caso di disastro dello spazio di archiviazione, Cloud Logging potrebbe non essere in grado di recuperare i log dalle risorse il cui CMEK non è configurato correttamente.

Vincoli di supporto

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

Prestazioni delle query ridotte

Quando una chiave di crittografia gestita dal cliente non è accessibile, Cloud Logging continua a criptare i dati e a archiviarli 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, inizialmente i dati vengono archiviati in uno stato non ottimizzato e le prestazioni delle query potrebbero risentirne.

Degrado dovuto alla mancata disponibilità della chiave Cloud EKM

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

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

Aree geografiche

Quando crei un bucket di log e attivi CMEK, devi utilizzare una chiave la cui regione corrisponde 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 la configurazione di CMEK.

Quote

Per informazioni dettagliate sui limiti di utilizzo di Logging, consulta Quote e limiti.

Risolvere gli errori di configurazione

Per informazioni sulla risoluzione degli errori di configurazione CMEK, consulta Risolvere gli errori di impostazioni CMEK e dell'organizzazione.