Usa claves de encriptación administradas por el cliente

En esta página, se describe cómo usar claves de encriptación administradas por el cliente (CMEK) para proteger los entornos de Cloud Composer. Si habilitas CMEK, podrás proporcionar tus propias claves de encriptación para encriptar o desencriptar datos del entorno.

Regiones en las que no se admiten las restricciones de ubicación de recursos

Cloud Composer no admite las restricciones de ubicación de recursos en la región de Varsovia (europe-central2).

Requisitos previos

  1. Habilita la API de Artifact Registry.

        gcloud services enable artifactregistry.googleapis.com
      

  2. Si deseas que tu entorno se ejecute dentro del perímetro de los Controles del servicio de VPC, debes agregar las API de Cloud Key Management Service y Artifact Registry al perímetro.

Configura la compatibilidad con CMEK para Cloud Composer

Console

Sigue estos pasos para configurar la encriptación de CMEK en Cloud Console durante la creación del entorno:

  1. En Cloud Console, ve a la página Crear entorno. Abrir la página Crear entorno

  2. Expande la sección Herramientas de redes, anulaciones de configuración de Airflow y funciones adicionales.

  3. Debajo de Encriptación de datos, selecciona Clave administrada por el cliente.

  4. En Seleccionar una clave administrada por el cliente, selecciona tu clave en el menú desplegable.

  5. Si se requiere una configuración adicional, aparecerá un mensaje para informarle. Tendrás la opción de abrir un asistente para guiarte a lo largo del proceso.

Después de crear el entorno, puedes verificar su configuración de encriptación:

  1. Dirígete a la página de la lista de entornos. Abrir la página Lista de entornos

  2. En la parte superior derecha de la página, debajo del botón "Actualizar", haz clic en el botón Opciones de visualización de columnas.

  3. En el menú desplegable Opciones de visualización de la columna, selecciona Encriptación de datos.

  4. Ahora, una columna nueva debería ser visible, que muestra la encriptación de datos para cada entorno como "Clave administrada por Google" o "Clave administrada por el cliente".

  5. Para verificar que tu clave administrada por el cliente esté disponible, selecciona tu entorno nuevo en la lista a fin de llegar a la página Detalles del entorno. Selecciona la pestaña Configuración del entorno y busca la fila Encriptación de datos.

gcloud

Abre Cloud Console y usa los comandos a continuación a fin de configurar la encriptación de CMEK para Cloud Composer:

  1. Configurar variables de proyecto.

    export environmentName=ENVIRONMENT_NAME
    export project=PROJECT_ID
    export location=LOCATION
    export keyRing=KEY_RING
    export keyName=KEY_NAME
    export keyProject=${project} # Change if you are using a key from another project.
    export projectNumber=$(gcloud projects describe ${project} | grep projectNumber | cut -f2 -d" " | sed "s/'//g" )
    
  2. Crea una clave CMEK en KMS (si aún no está disponible).

    gcloud config set project ${project}
    gcloud kms keyrings create ${keyRing} --location=${location} --project ${keyProject}
    gcloud kms keys create ${keyName} --location=${location} \
    --keyring=${keyRing} --purpose=encryption --project ${keyProject}
    

    Debes crear una clave CMEK en la misma región donde se ubicarán tus entornos.

  3. Otorga permisos a la cuenta de servicio del agente de servicio de Composer.

    gcloud kms keys add-iam-policy-binding ${keyName} \
      --location ${location} \
      --keyring ${keyRing} \
      --member=serviceAccount:$(gcloud beta services identity create \
      --service=composer.googleapis.com 2>&1 | awk '{print $4}') \
      --role=roles/cloudkms.cryptoKeyEncrypterDecrypter \
      --project ${keyProject}
    
  4. Otorga permisos a la cuenta de servicio Artifact Registry.

    gcloud kms keys add-iam-policy-binding ${keyName} \
      --location ${location} \
      --keyring ${keyRing} \
      --member=serviceAccount:$(gcloud beta services \
    identity create --service=artifactregistry.googleapis.com 2>&1 | awk \
    '{print $4}') --role=roles/cloudkms.cryptoKeyEncrypterDecrypter
    
  5. Otorga permisos a la cuenta de servicio de GKE.

    gcloud kms keys add-iam-policy-binding ${keyName} \
      --location ${location} --keyring ${keyRing} \
      --member=serviceAccount:$(gcloud beta services identity create \
      --service=container.googleapis.com 2>&1 | awk '{print $4}') \
      --role=roles/cloudkms.cryptoKeyEncrypterDecrypter
    
  6. Otorga permisos a la cuenta de servicio de Pub/Sub.

    gcloud kms keys add-iam-policy-binding ${keyName} \
      --location ${location} \
      --keyring ${keyRing} \
      --member=serviceAccount:$(gcloud beta services identity create \
      --service=pubsub.googleapis.com 2>&1 | awk '{print $4}') \
      --role=roles/cloudkms.cryptoKeyEncrypterDecrypter
    
  7. Otorga permisos a la cuenta de servicio de Cloud Storage.

    gsutil kms authorize -k projects/${keyProject}/locations/${location}/keyRings/${keyRing}/cryptoKeys/${keyName}
    
  8. Otorga permisos a la cuenta de servicio de Compute Engine.

    gcloud kms keys add-iam-policy-binding ${keyName} \
      --location ${location} \
      --keyring ${keyRing} \
      --member=serviceAccount:service-${projectNumber}@compute-system.iam.gserviceaccount.com \
      --role=roles/cloudkms.cryptoKeyEncrypterDecrypter
    
  9. Crea un entorno de Cloud Composer.

    gcloud composer environments create ${environmentName} \
      --location=${location} \
      --kms-key projects/${keyProject}/locations/${location}/keyRings/${keyRing}/cryptoKeys/${keyName}
    

