Protege tus datos con CMEK
En esta página, se proporciona información complementaria para proteger tus datos con claves de encriptación administradas por el cliente (CMEK) para las funciones creadas con comandos gcloud functions
o la API de Cloud Functions v2.
Para obtener una descripción detallada de las CMEK, incluida la configuración manual, el uso de Autokey y la prueba de la protección de CMEK, consulta la documentación de Cloud Run.
Los siguientes tipos de datos de Cloud Run Functions se encriptan cuando se usa una CMEK:
- Código fuente de la función subido para la implementación y almacenado por Google en Cloud Storage, y usado en el proceso de compilación
- Los resultados del proceso de compilación de funciones, incluidos los siguientes:
- La imagen de contenedor compilada a partir del código fuente de tu función
- Cada instancia de la función que se implementa
El proceso de compilación de la función está protegido por una clave efímera generada de forma única para cada compilación. Consulta Cumplimiento de CMEK en Cloud Build para obtener más información. Además, ten en cuenta lo siguiente:
Los metadatos de archivo, como las rutas de acceso del sistema de archivos o las marcas de tiempo de modificación, no se encriptan.
Si se inhabilita una clave, la imagen de contenedor no se puede implementar ni las instancias nuevas pueden iniciarse.
La protección con CMEK de Cloud Run Functions solo se aplica a los recursos de Cloud Run Functions administrados por Google. Tú eres responsable de proteger los datos y recursos que administras, como los repositorios de código fuente, los canales de eventos que se encuentran en el proyecto del cliente o cualquier servicio que usen tus funciones.
Antes de comenzar
Crea una clave de una sola región para encriptar tus funciones. Para aprender a crear una clave, consulta Crea claves de encriptación simétricas.
Crea un repositorio de Artifact Registry que tenga CMEK habilitadas. Debes usar la misma clave para el repositorio de Artifact Registry que usas cuando habilitas CMEK en una función.
Para las funciones controladas por eventos, sigue los pasos de configuración adicionales que se describen en Habilita CMEK para un canal de Google.
Otorga a las cuentas de servicio acceso a la clave
Para todas las funciones, debes otorgar acceso a la clave a las siguientes cuentas de servicio:
Agente de servicio de Cloud Run Functions (
service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com
)Agente de servicio de Artifact Registry (
service-PROJECT_NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com
)Agente de servicio de Cloud Storage (
service-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com
)Agente de servicio de Cloud Run (
service-PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com
)Agente de servicio de Eventarc (
service-PROJECT_NUMBER@gcp-sa-eventarc.iam.gserviceaccount.com
)
Para otorgar acceso a la clave a estas cuentas de servicio, agrega cada una como principal de la clave y, luego, otorga a la cuenta de servicio el rol Cloud KMS CryptoKey Encrypter/Decrypter
:
Console
Ve a la página de Cloud Key Management Service en la Google Cloud consola:
Ir a la página de Cloud KMSHaz clic en el nombre del llavero de claves que contiene la clave elegida.
Haz clic en el nombre de la clave para ver los detalles.
En la pestaña Permisos, haz clic en Otorgar acceso.
En el campo Principales nuevas, ingresa las direcciones de correo electrónico de las tres cuentas de servicio que se analizaron antes para asignar permisos a las tres cuentas a la vez.
En el menú Selecciona un rol, selecciona Encriptador/desencriptador de CryptoKey de Cloud KMS.
Haz clic en Guardar.
gcloud
Para cada cuenta de servicio que se analizó antes, ejecuta el siguiente comando:
gcloud kms keys add-iam-policy-binding KEY \ --keyring KEY_RING \ --location LOCATION \ --member serviceAccount:SERVICE_AGENT_EMAIL \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter
Reemplaza lo siguiente:
KEY
: El nombre de la clave. Por ejemplo,my-key
KEY_RING
: El nombre del llavero de claves. Por ejemplo,my-keyring
LOCATION
: La ubicación de la clave. Por ejemplo,us-central1
SERVICE_AGENT_EMAIL
: Es la dirección de correo electrónico de la cuenta de servicio.
Habilita CMEK para una función
Después de configurar un repositorio de Artifact Registry con CMEK habilitadas y otorgar a Cloud Run Functions acceso a tu clave, estarás listo para habilitar CMEK en tu función.
Para habilitar CMEK para una función, ejecuta el siguiente comando:
gcloud functions deploy FUNCTION \ --kms-key=KEY \ --docker-repository=REPOSITORY \ --source=YOUR_SOURCE_LOCATION FLAGS...
Reemplaza lo siguiente:
FUNCTION
: El nombre de la función en la que se habilitará CMEK. Por ejemplo,cmek-function
KEY
: El nombre de la clave completamente calificado, en el siguiente formato:projects/PROJECT_NAME/locations/LOCATION/keyRings/KEYRING_NAME/cryptoKeys/KEY_NAME
.REPOSITORY
: El nombre del repositorio de Artifact Registry completamente calificado, en el siguiente formato:projects/PROJECT_NAME/locations/LOCATION/repositories/REPOSITORY
.YOUR_SOURCE_LOCATION
: Cuando habilites las CMEK para una función preexistente, asegúrate de que el código fuente deseado se vuelva a implementar mediante la especificación explícita de este parámetro.FLAGS...
: Son marcas adicionales que se pueden requerir para implementar la función, en especial a fin de crear implementaciones. Para obtener más detalles, consulta Implementa una Cloud Run Functions.
La CMEK está habilitada para la función. De manera opcional, habilita las políticas de la organización de CMEK para aplicar todas las funciones nuevas a fin de que cumplan con CMEK.
Ten en cuenta que Cloud Run Functions siempre usa la versión principal de una clave para la protección con CMEK. No puedes especificar una versión de clave en particular que se usará cuando habilites CMEK para tus funciones.
Si una clave se destruye o se inhabilita, o se revocan los permisos necesarios relacionados con ella, no se cierran las instancias activas de funciones protegidas por esa clave. Las ejecuciones de funciones que ya están en curso seguirán ejecutándose, pero las ejecuciones nuevas fallarán siempre que Cloud Run Functions no tenga acceso a la clave.