Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3
In questa pagina viene descritto come utilizzare Chiavi di crittografia gestite dal cliente (CMEK) da proteggere Ambienti Cloud Composer. Le chiavi di crittografia gestite dal cliente vengono utilizzate per criptare/decriptare i dati utente nell'ambiente.
Prima di iniziare
Puoi configurare la chiave CMEK solo quando crei un ambiente. Non è possibile attivare CMEK per un ambiente esistente.
Cloud Composer supporta la crittografia CMEK utilizzando archiviate nei gestori di chiavi esterne.
Devi creare una chiave CMEK nella stessa regione in cui si trovano i tuoi ambienti in cui si trovano. Non puoi utilizzare chiavi multiregionali o globali.
Se vuoi che il tuo ambiente venga eseguito all'interno di un Perimetro Controlli di servizio VPC, devi aggiungere l'API Cloud Key Management Service e l'API Artifact Registry al perimetro.
Abilita l'API Artifact Registry.
Console
Enable the Artifact Registry API.
gcloud
Enable the Artifact Registry API:
gcloud services enable artifactregistry.googleapis.com
Informazioni utente non protette con la crittografia CMEK
Cloud Monitoring non supporta la crittografia CMEK. Il nome del tuo degli ambienti di servizio e i nomi dei DAG sono archiviati in forma criptata utilizzando chiavi di proprietà e gestite da Google.
Cloud Composer archivia le seguenti informazioni protette con chiavi di proprietà e gestite da Google, non chiavi gestite dal cliente:
- Nome ambiente
- Override della configurazione Airflow
- Variabili di ambiente
- Descrizioni degli intervalli IP consentiti
- Intervalli IP
- Etichette
- I nomi di alcuni parametri memorizzati da Cloud Composer possono includere una sottostringa del nome dell'ambiente.
Utilizzare una chiave di crittografia gestita dal cliente per l'ambiente
Passaggio 1: Crea una chiave di crittografia gestita dal cliente
Segui i passaggi descritti in Creazione di chiavi di crittografia simmetriche per creare una chiave nel regione in cui si trova l'ambiente.
Passaggio 2: Concedi ruoli agli agenti di servizio
Console
Ignora questo passaggio. Concedi le autorizzazioni ai agenti di servizio quando specifichi una chiave per il tuo ambiente.
gcloud
I seguenti agenti di servizio devono avere il ruolo Autore crittografia/decrittografia CryptoKey Cloud KMS per la chiave che utilizzi per il tuo ambiente.
Sostituisci PROJECT_NUMBER
con
numero del progetto.
Nome dell'agente di servizio | Email del service account | Nome del servizio API |
---|---|---|
Cloud Composer Service Agent | service-PROJECT_NUMBER@cloudcomposer-accounts.iam.gserviceaccount.com | composer.googleapis.com |
Artifact Registry Service Agent | service-PROJECT_NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com | artifactregistry.googleapis.com |
Kubernetes Engine Service Agent | service-PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com | container.googleapis.com |
Agente di servizio Pub/Sub | service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com | pubsub.googleapis.com |
Compute Engine Service Agent | service-PROJECT_NUMBER@compute-system.iam.gserviceaccount.com | compute.googleapis.com |
Agente di servizio Cloud Storage | service-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com | Concedi le autorizzazioni di crittografia/decrittografia con gcloud storage service-agent --authorize-cmek |
(Se necessario) Se alcuni di questi account di servizio non sono presenti nel tuo significa che non è stata ancora creata un'identità per questo servizio. Ciò può accadere, ad esempio, se non hai ancora creato ambienti Cloud Composer nel tuo progetto.
Per aggiungere questi account di servizio, crea le identità per i servizi elencati con il seguente comando:
gcloud beta services identity create \ --service=API_SERVICE_NAME
Sostituisci
API_SERVICE_NAME
con Nome del servizio API di un servizio che non dispone di un account di servizio nel tuo progetto.Esempio:
gcloud beta services identity create \ --service=composer.googleapis.com
Concedi le autorizzazioni agli agenti di servizio:
Concedi il ruolo all'agente di servizio di Cloud Composer:
gcloud kms keys add-iam-policy-binding KEY_NAME \ --location KEY_LOCATION \ --keyring KEY_RING_NAME \ --member=serviceAccount:service-PROJECT_NUMBER@cloudcomposer-accounts.iam.gserviceaccount.com \ --role=roles/cloudkms.cryptoKeyEncrypterDecrypter \ --project KEY_PROJECT_ID
Concedi il ruolo all'agente di servizio Artifact Registry:
gcloud kms keys add-iam-policy-binding KEY_NAME \ --location KEY_LOCATION \ --keyring KEY_RING_NAME \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com \ --role=roles/cloudkms.cryptoKeyEncrypterDecrypter \ --project KEY_PROJECT_ID
Concedi il ruolo all'agente di servizio GKE:
gcloud kms keys add-iam-policy-binding KEY_NAME \ --location KEY_LOCATION \ --keyring KEY_RING_NAME \ --member=serviceAccount:service-PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com \ --role=roles/cloudkms.cryptoKeyEncrypterDecrypter \ --project KEY_PROJECT_ID
Concedi il ruolo all'agente di servizio Pub/Sub:
gcloud kms keys add-iam-policy-binding KEY_NAME \ --location KEY_LOCATION \ --keyring KEY_RING_NAME \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com \ --role=roles/cloudkms.cryptoKeyEncrypterDecrypter \ --project KEY_PROJECT_ID
Concedi il ruolo all'agente di servizio Compute Engine:
gcloud kms keys add-iam-policy-binding KEY_NAME \ --location KEY_LOCATION \ --keyring KEY_RING_NAME \ --member=serviceAccount:service-PROJECT_NUMBER@compute-system.iam.gserviceaccount.com \ --role=roles/cloudkms.cryptoKeyEncrypterDecrypter \ --project KEY_PROJECT_ID
Concedi le autorizzazioni di crittografia/decrittografia all'agente di servizio Cloud Storage. Puoi saltare questo passaggio se utilizzi un bucket di un ambiente personalizzato.
gcloud storage service-agent \ --authorize-cmek=projects/KEY_PROJECT_ID/locations/KEY_LOCATION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME
Sostituisci:
PROJECT_ID
con il tuo ID del progetto.KEY_PROJECT_ID
con l'ID del progetto in cui sono archiviati i tuoi e gestita dal cliente. Se utilizzi una chiave di un altro progetto, è diverso dall'ID del progetto. Se utilizzi una chiave stesso progetto, questo valore è l'ID del tuo progetto.PROJECT_NUMBER
con il tuo numero del progetto.KEY_LOCATION
con la posizione della chiave gestita dal cliente. Questa località deve essere uguale a quella del tuo ambiente.KEY_NAME
con il nome della chiave gestita dal cliente.KEY_RING_NAME
con il portachiavi che memorizza la chiave gestita dal cliente.
Per ottenere questi valori, puoi eseguire
gcloud projects describe
,gcloud kms keyrings list
egcloud kms keys describe
.
Passaggio 3: Creare un ambiente con CMEK
Dopo aver creato una chiave di crittografia gestita dal cliente, puoi utilizzare per creare ambienti Cloud Composer.
Console
Quando crei un ambiente:
Nella sezione Crittografia dei dati, seleziona Chiave di crittografia gestita dal cliente (CMEK).
Seleziona la tua chiave nell'elenco a discesa Seleziona una chiave gestita dal cliente.
Se è necessaria un'ulteriore configurazione, verrà visualizzato un messaggio per informarti. In questo caso:
Fai clic su Apri procedura guidata.
In Preparare la chiave CMEK per l'utilizzo in Cloud Composer visualizza l'elenco degli agenti di servizio. che deve avere il ruolo Autore crittografia/decrittografia CryptoKey Cloud KMS sulla chiave.
Per concedere le autorizzazioni e i ruoli richiesti, fai clic su Concedi.
gcloud
L'argomento --kms-key
specifica una chiave di crittografia gestita dal cliente per il tuo ambiente.
Per saperne di più sulla creazione di ambienti, consulta Creare ambienti. Ad esempio, potresti voler specificare altri parametri per il tuo ambiente.
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version IMAGE_VERSION \
--kms-key projects/KEY_PROJECT_ID/locations/KEY_LOCATION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME
Sostituisci:
ENVIRONMENT_NAME
con il nome dell'ambiente.IMAGE_VERSION
con il nome dell'immagine Cloud Composer.KEY_PROJECT_ID
con l'ID del progetto in cui si trova la chiave. Se utilizzi una chiave di un altro progetto, questo valore è diverso da l'ID del progetto. Se utilizzi una chiave dello stesso progetto, questo valore è l'ID del progetto.LOCATION
con la regione in cui si trova l'ambiente.KEY_LOCATION
con la località della chiave gestita dal cliente. Questa località deve corrispondere a quella del tuo ambiente.KEY_NAME
con il nome della chiave gestita dal cliente.KEY_RING_NAME
con il portachiavi che memorizza la chiave gestita dal cliente.
Esempio:
gcloud composer environments create example-environment \
--location us-central1 \
--image-version composer-2.9.4-airflow-2.9.1 \
--kms-key projects/example-project/locations/us-central1/keyRings/example-key-ring/cryptoKeys/example-key
Visualizza la configurazione della crittografia dell'ambiente
Puoi visualizzare la configurazione della crittografia per un ambiente esistente:
Console
Nella console Google Cloud, vai alla pagina Ambienti.
Nell'elenco degli ambienti, fai clic sul nome dell'ambiente. Si apre la pagina Dettagli ambiente.
Vai alla scheda Configurazione dell'ambiente.
I dettagli sulla crittografia sono elencati nell'elemento Chiave di crittografia dei dati.
gcloud
Esegui questo comando gcloud
per visualizzare la configurazione della crittografia
gcloud composer environments describe \
ENVIRONMENT_NAME \
--location LOCATION \
--format="value(config.encryptionConfig)"
Sostituisci:
ENVIRONMENT_NAME
con il nome dell'ambiente.LOCATION
con la regione in cui si trova l'ambiente.
Esempio:
gcloud composer environments describe \
example-environment \
--location us-central1 \
--format="value(config.encryptionConfig)"
Utilizzare CMEK per i log di Cloud Composer
Cloud Logging supporta la crittografia dell'archiviazione dei log con chiavi CMEK. I nostri suggerimenti per utilizzare la procedura CMEK standard per criptare i log con le chiavi CMEK.
Per criptare i log con le chiavi CMEK, segui le istruzioni riportate in Gestire le chiavi che proteggono i dati di archiviazione di Logging.
Reindirizza i log di Cloud Composer a un bucket Cloud Storage criptato con CMEK
Se prevedi che i tuoi log contengano dati sensibili, ti consigliamo di reindirizzare i log di Cloud Composer a un bucket Cloud Storage criptato con CMEK utilizzando Log Router. In questo modo l'invio dei log a Monitoring.
Se hai bisogno di assistenza dall'assistenza clienti Google Cloud, potresti dover concedere agli ingegneri dell'assistenza Google l'accesso ai log di Cloud Composer archiviati in Cloud Storage.
gcloud
Crea un nuovo bucket Cloud Storage per archiviare i log.
gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION
Sostituisci:
LOCATION
con la regione in cui si trova l'ambiente.BUCKET_NAME
con il nome del bucket.
Esempio:
gcloud storage buckets create gs://composer-logs-us-central1-example-environment --location=us-central1
Crittografa il bucket con la chiave CMEK.
gcloud storage buckets update gs://BUCKET_NAME \ --default-encryption-key=projects/KEY_PROJECT_ID/locations/KEY_LOCATION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME
Sostituisci:
KEY_PROJECT_ID
con l'ID del progetto in cui si trova la chiave. Se utilizzi una chiave di un altro progetto, questo valore è diverso da l'ID del tuo progetto. Se utilizzi una chiave dello stesso progetto, questo valore è l'ID del progetto.KEY_LOCATION
con la località della chiave gestita dal cliente. Questa località deve corrispondere a quella del tuo ambiente.KEY_RING_NAME
con il keyring in cui è archiviata la chiave gestita dal cliente.KEY_NAME
con il nome della chiave gestita dal cliente.BUCKET_NAME
con il nome del bucket.
Esempio:
gcloud storage buckets update gs://composer-logs-us-central1-example-environment \ --default-encryption-key=projects/example-project/locations/us-central1/keyRings/example-key-ring/cryptoKeys/example-key
Crea un nuovo sink di log.
gcloud logging sinks create \ composer-log-sink-ENVIRONMENT_NAME \ storage.googleapis.com/BUCKET_NAME \ --log-filter "resource.type=cloud_composer_environment AND resource.labels.environment_name=ENVIRONMENT_NAME AND resource.labels.location=LOCATION"
Sostituisci:
ENVIRONMENT_NAME
con il nome dell'ambiente.LOCATION
con la regione in cui si trova l'ambiente.BUCKET_NAME
con il nome del bucket.
Esempio:
gcloud logging sinks create \ composer-log-sink-example-environment \ storage.googleapis.com/composer-logs-us-central1-example-environment \ --log-filter "resource.type=cloud_composer_environment AND resource.labels.environment_name=example-environment AND resource.labels.location=us-central1"
Per farlo, concedi il ruolo Creatore oggetti Storage all'account di servizio di sincronizzare la directory di una VM con un bucket. L'account di servizio viene visualizzato nel risultato del comando precedente).
gcloud projects add-iam-policy-binding \ PROJECT_ID \ --member="serviceAccount:LOGGING_SERVICE_AGENT" \ --role="roles/storage.objectCreator" \ --condition=None
Sostituisci:
PROJECT_ID
con l'ID progetto.LOGGING_SERVICE_AGENT
con il servizio Logging un account agente per questo bucket. Il nome di questo account viene ottenuto nel passaggio precedente.
Esempio:
gcloud projects add-iam-policy-binding \ example-project \ --member="serviceAccount:example-sa@gcp-sa-logging.iam.gserviceaccount.com" \ --role="roles/storage.objectCreator" \ --condition=None
Escludi i log per il nuovo ambiente da Monitoraggio.
gcloud beta logging sinks update _Default \ --add-exclusion name=ENVIRONMENT_NAME-exclusion,filter="resource.type=cloud_composer_environment AND resource.labels.environment_name=ENVIRONMENT_NAME AND resource.labels.location=LOCATION"
Sostituisci:
ENVIRONMENT_NAME
con il nome dell'ambiente.LOCATION
con la regione in cui si trova l'ambiente.
Esempio:
gcloud beta logging sinks update _Default \ --add-exclusion name=example-environment-exclusion,filter="resource.type=cloud_composer_environment AND resource.labels.environment_name=example-environment AND resource.labels.location=us-central1"
Aggiungi la crittografia CMEK a livello di organizzazione al router dei log.
gcloud logging cmek-settings describe \ --organization=ORGANIZATION_ID
gcloud kms keys add-iam-policy-binding \ --project=KEY_PROJECT_ID \ --member LOGGING_SERVICE_AGENT \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter \ --location=KEY_LOCATION \ --keyring=KEY_RING_NAME \ KEY_NAME
gcloud logging cmek-settings update \ --organization=ORGANIZATION_ID \ --kms-project=KEY_PROJECT_ID \ --kms-keyring=KEY_RING_NAME \ --kms-location=KEY_LOCATION \ --kms-key-name=KEY_NAME
Sostituisci:
ORGANIZATION_ID
con il tuo ID organizzazione.KEY_PROJECT_ID
con l'ID del progetto in cui si trova la chiave. Se utilizzi una chiave di un altro progetto, questo valore è diverso dall'ID del progetto. Se utilizzi una chiave dello stesso progetto, questo valore è l'ID del progetto.KEY_RING_NAME
con il portachiavi che memorizza la chiave gestita dal cliente.KEY_LOCATION
con la località della chiave gestita dal cliente. Questo deve corrispondere alla località dell'ambiente.KEY_NAME
con il nome della chiave gestita dal cliente.
Rotazione delle chiavi CMEK per Cloud Composer
Dopo aver configurato la crittografia nel tuo ambiente utilizzando le chiavi CMEK, potrebbe anche valutare la possibilità di ruotare le chiavi su base regolare come descritto nella documentazione di KMS.
Quando ruoti una chiave CMEK, i dati criptati con versioni precedenti della chiave vengono non viene ricriptata automaticamente con la nuova versione della chiave. Per ulteriori informazioni, vedi Ricriptare i dati.
Nello specifico:
- Oggetti archiviati nel bucket dell'ambiente.
- Cata archiviati nel database Airflow.
- Immagini container archiviate nei repository Artifact Registry.
- Tutti gli altri oggetti di dati criptati con CMEK nell'ambiente Cloud Composer.