Questo documento spiega come configurare le chiavi di crittografia gestite dal cliente (CMEK) per un cluster Google Cloud Managed Service per Apache Kafka.
Managed Service per Apache Kafka cripta i messaggi inattivi con Google-owned and Google-managed encryption keys per impostazione predefinita. Non è necessaria alcuna configurazione aggiuntiva per utilizzare Google-owned and Google-managed encryption keys.
Informazioni su CMEK
Le chiavi CMEK sono chiavi di crittografia di tua proprietà, gestite e archiviate in Cloud Key Management Service (Cloud KMS). Se hai bisogno di un maggiore controllo sulle chiavi di crittografia utilizzate per proteggere i dati inattivi di Managed Service per Apache Kafka, puoi utilizzare le CMEK.
Quando configuri un cluster Managed Service per Apache Kafka con una chiave CMEK, il servizio cripta automaticamente tutti i dati del cluster at-rest utilizzando la chiave specificata. L'utilizzo di Cloud KMS per 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.
Per saperne di più sulla crittografia dei dischi, vedi Informazioni sulla crittografia dei dischi. Per saperne di più sulla crittografia in Cloud Storage, consulta Chiavi di crittografia gestite dal cliente nella documentazione di Cloud Storage.
Ruota le chiavi
Puoi ruotare una chiave creando una nuova versione e impostandola come primaria per la chiave.
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 aver scelto una nuova versione della chiave primaria, è possibile che si verifichi un ritardo di diversi minuti.
Configura il cluster Managed Service per Apache Kafka per CMEK
Puoi configurare CMEK per un cluster Managed Service per Apache Kafka utilizzando la consoleGoogle Cloud o Google Cloud CLI.
Prima di iniziare
Completa le seguenti attività:
Abilita l'API Cloud KMS.
Crea un keyring e una chiave in Cloud KMS. Impossibile eliminare le chiavi e i portachiavi. Poiché le risorse Managed Service per Apache Kafka sono regionali, ti consigliamo di creare chiavi CMEK nella stessa regione in cui si trova il cluster Kafka.
Per istruzioni su come svolgere queste attività, consulta la guida rapida di Cloud KMS.
Ruoli e autorizzazioni richiesti per configurare CMEK
Managed Service per Apache Kafka utilizza un Google Cloud agente di servizio per accedere a Cloud KMS. L'agente di servizio per il tuo progetto Google Cloudviene creato automaticamente dopo la creazione del primo cluster Managed Service per Apache Kafka.
L'agente di servizio viene gestito internamente da Managed Service per Apache Kafka per ogni progetto e non è visibile per impostazione predefinita nella pagina Service account della console Google Cloud .
L'agente di servizio Managed Service per Apache Kafka ha il formato
service-PROJECT_NUMBER@gcp-sa-managedkafka.iam.gserviceaccount.com.
Managed Service per Apache Kafka richiede autorizzazioni specifiche per criptare e decriptare i dati utilizzando CMEK.
Per configurare l'accesso richiesto, completa i seguenti passaggi:
(Facoltativo) Crea manualmente l'agente di servizio Managed Service per Apache Kafka utilizzando il comando gcloud beta services identity create.
Se hai già creato un cluster nel tuo progetto, l'agente di servizio Managed Service per Apache Kafka è già stato creato nel tuo progetto e puoi saltare questo passaggio.
gcloud beta services identity create \ --service=managedkafka.googleapis.com \ --project=PROJECT_IDSostituisci PROJECT_ID con l'ID progetto.
Concedi al service agent Managed Service per Apache Kafka il ruolo Autore crittografia/decrittografia CryptoKey Cloud KMS (
roles/cloudkms.cryptoKeyEncrypterDecrypter).gcloud kms keys add-iam-policy-binding CLOUD_KMS_KEY_NAME \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-managedkafka.iam.gserviceaccount.com \ --role=roles/cloudkms.cryptoKeyEncrypterDecrypterSostituisci quanto segue:
CLOUD_KMS_KEY_NAME: il nome della chiave Cloud KMS.
La chiave è nel formato
projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/CRYPTO_KEY.Un esempio è
projects/test-project/locations/us-central1/keyRings/test-keyring/cryptoKeys/test-key.PROJECT_NUMBER: il numero del progetto Managed Service per Apache Kafka.
Per saperne di più sulla concessione dei ruoli IAM, consulta Concessione di ruoli su una risorsa.
Crea un cluster con CMEK
Puoi utilizzare la console Google Cloud o gcloud CLI per aggiungere le chiavi di crittografia al momento della creazione del cluster Kafka.
Enable the Apache Kafka for BigQuery, Compute Engine, Cloud DNS, and Cloud KMS APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM
role (roles/serviceusage.serviceUsageAdmin), which
contains the serviceusage.services.enable permission. Learn how to grant
roles.
Prima di creare un cluster, consulta la documentazione delle proprietà del cluster.
Per creare un cluster con CMEK:
Console
-
Nella console Google Cloud , vai alla pagina Cluster.
- Seleziona Crea.
Viene visualizzata la pagina Crea cluster Kafka.
- Per Nome cluster, inserisci una stringa.
Per maggiori informazioni su come assegnare un nome a un cluster, consulta le linee guida per assegnare un nome a una risorsa Managed Service per Apache Kafka.
- In Posizione, inserisci una posizione supportata.
Per saperne di più sulle località supportate, consulta Località di Managed Service per Apache Kafka supportate.
- Per la configurazione della capacità, inserisci i valori per Memoria
e vCPU.
Il rapporto vCPU/memoria deve essere compreso tra 1:1 e 1:8.
Per saperne di più su come dimensionare un cluster Managed Service per Apache Kafka, consulta Pianificare le dimensioni del cluster Kafka.
- Per Configurazione di rete, inserisci i seguenti dettagli:
- Progetto: il progetto in cui si trova la subnet. La subnet deve trovarsi nella stessa regione del cluster, ma il progetto potrebbe essere diverso.
- Rete: la rete a cui è connessa la subnet.
- Subnet: il nome della subnet.
- Percorso URI subnet: questo campo viene compilato
automaticamente. In alternativa, puoi inserire qui il percorso della subnet. Il nome
della subnet deve essere nel formato:
projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_ID. - Fai clic su Fine.
- (Facoltativo) Aggiungi altre subnet facendo clic su Aggiungi una subnet
connessa.
Puoi aggiungere altre subnet fino a un massimo di dieci.
- Per Crittografia, seleziona Chiave Cloud KMS.
- Per Tipo di chiave, seleziona Cloud KMS e per Seleziona una chiave gestita dal cliente, inserisci la CMEK che hai creato.
- Fai clic su Crea.
gcloud
Esegui il comando
gcloud managed-kafka clusters create:gcloud managed-kafka clusters create CLUSTER_ID \ --location=LOCATION \ --cpu=CPU \ --memory=MEMORY \ --subnets=SUBNETS \ --encryption-key=CLOUD_KMS_KEY \
Sostituisci quanto segue:
-
CLUSTER_ID: l'ID o il nome del cluster.
Per maggiori informazioni su come assegnare un nome a un cluster, consulta le linee guida per assegnare un nome a una risorsa Managed Service per Apache Kafka.
-
LOCATION: la posizione del cluster.
Per saperne di più sulle località supportate, consulta Località di Managed Service per Apache Kafka supportate.
-
CPU: Il numero di CPU virtuali per il cluster. Il rapporto vCPU/memoria deve essere compreso tra 1:1 e 1:8.
Per maggiori informazioni su come dimensionare un cluster Managed Service per Apache Kafka, consulta Pianificare le dimensioni del cluster Kafka.
-
MEMORY: La quantità di memoria per il cluster. Utilizza le unità "MB", "MiB", "GB", "GiB", "TB" o "TiB". Ad esempio, "10 GiB".
-
SUBNETS: l'elenco delle subnet a cui connettersi. Utilizza le virgole per separare più valori di subnet.
Il formato della subnet è
projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_ID. -
ENCRYPTION_KEY: l'ID di CMEK da utilizzare per il cluster.
Il formato è
projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/CRYPTO_KEY.
-
In the Google Cloud console, 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.
Conferma la creazione del cluster
Verifica che il cluster sia configurato per CMEK eseguendo il comando gcloud managed-kafka clusters describe.
gcloud managed-kafka clusters describe CLUSTER_ID \
--location=LOCATION
L'output include la chiave CMEK configurata.
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 in genere 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 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
L'associazione tra una chiave Cloud KMS e un cluster Managed Service per Apache Kafka è immutabile. 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 alcuna modifica. 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. Ciò significa che potresti non essere in grado di utilizzare i dati meno recenti.
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 non chiave 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.