Usa claves de encriptación administradas por el cliente (CMEK)

De forma predeterminada, Google Cloud encripta los datos cuando están en reposo de manera automática mediante claves de encriptación administradas por Google. Si tienes requisitos normativos o de cumplimiento específicos relacionados con las claves que protegen los datos, puedes usar claves de encriptación administradas por el cliente (CMEK) para los trabajos de entrenamiento.

Puedes leer más sobre los beneficios específicos de usar CMEK para AI Platform Training en la siguiente sección de esta guía. Para obtener más información sobre las CMEK en general, incluso cuándo y por qué habilitarlas, consulta la documentación de Cloud Key Management Service.

En esta guía, se describen algunos beneficios de usar CMEK en AI Platform Training y se explica cómo configurar un trabajo de entrenamiento a fin de que use CMEK.

Información sobre CMEK para AI Platform Training

En las siguientes secciones, se incluye información básica sobre CMEK para AI Platform Training que debes comprender antes de configurar CMEK en los trabajos de entrenamiento.

Beneficios de las CMEK

En general, las CMEK son más útiles si necesitas control total sobre las claves que se usan para encriptar los datos. Mediante CMEK, puedes administrar las claves dentro de Cloud KMS. Por ejemplo, puedes rotar o inhabilitar una clave, o bien puedes configurar una programación de rotación mediante la API de Cloud KMS. Para obtener más información sobre las CMEK en general, incluso cuándo y por qué habilitarlas, consulta la documentación de Cloud KMS.

Cuando ejecutas un trabajo de entrenamiento, el código se ejecuta en una o más instancias de máquina virtual (VM) administradas por AI Platform Training. Cuando habilitas CMEK para AI Platform Training, la clave que designes, en lugar de una clave administrada por Google, se usa para encriptar datos en los discos de arranque de estas VM. La clave CMEK encripta las siguientes categorías de datos:

  • La copia del código de entrenamiento en las VM
  • Cualquier dato que se cargue con el código de entrenamiento
  • Cualquier dato temporal que el código de entrenamiento guarde en el disco local

La clave CMEK no encripta los metadatos asociados con tu trabajo de entrenamiento, como su nombre y región. Los metadatos asociados con los trabajos de entrenamiento siempre se encriptan mediante el mecanismo de encriptación predeterminado de Google.

Usa CMEK con otros productos de Google Cloud

Cuando se configuran las CMEK para AI Platform Training, no se configuran de forma automática en otros productos de Google Cloud que usas junto con AI Platform Training. Para usar CMEK a fin de encriptar datos en otros productos de Google Cloud, se requiere una configuración adicional. Por ejemplo:

Limitaciones

No puedes usar CMEK con AI Platform Training en las siguientes situaciones:

  • No puedes usar CMEK con trabajos de entrenamiento que usan TPU.
  • Si comenzaste a usar la API de entrenamiento y predicción de AI Platform en 2017 o antes y envías un trabajo de entrenamiento con CMEK, es posible que se genere un error que describe un mecanismo de autenticación heredado no compatible. En este caso, crea un proyecto nuevo de Google Cloud o selecciona un proyecto diferente para ejecutar el trabajo de AI Platform Training.

Configura CMEK para el trabajo de entrenamiento

En las siguientes secciones, se describe cómo crear un llavero de claves y una clave en Cloud Key Management Service, cómo otorgar permisos de encriptador y desencriptador de AI Platform Training para tu clave y cómo crear un trabajo de entrenamiento que use CMEK.

Antes de comenzar

En esta guía, se supone que usas dos proyectos de Google Cloud diferentes a fin de configurar CMEK para el entrenamiento:

  • Un proyecto para administrar la clave de encriptación (denominado “proyecto de Cloud KMS”)
  • Un proyecto para acceder a AI Platform Training, administrar los datos o los resultados del entrenamiento en Cloud Storage y, además, interactuar con cualquier otro producto de Google Cloud que necesites para el caso práctico (denominado “proyecto de AI Platform”)

Esta configuración recomendada admite una separación de obligaciones.

Como alternativa, puedes usar un solo proyecto de Google Cloud para toda la guía. Para hacerlo, usa el mismo proyecto para todas las tareas que hacen referencia al proyecto de Cloud KMS y las tareas que hacen referencia al proyecto de AI Platform.

