Configura la encriptación con claves de encriptación administradas por el cliente

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:

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

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
  1. (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_NAME
    

    Reemplaza API_SERVICE_NAME por 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.com
    
  2. Otorga permisos a los agentes de servicio:

    1. 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_ID
      
    2. Otorga 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_ID por el ID de tu proyecto.
    • KEY_PROJECT_ID por 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_NUMBER por el número de tu proyecto.
    • KEY_LOCATION con la ubicación de tu clave administrada por el cliente. Esta ubicación debe ser la misma que la de tu entorno.
    • KEY_NAME por el nombre de tu clave administrada por el cliente.