Configurare la crittografia dei messaggi in Managed Service per Apache Kafka

Questa pagina descrive come configurare le chiavi di crittografia gestite dal cliente (CMEK) per un cluster Google Cloud Managed Service per Apache Kafka.

Panoramica della crittografia dei messaggi

Per impostazione predefinita, Managed Service per Apache Kafka cripta i messaggi inattivi con Google-owned and Google-managed encryption keys. Non è richiesta alcuna configurazione aggiuntiva.

Se hai bisogno di un maggiore controllo sulle chiavi di crittografia utilizzate per proteggere i dati inattivi di Managed Service per Apache Kafka, puoi impostare una chiave CMEK quando crei il cluster. Le chiavi CMEK sono chiavi di crittografia di tua proprietà. Vengono gestite e archiviate in Cloud Key Management Service (Cloud KMS). Quando configuri un cluster con una CMEK, il servizio utilizza automaticamente questa chiave per criptare tutti i dati del cluster inattivi. L'utilizzo di una CMEK potrebbe comportare costi aggiuntivi, a seconda dei tuoi pattern di utilizzo.

Una chiave CMEK associata a un cluster Managed Service per Apache Kafka è una chiave di crittografia della chiave (KEK). La KEK viene utilizzata per criptare una chiave di crittografia dei dati (DEK). La DEK viene quindi utilizzata per leggere e scrivere i dati inattivi sui dischi permanenti collegati ai broker e i dati nell'archiviazione a livelli in Cloud Storage.

Poiché le risorse Managed Service per Apache Kafka sono regionali, ti consigliamo di creare chiavi CMEK nella stessa regione del cluster Kafka.

Ruoli e autorizzazioni richiesti

Il account di servizio Kafka gestito deve disporre dell'autorizzazione per criptare e decriptare i dati utilizzando una chiave di crittografia gestita dal cliente.

Concedi all'account di servizio il ruolo Autore crittografia/decrittografia CryptoKey Cloud KMS (roles/cloudkms.cryptoKeyEncrypterDecrypter) nella chiave Cloud KMS:

gcloud kms keys add-iam-policy-binding KEY \
  --keyring=KEY_RING \
  --location=LOCATION \
  --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-managedkafka.iam.gserviceaccount.com \
  --role=roles/cloudkms.cryptoKeyEncrypterDecrypter

Sostituisci quanto segue:

  • KEY: il nome della chiave.

  • KEY_RING: il nome delle chiavi automatizzate in cui si trova la chiave.

  • LOCATION: la posizione di Cloud KMS per le chiavi automatizzate.

  • PROJECT_NUMBER: il numero del progetto Google Cloud che contiene il cluster Managed Service per Apache Kafka.

Per saperne di più sulla concessione dei ruoli su una chiave Cloud KMS, consulta Concessione dei ruoli su una risorsa.

Ruota le chiavi

Non puoi modificare la chiave associata a un cluster. Puoi invece ruotare una chiave creando una nuova versione e impostandola come primaria.

Per i dischi collegati ai broker, la nuova KEK diventa effettiva solo dopo il riavvio di un broker. Puoi forzare un riavvio in sequenza dei broker aggiornando la configurazione della capacità di un cluster. Ad esempio, puoi modificare la quantità di RAM del cluster.

Tutti i nuovi file di segmenti di partizione vengono scritti nello spazio di archiviazione a livelli utilizzando la nuova versione della chiave primaria. Dopo la scelta di una nuova versione della chiave primaria, è possibile un ritardo di diversi minuti.

Audit log

Cloud KMS genera log di controllo quando le chiavi vengono attivate, disattivate o utilizzate da Managed Service per Apache Kafka per criptare e decriptare i messaggi. È utile per risolvere i problemi relativi alla disponibilità di pubblicazione o distribuzione.

Gli ID chiave Cloud KMS sono collegati agli audit log per le risorse del cluster Managed Service per Apache Kafka. Managed Service per Apache Kafka non include altre informazioni relative a Cloud KMS nei log di controllo.

Disattivare e riattivare CMEK

Esistono due modi per disattivare CMEK. Scegli uno dei seguenti metodi:

  • Disattiva la chiave Cloud KMS che hai associato al cluster. Questo approccio influisce su tutte le risorse Cloud associate a quella chiave.

  • Revoca il ruolo Autore crittografia/decrittografia CryptoKey dall'agente di servizio Managed Service per Apache Kafka (service-${PROJECT_NUMBER}@gcp-sa-managedkafka.iam.gserviceaccount.com) utilizzando Identity and Access Management (IAM). Questo approccio influisce su tutti i cluster Managed Service per Apache Kafka nel progetto e sui messaggi criptati utilizzando CMEK.

Sebbene nessuna delle due operazioni possa causare la revoca immediata dell'accesso, le modifiche IAM si propagano più rapidamente.

Per ulteriori informazioni, consulta Coerenza delle risorse Cloud KMS e Propagazione della modifica di accesso.

Quando Managed Service for Apache Kafka non riesce ad accedere a una chiave Cloud KMS, la pubblicazione e la distribuzione dei messaggi non vanno a buon fine e vengono visualizzati errori. Per riprendere la pubblicazione e la distribuzione, ripristina l'accesso alla chiave Cloud KMS.

Una volta che la chiave Cloud KMS è accessibile a Managed Service per Apache Kafka, la pubblicazione è disponibile entro 12 ore e la distribuzione dei messaggi riprende entro 2 ore.

Anche se le interruzioni intermittenti di Cloud KMS di durata inferiore a un minuto non interrompono in modo significativo la pubblicazione e la distribuzione, l'indisponibilità prolungata di Cloud KMS ha lo stesso effetto della revoca della chiave.

Limitazioni

  • Non puoi modificare la chiave associata a un cluster. In alternativa, puoi ruotare la chiave creando nuove versioni.

  • Se disabiliti una versione della chiave non principale, i dischi locali continuano a funzionare senza modifiche. Ogni broker scarica la nuova KEK al riavvio. Tuttavia, Cloud Storage non può accedere ai file di segmento dell'argomento criptati utilizzando la versione originale, il che potrebbe rendere impossibile l'utilizzo dei messaggi di questi file di segmento. Potresti non essere in grado di utilizzare i dati precedenti.

  • Se disattivi la versione principale di una chiave, i broker non possono scrivere nuovi file di segmenti nell'archiviazione a livelli, il che aumenta l'utilizzo del disco locale. Inoltre, i riavvii del broker non riusciranno. Un riavvio può essere attivato sia in modo proattivo da te sia da un aggiornamento avviato dal servizio al cluster in qualsiasi momento.

  • Se rimuovi l'accesso a una chiave dall'agente di servizio Managed Service per Apache Kafka, il comportamento è simile a quello che si verifica se disattivi sia la chiave primaria sia le versioni della chiave non primaria.

  • Se elimini una chiave, il cluster viene pianificato per l'arresto e non può essere recuperato.

  • Non puoi richiedere la ricrittografia dei dati archiviati at-rest. La CMEK viene utilizzata come KEK, ma la ricriptazione richiede una modifica delle chiavi di crittografia dei dati.

Passaggi successivi

Apache Kafka® è un marchio registrato di Apache Software Foundation o delle sue affiliate negli Stati Uniti e/o in altri paesi.