De forma predeterminada, Cloud Tasks encripta tus datos almacenados en reposo. Google Cloud administra esta encriptación predeterminada por ti sin que debas realizar ninguna acción adicional.
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 Cloud Tasks. Tu tarea y los datos asociados (cuerpo y encabezado) en están protegidos con una clave de encriptación a la que solo tú puedes acceder, que puedes controlar y administrar con Cloud Key Management Service (Cloud KMS).
Qué se protege con CMEK
Cuando habilitas CMEK en Cloud Tasks, lo haces para una región. Cuando se habilita, el cuerpo y el encabezado de las tareas creadas en esa región están protegidos con tu llave cuando está en reposo. Si se creó una tarea mientras CMEK estaba habilitada la clave queda inactiva (inhabilitando o borrando la clave, o inhabilitar CMEK), la tarea se encripta con tu clave, pero no se puede ejecutar.
Las tareas no están protegidas con CMEK en los siguientes casos:
- Se creó la tarea antes de habilitar CMEK
- La tarea no está en la región para la que se habilitaron las CMEK
- La tarea se ve afectada por una limitación de compatibilidad.
Limitaciones de compatibilidad
La integración de Cloud Tasks con CMEK no admite lo siguiente:
google-gax
versiones anteriores a4.0.0
: El paquetegoogle-gax
de NPM para Node.js tiene compatibilidad limitada en versiones anteriores a4.0.0
. Para estas versiones, CMEK solo es compatible con el regiónus-central1
. Incluso si solo tienes tareas en esa región, es te recomendamos que actualices a la versión4.0.0
o una posterior.Servicio Taskqueue integrado en App Engine: Las tareas creadas con el servicio Taskqueue integrado en App Engine no están protegidas por CMEK, incluso si se encuentran en una región para la que está habilitado. Habilitar CMEK no impide la creación o la operación (por ejemplo, ejecución o eliminación) de estas tareas.
Colas de extracción: Si habilitas las CMEK, puedes crear y ejecutar tareas en las colas de extracción, pero estas tareas no están protegidas por las CMEK. Las listas de extracción son poco comunes. Para verificar si tu cola es una cola de extracción, ejecuta el siguiente comando de gcloud CLI en la terminal:
gcloud tasks queues describe QUEUE_NAME
Reemplaza
QUEUE_NAME
por el nombre de tu fila.Si el
type
que aparece espull
, tu fila es una fila de extracción. Si el elementotype
aparecepush
, esta limitación no afecta las tareas de tu cola.Enrutamiento a nivel de la cola: Cuando CMEK está habilitado, no puedes aplicar el enrutamiento a nivel de la cola. Y si el enrutamiento a nivel de la cola está habilitado, no puedes habilitar CMEK. Para verificar si tienes habilitado el enrutamiento a nivel de la fila, haz lo siguiente:
Ejecuta el siguiente comando de gcloud CLI en la terminal:
Reemplazagcloud tasks queues describe QUEUE_NAME
QUEUE_NAME
por el nombre de tu cola.En el resultado, busca el campo
httpTarget
y comprueba si se configuróuriOverride
. Si se especifica unhost
, la cola tiene el enrutamiento a nivel de cola habilitado y no es compatible con CMEK. Para quitar el enrutamiento a nivel de la cola, consulta Cómo actualizar o quitar el enrutamiento a nivel de la cola. Si el resultado no muestrauriOverride
con unhost
especificado, tu fila no usa el enrutamiento a nivel de la fila.
TTL de la tarea: Cuando la CMEK está habilitada, no puedes establecer
task_ttl
en más de 60 días. Además, si tienes untask_ttl
establecido en más de 60 días, no puedes habilitar las CMEK.
Antes de comenzar
Antes de usar CMEK en Cloud Tasks, completa los siguientes pasos:
Habilita las APIs.
Console
-
Enable the Cloud KMS and Cloud Tasks APIs.
gcloud
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Configura tu proyecto predeterminado. Este debe ser el proyecto que contiene los recursos de Cloud Tasks que deseas proteger con CMEK. Si necesitas ejecutar un comando en un proyecto diferente, como el que contiene tus recursos de Cloud KMS, en esta página incluir la marca
--project
en el comando de gcloud CLI te dirán qué proyecto especificar.gcloud config set project PROJECT_ID
Reemplaza
PROJECT_ID
por el ID del proyecto. que contiene tus recursos de Cloud Tasks.Actualiza los componentes de
gcloud
:gcloud components update
Habilita las APIs de Cloud KMS y Cloud Tasks del proyecto que almacenará tus claves de encriptación.
gcloud services enable cloudkms.googleapis.com cloudtasks.googleapis.com
--project=PROJECT_IDReemplaza
PROJECT_ID
por el ID del proyecto que almacenará tus claves de encriptación. Este puede ser el mismo proyecto que tus recursos de Cloud Tasks, pero para limitar el acceso a tus claves de Cloud KMS, considera configurar Cloud KMS en un proyecto independiente.
-
Cloud KMS produce Registros de auditoría de Cloud cuando las claves están habilitadas. inhabilitados o que los recursos de Cloud Tasks usen para encriptar y desencriptar de datos no estructurados. Asegúrate de que el registro está habilitado para la API de Cloud KMS en tu proyecto y que decidiste Qué permisos y roles específicos de registro se aplican a tu caso de uso. Para ver más información, consulta Información de registro de auditoría de Cloud KMS.
Obtener roles de Identity and Access Management
Para obtener los permisos que necesitas para usar CMEK con Cloud Tasks, pídele a tu administrador que te otorgue los siguientes roles de IAM en tu proyecto:
-
Habilita o inhabilita CMEK:
roles/cloudtasks.admin
-
Consulta la clave en uso:
roles/cloudtasks.viewer
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.
-
Habilita o inhabilita CMEK:
Crea un llavero de claves y una clave de Cloud KMS globales
Si ya tienes un llavero en la misma región que tus recursos de Cloud Tasks y deseas usar esa clave y ese llavero, omite esta sección. De lo contrario, sigue estas instrucciones para crear tu clave y llavero de Cloud KMS.
-
El llavero de claves debe estar en la región que contiene la Recursos de Cloud Tasks que quieres proteger. Para obtener más información, consulta Ubicaciones de Cloud KMS y Ubicaciones de Cloud Tasks.
El llavero de claves y los recursos de Cloud Tasks protegidos con CMEK pueden estar en el mismo proyecto, pero para limitar el acceso a tu clave, considera configurar Cloud KMS en un proyecto separado
Cómo recuperar el ID de una clave de Cloud KMS
El ID de recurso de una clave de Cloud KMS es obligatorio cuando habilitas las CMEK para Cloud Tasks.
Console
En la consola de Google Cloud, ve a la página Administración de claves y selecciona la pestaña Key inventory.
Para la clave con el ID de recurso que quieres recuperar, haz clic en more_vert Acciones.
Haz clic en Copiar nombre del recurso.
Se copiará el ID de recurso de la clave en el portapapeles. Su formato es similar al siguiente:
projects/PROJECT_NAME/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME
gcloud
Enumera todas las claves de un llavero de claves determinado:
gcloud kms keys list --keyring=KEY_RING --location=LOCATION --project=PROJECT_ID
Reemplaza lo siguiente:
KEY_RING
: es el nombre del llavero de claves.LOCATION
: Es la región del llavero de claves.PROJECT_ID
: El ID del proyecto que contiene el llavero
El resultado incluye el ID de cada clave. Por ejemplo:
NAME: projects/PROJECT_NAME/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME
Otorga al agente de servicio de Cloud Tasks acceso a la clave
Debes otorgar al agente de servicio de Cloud Tasks el rol de administración de identidades y accesos (IAM) de encriptador/desencriptador de CryptoKey de Cloud KMS para que pueda acceder a la clave de Cloud KMS:
Console
En la consola de Google Cloud, ve a la página Identity and Access Management.
Selecciona la casilla de verificación Incluir asignaciones de funciones proporcionadas por Google.
Para encontrar la cuenta de servicio de Cloud Tasks, escribe
cloudtasks.iam.gserviceaccount.com
en el filtro.La cuenta de servicio de Cloud Tasks tiene el siguiente formato:
service-PROJECT_NUMBER@gcp-sa-cloudtasks.iam.gserviceaccount.com
Haz clic en el ícono de lápiz para Editar principal.
En el panel que se abre, haz clic en Agregar otro rol.
Busca y selecciona el rol de Encriptador/desencriptador de CryptoKey de Cloud KMS.
Haz clic en Guardar.
gcloud
gcloud kms keys add-iam-policy-binding KEY_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-cloudtasks.iam.gserviceaccount.com \ --role=roles/cloudkms.cryptoKeyEncrypterDecrypter
Reemplaza lo siguiente:
KEY_ID
: Es el ID de recurso completamente calificado para tu . Para obtener instrucciones sobre cómo encontrar este ID, consulta Cómo recuperar el ID de una clave de Cloud KMS. No incluyas un número de versión de clave. Si incluyes un número de versión de clave, es posible que esto comando fallar.PROJECT_NUMBER
: el número de tu proyecto de Google Cloud. Para encontrar el número del proyecto, ve a la página de bienvenida de la consola de Google Cloud o ejecuta el siguiente comando:PROJECT=$(gcloud info --format='value(config.project)') gcloud projects describe ${PROJECT} --format="value(projectNumber)"
Siempre que el agente de servicio tenga el rol roles/cloudkms.cryptoKeyEncrypterDecrypter
, una tarea en tu región habilitada para CMEK puede encriptar y desencriptar sus datos con la clave de CMEK. Si revocas este rol o si inhabilitas o destruyes la CMEK
clave, no se podrá acceder a ellos. En este documento, consulta Cómo inhabilitar Cloud KMS.
Habilita CMEK para Cloud Tasks
Puedes habilitar CMEK con la API o gcloud CLI. En el caso de Cloud Tasks, la CMEK está habilitada por región. No se habilita en tareas individuales. Cuando se habilita CMEK para una región determinada en Cloud Tasks, todas las tareas de esa región están protegidas por CMEK.
API
Puedes habilitar CMEK llamando al método Update CMEK config
. La API de Cloud Tasks proporciona el método Update CMEK config
en las APIs de REST y RPC:
- REST: Usa el método
updateCmekConfig
. - RPC: Usa el método
UpdateCmekConfigRequest
.
gcloud
Para habilitar CMEK con Google Cloud CLI, usa el siguiente comando:
gcloud tasks cmek-config update --location=LOCATION --kms-key-name=KEY_ID
Reemplaza lo siguiente:
LOCATION
: Es la región de tu Recurso de Cloud TasksKEY_ID
: El ID de recurso completamente calificado de tu clave. Para obtener instrucciones sobre cómo encontrarlo, consulta Recupera el ID de una clave de Cloud KMS. No incluir una clave número de versión. Si incluyes un número de versión de clave, es posible que el comando falle.
Para verificar que la clave se habilitó correctamente, sigue las instrucciones sección Cómo identificar la clave en uso.
Habilita la función para tareas preexistentes
El CMEK no protege las tareas que se crearon antes de habilitar el CMEK para Cloud Tasks. Para proteger tareas preexistentes con CMEK, sigue estos pasos:
- Habilita CMEK (consulta la sección sobre cómo habilitar CMEK).
Reemplaza las tareas preexistentes. Existen dos formas principales de hacerlo. El la mejor manera de hacerlo depende de lo que sea importante para ti:
Ejecución continua: Para garantizar la ejecución continua ("al menos una vez" de la entrega), primero puedes volver a crear la tarea y, luego, borrar la tarea preexistente después de verificar que la nueva tarea funcione como se espera. Esto puede provocar ejecuciones duplicadas, ya que tanto la tarea anterior como la nueva pueden ejecutarse antes de que borrar la tarea anterior.
Prevención de duplicados: Para evitar ejecuciones duplicadas ("como máximo una vez"). (entrega), puedes borrar la tarea anterior y volver a crearla. Esto puede provocar ejecuciones perdidas debido al tiempo transcurrido entre la eliminación de la tarea anterior y la creación de la nueva.
Identifica la clave en uso
Para identificar la clave CMEK en uso para tus recursos de Cloud Tasks, Ejecuta el siguiente comando de gcloud CLI en tu terminal:
gcloud tasks cmek-config describe --location=LOCATION
Reemplaza LOCATION
por la región de tu
Recursos de Cloud Tasks.
Si no hay ningún resultado, significa que la CMEK no está configurada para la ubicación especificada.
Inhabilita CMEK para Cloud Tasks
Puedes inhabilitar CMEK con la API o gcloud CLI. Para Cloud Tasks, CMEK está inhabilitado por región. No lo inhabilita tareas individuales. Cuando CMEK se inhabilita para una región determinada en Cloud Tasks: las tareas de esa región no están protegidas por CMEK.
Inhabilitar CMEK afectará a las tareas creadas en el futuro, no a las creadas en el anterior:
- Tareas nuevas: no están protegidas por CMEK.
Tareas preexistentes: Las tareas que se crearon mientras la CMEK estaba habilitada permanecen encriptado y seguirá ejecutándose mientras la clave permanezca activa.
API
Puedes inhabilitar CMEK llamando al método Update CMEK config
y borrando
la clave de Cloud KMS reemplazándola por una cadena vacía. La API de Cloud Tasks proporciona el método Update CMEK config
en las APIs de REST y RPC:
- REST: Usa el método
updateCmekConfig
. - RPC: Usa el método
UpdateCmekConfigRequest
.
gcloud
Para inhabilitar CMEK con Google Cloud CLI, usa el siguiente comando:
gcloud tasks cmek-config update --location=LOCATION --clear-kms-key
Reemplaza lo siguiente:
LOCATION
: Es la región de tu recurso de Cloud Tasks.
Quita Cloud KMS
Si quieres revocar el acceso a los datos de tus tareas, puedes quitar Cloud KMS. Existen tres maneras de hacerlo:
Inhabilita la cuenta de servicio administrada por el cliente. clave de encriptación. Inhabilitar una clave de CMEK suspende el acceso a todos los datos protegidos por esa versión de clave mientras la clave está inhabilitada. No puedes acceder a tareas ni crearlas con una clave inhabilitada. Se intentará ejecutar una tarea protegida con CMEK mientras Si la clave está inhabilitada, se mostrará un error
UNKNOWN
en Cloud Logging. Puedes vuelve a habilitar la clave más adelante si lo deseas. Cuando inhabilitas una clave de encriptación administrada por el cliente, el cambio puede tardar hasta 5 minutos en aplicarse.Destruye la cuenta de servicio administrada por el cliente. clave de encriptación. Si destruyes una clave CMEK, se suspende de forma permanente el acceso a todos los datos protegida por esa versión de clave. No puedes acceder a tareas ni crearlas con una clave que se haya destruido. Si se creó una tarea mientras la CMEK estaba habilitada y, luego, se destruye la clave, la tarea se encripta con tu clave, pero no se puede ejecutar. Si la tarea intenta ejecutarse, Cloud Logging registra un error
UNKNOWN
. Cuándo destruyes una clave de encriptación administrada por el cliente, puede tardar hasta 5 minutos el cambio que se debe aplicar.Revocar el
cloudkms.cryptoKeyEncrypterDecrypter
de IAM desde Agente de servicio de Cloud Tasks. Esto afecta a todas las tareas del proyecto de Google Cloud que admiten la encriptación con CMEK. No puedes crear tareas integradas con CMEK nuevas o visualizar cualquier recurso encriptado con CMEK.
Aunque ninguna de estas operaciones garantiza revocación instantánea del acceso, Los cambios de IAM suelen aplicarse más rápido. Para obtener más información, consulta Coherencia de recursos de Cloud KMS y Propagación del cambio de acceso.
Precios
Esta integración no genera costos adicionales más allá de las operaciones de clave que se facturan en tu proyecto de Google Cloud. Para ver los precios actuales consulta los precios de Cloud KMS.