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:
Cloud Storage: Cuando ejecutas un trabajo de contenedor no personalizado, AI Platform Training carga la aplicación de entrenamiento desde un depósito de Cloud Storage. Además, la mayoría de los trabajos de entrenamiento también exportan artefactos de modelos entrenados (por ejemplo, un directorio de SaveModel de TensorFlow) a un bucket de Cloud Storage como parte del resultado.
Para asegurarte de que los datos en Cloud Storage estén encriptados mediante CMEK, lee la guía de Cloud Storage para usar claves de encriptación administradas por el cliente. Puedes configurar la clave de encriptación como la clave predeterminada para los depósitos de Cloud Storage que usas con AI Platform Training o puedes usarla con el fin de encriptar objetos específicos.
Container Registry: Cuando ejecutas un trabajo de contenedor personalizado, AI Platform Training carga la imagen de contenedor desde Container Registry.
Para asegurarte de que la imagen de contenedor se encriptó mediante CMEK, lee la guía de Container Registry para usar claves de encriptación administradas por el cliente.
Cloud Logging: Cuando ejecutas un trabajo de entrenamiento, AI Platform Training guarda los registros en Logging. Estos registros no están encriptados mediante CMEK. Sin embargo, si usas el Enrutador de registros, puedes configurar CMEK para ciertos archivos temporales que crea el Enrutador de registros.
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
- Accede a tu cuenta de Google Cloud. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.
-
Enable the Cloud KMS API.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.
-
Enable the Cloud KMS API.
Configura el proyecto de AI Platform
- Accede a tu cuenta de Google Cloud. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.
-
Enable the AI Platform Training & Prediction API.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.
-
Enable the AI Platform Training & Prediction API.
Configura Google Cloud CLI
gcloud CLI es obligatoria para algunos pasos de esta guía y es opcional para 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 servicio agente para ejecutar tu entrenamiento de seguridad en la nube. 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, consulta
a la página IAM en la consola de Google Cloud y busca el miembro que coincida
este formato de dirección de correo electrónico, con el nombre de
número para
tu proyecto de AI Platform para reemplazar el
La variable AI_PLATFORM_PROJECT_NUMBER El agente de servicio también tiene
nombre Google Cloud ML Engine Service Agent
.
Anota la dirección de correo electrónico de este agente de servicio y úsala en la siguiendo los pasos para otorgarle permiso para encriptar y desencriptar datos mediante tu . Puedes otorgar permisos mediante la consola de Google Cloud o mediante la CLI de Google Cloud.
Consola de Google Cloud
En la consola de Google Cloud, ve a la página Claves criptográficas y selecciona el proyecto de Cloud KMS.
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.
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.
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:- 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
. 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.
Haz clic en Guardar.
- 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:
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
.
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.
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?
- Obtén más información sobre CMEK en Google Cloud.
- Obtén más información sobre cómo usar CMEK con otros productos de Google Cloud.
- Para obtener más información sobre cómo configurar otras opciones además de CMEK, consulta la guía para ejecutar un trabajo de entrenamiento.