CMEK para registros de Cloud Composer

Si esperas que tus registros puedan contener datos sensibles, también puedes redireccionar los registros de Cloud Composer al depósito de Cloud Storage encriptado con CMEK a través del enrutador de registros. Esto evitará que tus registros se envíen a Monitoring. Si necesitas asistencia de Google Cloud Support, deberás otorgar a los ingenieros de asistencia de Google acceso a los registros de Cloud Composer almacenados en Cloud Storage.

gcloud

  1. Crea un depósito de Cloud Storage nuevo (p.ej., composer-logs-${location}-${environmentName}).

    gsutil mb -l ${location} gs://${bucket_name}
    
  2. Encripta con tu clave CMEK.

    gsutil kms encryption -k projects/${project}/locations/${location}/keyRings/${keyRing}/cryptoKeys/${keyName} gs://${bucket_name}
    
  3. Crea un receptor de registros nuevo.

    gcloud logging sinks create composer-log-sink-${environmentName} storage.googleapis.com/${bucket_name}
      --log-filter "resource.type=cloud_composer_environment AND resource.labels.environment_name=${envname} AND resource.labels.location=${location}"
    
  4. Otorga la función adecuada a la cuenta de servicio para este depósito (que se muestra en el resultado del comando anterior).

    gcloud projects add-iam-policy-binding ${project} --member="serviceAccount:${serviceAccountNumber}@gcp-sa-logging.iam.gserviceaccount.com" --role='roles/storage.objectCreator' --condition=None
    
  5. Excluye los registros de tu entorno nuevo en Monitoring.

    gcloud beta logging sinks update _Default --add-exclusion name=${environmentName}-exclusion,filter="resource.type=cloud_composer_environment AND resource.labels.environment_name=${envname} AND resource.labels.location=${location}"
    
  6. Agrega encriptación CMEK a nivel de la organización al enrutador de registros.

    gcloud beta logging cmek-settings describe --organization=[ORGANIZATION_ID]
    gcloud kms keys add-iam-policy-binding \
      --project=[KMS_PROJECT_ID] \
      --member [SERVICE_ACCOUNT_ID]@gcp-sa-logging.iam.gserviceaccount.com \
      --role roles/cloudkms.cryptoKeyEncrypterDecrypter \
      --location=[KMS_KEY_LOCATION] \
      --keyring=[KMS_KEY_RING] \
      [KMS_KEY]
    gcloud beta logging cmek-settings update \
      --organization=[ORGANIZATION_ID] --kms-key-name=[KMS_KEY_NAME]
    

Datos de Cloud Composer protegidos con claves de encriptación proporcionadas por Google

Cloud Monitoring no es compatible con la encriptación de CMEK, lo que significa que los nombres de tus entornos y DAG de Cloud Composer se almacenarán en la base de datos de Monitoring en forma encriptada mediante las claves de encriptación de Google.

La base de datos de backend de Cloud Composer también almacena los metadatos del entorno en forma encriptada con las claves de encriptación de Google.