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 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. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Cloud KMS API.

    Enable the API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Cloud KMS API.

    Enable the API

Configura el proyecto de AI Platform

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the AI Platform Training & Prediction API.

    Enable the API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the AI Platform Training & Prediction API.

    Enable the API

Configura Google Cloud CLI

gcloud CLI es obligatoria en algunos pasos de esta guía y opcional en otros.

Install the Google Cloud CLI, then initialize it by running the following command:

gcloud init

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 un agente de servicio para ejecutar los trabajos de entrenamiento. Este agente 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

Para encontrar el agente de servicio adecuado para tu proyecto de AI Platform, ve a la página IAM en la consola de Google Cloud 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. El agente 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 este agente de servicio y úsala en los pasos siguientes para otorgarle permiso para encriptar y desencriptar datos con tu clave. Puedes otorgar permisos mediante la consola de Google Cloud o mediante la CLI de Google Cloud.

Consola de Google Cloud

  1. En la consola de Google Cloud, 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.

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 CLI de gcloud. En la actualidad, no puedes crear un trabajo de entrenamiento con CMEK en la consola de Google Cloud.

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.11 \
      --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 bucket 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.

¿Qué sigue?