Configura el proyecto de Cloud KMS

  1. Accede a tu Cuenta de Google.

    Si todavía no tienes una cuenta, regístrate para obtener una nueva.

  2. En la página de selección de proyectos de Cloud Console, selecciona o crea un proyecto de Cloud.

    Ir a la página Selector de proyectos

  3. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud. Obtén información sobre cómo confirmar que tienes habilitada la facturación para tu proyecto.

  4. Habilita la API Cloud KMS.

    Habilita la API

Configura el proyecto de AI Platform

  1. Accede a tu Cuenta de Google.

    Si todavía no tienes una cuenta, regístrate para obtener una nueva.

  2. En la página de selección de proyectos de Cloud Console, selecciona o crea un proyecto de Cloud.

    Ir a la página Selector de proyectos

  3. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud. Obtén información sobre cómo confirmar que tienes habilitada la facturación para tu proyecto.

  4. Habilita la API AI Platform Training & Prediction.

    Habilita la API

Configura la herramienta de línea de comandos de gcloud

La herramienta gcloud es obligatoria en algunos pasos de esta guía y opcional en otros. Instala e inicializa el SDK de Cloud.

Crea un llavero de claves y una clave

Sigue la guía de Cloud KMS para crear claves simétricas a fin de crear un llavero de claves y una clave. Cuando crees el llavero de claves, especifica una región que admita AI Platform Training como la ubicación del llavero de claves. AI Platform Training solo admite CMEK cuando el trabajo de entrenamiento y la clave usan la misma región. No debes especificar una ubicación birregional, multirregional ni global para el llavero de claves.

Asegúrate de crear el llavero de claves y la clave en el proyecto de Cloud KMS.

Otorga permisos de AI Platform Training

A fin de usar CMEK en el trabajo de entrenamiento, debes otorgar permiso a AI Platform Training para encriptar y desencriptar datos con la clave. AI Platform Training usa una cuenta de servicio administrada por Google para ejecutar los trabajos de entrenamiento. Esta cuenta de servicio se identifica con una dirección de correo electrónico que tiene el siguiente formato:

service-AI_PLATFORM_PROJECT_NUMBER@cloud-ml.google.com.iam.gserviceaccount.com

A fin de encontrar la cuenta de servicio adecuada para tu proyecto de AI Platform, ve a la página IAM en Google Cloud Console y busca el miembro que coincida con este formato de dirección de correo electrónico. Debes reemplazar la variable AI_PLATFORM_PROJECT_NUMBER por el número de proyecto de AI Platform. La cuenta de servicio también tiene el nombre Google Cloud ML Engine Service Agent.

Ir a la página IAM

Toma nota de la dirección de correo electrónico de esta cuenta de servicio y úsala en los pasos siguientes a fin de otorgarle permiso para encriptar y desencriptar datos con la clave. Puedes otorgar permisos mediante Google Cloud Console o con la herramienta de línea de comandos de gcloud:

Cloud Console

  1. En Cloud Console, ve a la página Claves criptográficas y selecciona el proyecto de Cloud KMS.

    Ir a la página Claves criptográficas

  2. Haz clic en el nombre del llavero de claves que creaste en la sección anterior de esta guía para ir a la página Detalles del llavero de claves.

  3. Selecciona la casilla de verificación de la clave que creaste en una sección anterior de esta guía. Si no hay un panel de información etiquetado con el nombre de la clave que ya esté abierto, haz clic en Mostrar panel de información.

  4. En el panel de información, haz clic en  Agregar miembro para abrir el cuadro de diálogo Agregar miembros a “KEY_NAME. En este cuadro de diálogo, haz la siguiente acción:

    1. En el cuadro Miembros nuevos, ingresa la dirección de correo electrónico de la cuenta de servicio que anotaste en la sección anterior: service-AI_PLATFORM_PROJECT_NUMBER@cloud-ml.google.com.iam.gserviceaccount.com.
    2. En la lista desplegable Seleccionar una función, haz clic en Cloud KMS y, luego, selecciona la función Encriptador/desencriptador de CryptoKey de Cloud KMS.

    3. Haz clic en Guardar.

gcloud

Ejecuta el siguiente comando:

