Proteger tus datos con CMEK (1.ª gen.)
Puedes usar las claves de cifrado gestionadas por el cliente (CMEK) de Cloud Key Management Service para proteger las funciones de Cloud Run y los datos en reposo relacionados. Estas claves se crean y gestionan a través de Cloud KMS, y se almacenan como claves de software en un clúster de HSM o externamente.
Al implementar una función con una CMEK, se protegen los datos asociados a ella mediante una clave de cifrado que controlas por completo. Este tipo de cifrado te permite cumplir los requisitos de cumplimiento normativo de determinados sectores, como el de los servicios financieros. Como la clave es de tu propiedad y Google no la controla, nadie (ni siquiera tú) puede acceder a los datos protegidos por estas claves de cifrado cuando las claves están inhabilitadas o destruidas.
Los siguientes tipos de datos de funciones de Cloud Run se cifran cuando se usa una CMEK:
- Código fuente de la función subido para la implementación y almacenado por Google en Cloud Storage, que se usa en el proceso de compilación.
- Los resultados del proceso de compilación de funciones, entre los que se incluyen los siguientes:
- La imagen de contenedor creada a partir del código fuente de tu función.
- Cada instancia de la función que se ha implementado.
- Datos en reposo de los canales de transporte de eventos internos.
El proceso de compilación de la función está protegido por una clave efímera que se genera de forma única para cada compilación. Para obtener más información, consulta el artículo sobre el cumplimiento de CMEK en Cloud Build. Además, ten en cuenta lo siguiente:
Los metadatos de los archivos, como las rutas del sistema de archivos o las marcas de tiempo de modificación, no están cifrados.
Si una clave está inhabilitada, la imagen de contenedor no se puede implementar y no se pueden iniciar instancias nuevas.
La protección con CMEK de las funciones de Cloud Run solo se aplica a los recursos de funciones de Cloud Run gestionados por Google. Tú eres responsable de proteger los datos y los recursos que gestionas, como tus repositorios de código fuente o cualquier servicio que utilicen tus funciones.
Para configurar CMEK en funciones de Cloud Run, debes hacer lo siguiente:
Concede acceso a las cuentas de servicio necesarias a la clave:
- En todas las funciones, debes conceder acceso a la clave a las cuentas de servicio de Cloud Run Functions, Artifact Registry y Cloud Storage.
Crear un repositorio de Artifact Registry protegido con CMEK para almacenar las imágenes de tu función.
Habilitando las claves de cifrado gestionadas por el cliente en tu función.
Si quieres, habilita las políticas de organización de CMEK para que todas las funciones nuevas cumplan los requisitos de CMEK.
Estos pasos se describen con más detalle a continuación.
Antes de empezar
Crea una clave de una sola región para cifrar tus funciones. Para saber cómo crear una clave, consulta Crear claves de cifrado simétricas.
Crea un repositorio de Artifact Registry que tenga habilitada la clave CMEK. Debes usar la misma clave para el repositorio de Artifact Registry que cuando habilitas CMEK para una función.
Conceder acceso a la clave a cuentas de servicio
Para todas las funciones, debes conceder acceso a la clave a las siguientes cuentas de servicio:
Agente de servicio de funciones de Cloud Run (
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
)
Para conceder acceso a la clave a estas cuentas de servicio, añade cada cuenta de servicio como principal de la clave y, a continuación, asigna a la cuenta de servicio el rol Cloud KMS CryptoKey Encrypter/Decrypter
:
Consola
Ve a la página Cloud Key Management Service en la Google Cloud consola:
Ir a la página de Cloud KMSHaz clic en el nombre del conjunto de claves que contiene la clave elegida.
Haga clic en el nombre de la clave para ver sus detalles.
En la pestaña Permisos, haz clic en Conceder acceso.
En el campo Nuevos principales, introduce las direcciones de correo de las tres cuentas de servicio que se han mostrado anteriormente para asignar permisos a las tres cuentas a la vez.
En el menú desplegable Selecciona un rol, elige Encargado del encriptado y desencriptado de la clave criptográfica Cloud KMS.
Haz clic en Guardar.
gcloud
Ejecuta el siguiente comando para cada cuenta de servicio que hemos mencionado anteriormente:
gcloud kms keys add-iam-policy-binding KEY \ --keyring KEY_RING \ --location LOCATION \ --member serviceAccount:SERVICE_AGENT_EMAIL \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter
Haz los cambios siguientes:
KEY
: el nombre de la clave. Por ejemplo,my-key
.KEY_RING
: el nombre del conjunto de claves. Por ejemplo,my-keyring
.LOCATION
: la ubicación de la clave. Por ejemplo,us-central1
.SERVICE_AGENT_EMAIL
: la dirección de correo de la cuenta de servicio.
Habilitar las claves de cifrado gestionadas por el cliente en una función
Después de configurar un repositorio de Artifact Registry con CMEK habilitado y de conceder acceso a tu clave a las funciones de Cloud Run, podrás habilitar CMEK en tu función.
Para habilitar las claves de cifrado gestionadas por el cliente en una función, sigue estos pasos:
Consola
Ve a la página de funciones de Cloud Run en la Google Cloud consola:
Ir a la página de funciones de Cloud RunHaga clic en el nombre de la función en la que quiera habilitar CMEK.
Haz clic en Editar.
Haz clic en Tiempo de ejecución, compilación... para desplegar las opciones de configuración avanzada.
Selecciona la pestaña Seguridad y repositorio de imágenes.
En la sección Encriptado, selecciona Clave de encriptado gestionada por el cliente (CMEK).
Selecciona la clave que hayas elegido en el menú desplegable.
En Ubicación del contenedor, selecciona Artifact Registry gestionado por el cliente.
En el menú desplegable Artifact Registry, selecciona el repositorio protegido con CMEK.
Haz clic en Siguiente.
Haz clic en Desplegar.
gcloud
Ejecuta el siguiente comando:
gcloud functions deploy FUNCTION \ --no-gen2 \ --kms-key=KEY \ --docker-repository=REPOSITORY \ --source=YOUR_SOURCE_LOCATION FLAGS...
Haz los cambios siguientes:
FUNCTION
: el nombre de la función para habilitar CMEK. Por ejemplo,cmek-function
.KEY
: el nombre de clave completo, con el siguiente formato:projects/PROJECT_NAME/locations/LOCATION/keyRings/KEYRING_NAME/cryptoKeys/KEY_NAME
.REPOSITORY
: el nombre de repositorio de Artifact Registry totalmente cualificado, con el siguiente formato:projects/PROJECT_NAME/locations/LOCATION/repositories/REPOSITORY
.YOUR_SOURCE_LOCATION
: Cuando habilites CMEK en una función que ya exista, asegúrate de que el código fuente que quieras se vuelva a implementar especificando este parámetro de forma explícita.FLAGS...
: marcas adicionales que pueden ser necesarias para implementar tu función, sobre todo en el caso de las implementaciones de creación. Para obtener más información, consulta el artículo Desplegar una función de Cloud Run.
CMEK está habilitada en la función.
Ten en cuenta que las funciones de Cloud Run siempre usan la versión principal de una clave para la protección con CMEK. No puedes especificar una versión de clave concreta para usarla al habilitar las claves de encriptado gestionadas por el cliente (CMEK) en tus funciones.
Si una clave se destruye o se inhabilita, o si se revocan los permisos necesarios, las instancias activas de las funciones protegidas por esa clave no se cierran. Las ejecuciones de funciones que ya estén en curso seguirán ejecutándose, pero las nuevas fallarán mientras Cloud Run Functions no tenga acceso a la clave.
Probar la protección con CMEK
Para verificar que la protección con CMEK funciona, puedes inhabilitar la clave que has usado para habilitar la CMEK en una función y, a continuación, intentar activar la función:
Inhabilita la clave que se usa para proteger tu función.
Intenta ver el código fuente asociado a esta función. El intento debería fallar.
Intenta activar la función protegida por CMEK. El intento debería fallar.
Una vez que hayas verificado que la protección con CMEK funciona, habilita la clave.
Ahora se ha confirmado la protección con CMEK de la función.
Siguientes pasos
- Consulta cómo rotar tus claves.
- Más información sobre el cifrado predeterminado de Google
- Más información sobre las CMEK
- Consulta más información sobre las políticas de organización de CMEK.