Airflow administrado (gen. 3) | Airflow administrado (gen. 2) | Airflow administrado (gen. 1 heredada)
En esta página, se describe cómo usar claves de encriptación administradas por el cliente (CMEK) para proteger los entornos de Managed Airflow.
Acerca de las claves de encriptación administradas por el cliente (CMEK)
De forma predeterminada, Managed Service para Apache Airflow encripta el contenido del cliente en reposo. Managed Airflow controla la encriptación por ti sin que debas realizar ninguna acción adicional. Esta opción se denomina encriptación predeterminada de Google.
Si deseas controlar tus claves de encriptación, puedes usar las claves de encriptación administradas por el cliente (CMEK) en Cloud KMS con servicios integrados en CMEK, incluido Managed Airflow. El uso de claves de Cloud KMS te permite controlar su nivel de protección, ubicación, programa de rotación, permisos de uso y acceso, y límites criptográficos. El uso de Cloud KMS también te permite ver los registros de auditoría y controlar los ciclos de vida de las claves. En lugar de que Google posea y administre las claves de encriptación de claves (KEK) simétricas que protegen tus datos, tú las controlas y administras en Cloud KMS.
Después de configurar tus recursos con CMEK, la experiencia de acceso a tus recursos de Managed Airflow es similar a usar la encriptación predeterminada de Google. Para obtener más información sobre tus opciones de encriptación, consulta Claves de encriptación administradas por el cliente (CMEK).
Datos protegidos con encriptación de CMEK
Managed Airflow protege los siguientes datos con la encriptación de CMEK:
- Contenido y esquema de la base de datos de Airflow
- Registros de tareas de Airflow y del entorno en Cloud Logging
- Contenido del bucket del entorno
- Secretos almacenados en el clúster del entorno
- Discos persistentes que usa la lista de tareas en cola
- Imágenes de contenedor de los componentes del entorno almacenadas en repositorios de Artifact Registry
Para obtener detalles específicos sobre cómo se encriptan los datos, consulta los siguientes vínculos:
- Acerca de las claves de encriptación administradas por el cliente (CMEK) en la documentación de Cloud SQL
- Usa claves de encriptación administradas por el cliente (CMEK) y encripta secretos en la capa de la aplicación en la documentación de Google Kubernetes Engine.
- Claves de encriptación administradas por el cliente en la documentación de Cloud Storage
- Configura CMEK para Cloud Logging en la documentación de Cloud Logging.
Datos no protegidos con encriptación de CMEK
Cloud Monitoring no admite la encriptación con CMEK. El nombre de tu entorno y los nombres de los DAG se almacenan en la base de datos de Monitoring en formato encriptado con Google-owned and Google-managed encryption keys.
Managed Airflow almacena la siguiente información protegida conGoogle-owned and Google-managed encryption keys, no con claves administradas por el cliente:
- Nombre del entorno
- Anulaciones de configuración de Airflow
Variables de entorno
Etiquetas
Los nombres de algunos parámetros que almacena Managed Airflow pueden incluir una subcadena del nombre del entorno.
Rotación de claves de CMEK para Managed Airflow
Después de configurar la encriptación en tu entorno con claves de CMEK, también puedes considerar rotar estas claves de forma periódica, como se describe en la documentación del KMS.
Cuando rotas una clave de CMEK, los datos encriptados con versiones de claves anteriores no se vuelven a encriptar de forma automática con la versión de clave nueva. Para obtener más información, consulta Vuelve a encriptar datos.
Específicamente, esto se aplica a lo siguiente:
- Objetos almacenados en el bucket del entorno.
- Son los datos almacenados en la base de datos de Airflow.
- Todos los demás objetos de datos encriptados con CMEK en el entorno de Managed Airflow.
- Imágenes de contenedor de los componentes del entorno almacenadas en repositorios de Artifact Registry
Usa una clave de encriptación administrada por el cliente para tu entorno
Antes de comenzar
Solo puedes configurar la CMEK cuando creas un entorno. No es posible habilitar las CMEK para un entorno existente.
Managed Airflow admite la encriptación con CMEK a través de claves almacenadas en administradores de claves externos.
Debes crear una clave CMEK en la misma región donde se ubican tus entornos. No puedes usar claves multirregionales ni globales.
Si tu entorno se ejecuta dentro de un perímetro de Controles del servicio de VPC, agrega la API de Cloud Key Management Service al perímetro.
Si tu entorno se ejecuta dentro de un perímetro de Controles del servicio de VPC, el proyecto que aloja las claves de Cloud Key Management Service debe pertenecer al mismo perímetro de Controles del servicio de VPC que el entorno.
Paso 1: Crea una clave de encriptación administrada por el cliente
Sigue los pasos que se describen en Crea claves de encriptación simétricas para crear una clave en la región en la que se encuentra tu entorno.
Paso 2: Otorga roles a los agentes de servicio
Console
Omitir este paso Otorgas permisos a los agentes de servicio cuando especificas una clave para tu entorno.
gcloud
Los siguientes agentes de servicio deben tener el rol de encriptador/desencriptador de CryptoKey de Cloud KMS en la clave que usas para tu entorno.
Reemplaza PROJECT_NUMBER por el número de tu proyecto.
| Nombre del agente de servicio | Correo electrónico de la cuenta de servicio | Nombre del servicio de API |
|---|---|---|
| Agente de servicio de Managed Airflow | service-PROJECT_NUMBER@cloudcomposer-accounts.iam.gserviceaccount.com | composer.googleapis.com |
| Agente de servicio de Cloud Storage | service-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com | Otorga permisos de encriptación y desencriptación con gcloud storage service-agent --authorize-cmek |
(Si es necesario) Si algunas de estas cuentas de servicio no están presentes en tu proyecto, significa que aún no se creó una identidad para este servicio. Esto puede suceder, por ejemplo, si aún no creaste ningún entorno de Managed Airflow en tu proyecto.
Para agregar estas cuentas de servicio, crea identidades para los servicios enumerados con el siguiente comando:
gcloud beta services identity create \ --service=API_SERVICE_NAMEReemplaza
API_SERVICE_NAMEpor el nombre del servicio de la API de un servicio que no tenga una cuenta de servicio en tu proyecto.Ejemplo:
gcloud beta services identity create \ --service=composer.googleapis.comOtorga permisos a los agentes de servicio:
Otorga el rol al agente de servicio de Managed Airflow:
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_IDOtorga permisos de encriptación y desencriptación al agente de servicio de Cloud Storage. Puedes omitir este paso si usas un bucket de entorno personalizado.
gcloud storage service-agent \ --authorize-cmek=projects/KEY_PROJECT_ID/locations/KEY_LOCATION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME
Reemplaza lo siguiente:
PROJECT_IDpor el ID de tu proyecto.KEY_PROJECT_IDpor el ID del proyecto que almacena tu clave administrada por el cliente. Si usas una clave de otro proyecto, este valor será diferente del ID de tu proyecto. Si usas una clave del mismo proyecto, este valor es el ID del proyecto.PROJECT_NUMBERpor el número de tu proyecto.KEY_LOCATIONcon la ubicación de tu clave administrada por el cliente. Esta ubicación debe ser la misma que la de tu entorno.KEY_NAMEpor el nombre de tu clave administrada por el cliente.