gcloud kms keys add-iam-policy-binding KEY_NAME \
  --keyring=KEY_RING_NAME \
  --location=REGION \
  --project=KMS_PROJECT_ID \
  --member=serviceAccount:service-AI_PLATFORM_PROJECT_NUMBER@cloud-ml.google.com.iam.gserviceaccount.com \
  --role=roles/cloudkms.cryptoKeyEncrypterDecrypter

En este comando, reemplaza los siguientes marcadores de posición:

  • KEY_NAME: Es el nombre de la clave que creaste en una sección anterior de esta guía.
  • KEY_RING_NAME: Es el llavero de claves que creaste en una sección anterior de esta guía.
  • REGION: Es la región en la que creaste el llavero de claves.
  • KMS_PROJECT_ID: Es el ID del proyecto de Cloud KMS.
  • AI_PLATFORM_PROJECT_NUMBER: Es el número del proyecto de AI Platform, que anotaste en la sección anterior como parte de una dirección de correo electrónico de cuenta de servicio.

Entrena con una cuenta de servicio personalizada

Si planeas usar una cuenta de servicio personalizada para el entrenamiento, también asegúrate de asignarle la función roles/cloudkms.cryptoKeyEncrypterDecrypter.

Para ello sigue las mismas instrucciones de antes, pero usa la dirección de correo electrónico de tu cuenta de servicio personalizada en lugar de la dirección de correo electrónico de la cuenta de servicio de AI Platform Training que administra Google.

Crea un trabajo de entrenamiento mediante CMEK

Ahora que le otorgaste permiso a AI Platform Training para encriptar y desencriptar datos mediante la clave, puedes crear un trabajo de entrenamiento en el que se encripten datos temporales con esta clave. Cuando crees un trabajo de entrenamiento, especifica el campo encryptionConfig en el campo trainingInput del trabajo.

En el siguiente ejemplo, se muestra cómo hacerlo mediante la herramienta de gcloud. En la actualidad, no puedes crear un trabajo de entrenamiento con CMEK en Cloud Console.

En el ejemplo, se supone que tienes una aplicación de entrenamiento en el sistema de archivos local dentro de un directorio llamado trainer con un módulo llamado task.

  1. Crea un archivo de configuración config.yaml en el que se incluya la siguiente información:

    trainingInput:
      encryptionConfig:
        kmsKeyName: projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME
    

    En el archivo de configuración, reemplaza los siguientes marcadores de posición:

    • KMS_PROJECT_ID: Es el ID del proyecto de Cloud KMS.
    • KEY_RING_NAME: Es el nombre del llavero de claves.
    • KEY_NAME: Es el nombre de tu clave.
  2. Para crear el trabajo de entrenamiento, ejecuta el siguiente comando:

    gcloud ai-platform jobs submit training JOB_ID \
      --config=config.yaml \
      --job-dir=JOB_DIR \
      --module-name=trainer.task \
      --package-path=trainer \
      --python-version=3.7 \
      --region=REGION \
      --runtime-version=2.1 \
      --scale-tier=basic
    

    En este comando, reemplaza los siguientes marcadores de posición:

    • JOB_ID: Es el nombre que elijas para el trabajo.
    • JOB_DIR: Es la ruta de acceso a un directorio de Cloud Storage al que se subirá tu aplicación de entrenamiento. El trabajo de entrenamiento también puede usar este directorio durante el entrenamiento, por ejemplo, para guardar el resultado. Para lograr una mayor comodidad, elige un directorio que se encuentre en un depósito de Cloud Storage en el proyecto de AI Platform.

    • REGION: Es la región en la que creaste el llavero de claves y en la que planeas crear el trabajo de entrenamiento.

    El comando produce el siguiente resultado si se ejecuta de forma correcta:

    Job [JOB_ID] submitted successfully.
    Your job is still active. You may view the status of your job with the command
    
      $ gcloud ai-platform jobs describe JOB_ID
    
    or continue streaming the logs with the command
    
      $ gcloud ai-platform jobs stream-logs JOB_ID
    jobId: JOB_ID
    state: QUEUED
    

    Ahora puedes supervisar el trabajo de entrenamiento.

Además de los campos region y encryptionConfig, puedes personalizar la configuración del trabajo de entrenamiento para satisfacer tus necesidades. Incluso puedes usar un contenedor personalizado para el entrenamiento.

Próximos pasos