Prácticas recomendadas para usar CMEK

En esta página, se describen las prácticas recomendadas para configurar la encriptación en reposo con claves de encriptación administradas por el cliente (CMEK) en tus Trusted Cloud recursos. Esta guía está dirigida a arquitectos de nube y equipos de seguridad, y describe las prácticas recomendadas y las decisiones que debes tomar cuando diseñas tu arquitectura de CMEK.

En esta guía, se da por sentado que ya conoces Cloud Key Management Service (Cloud KMS) y las claves de encriptación administradas por el cliente.

Decide si usarás CMEK

Te recomendamos que uses CMEK para encriptar los datos en reposo en los servicios de Trusted Cloud si necesitas alguna de las siguientes funciones:

  • Ser propietario de tus claves de encriptación

  • Controla y administra tus claves de encriptación, incluida la elección de la ubicación, el nivel de protección, la creación, el control de acceso, la rotación, el uso y la destrucción.

  • Genera material de clave en Cloud KMS o importa material de clave que se mantenga fuera de Trusted Cloud.

  • Establece una política sobre dónde se deben usar tus claves.

  • Borra de forma selectiva los datos protegidos por tus claves en caso de desvinculación o para solucionar eventos de seguridad (fragmentación criptográfica).

  • Crea y usa claves únicas para un cliente y establece un límite criptográfico alrededor de tus datos.

  • Registra el acceso administrativo y a los datos a las claves de encriptación.

  • Cumple con la reglamentación actual o futura que requiera cualquiera de estos objetivos.

Si no necesitas estas capacidades, evalúa si la encriptación predeterminada en reposo con Google Cloud-powered keys es adecuada para tu caso de uso. Si decides usar solo la encriptación predeterminada, puedes dejar de leer esta guía.

Diseña tu arquitectura de CMEK

Cuando diseñes una arquitectura de CMEK, debes tener en cuenta la configuración de las claves que usarás y cómo se administran. Estas decisiones influyen en el costo, la sobrecarga operativa y la facilidad de implementar funciones, como la destrucción criptográfica.

En las siguientes secciones, se analizan las recomendaciones para cada opción de diseño.

Usa un proyecto de clave CMEK centralizado para cada entorno

Te recomendamos que uses un proyecto de clave CMEK centralizado para cada carpeta de entorno. No crees recursos encriptados con CMEK en el mismo proyecto en el que administras las claves de Cloud KMS. Este enfoque ayuda a evitar el uso compartido de claves de encriptación entre entornos y permite la separación de tareas.

En el siguiente diagrama, se ilustran estos conceptos en el diseño recomendado:

  • Cada carpeta de entorno tiene un proyecto de clave de Cloud KMS que se administra por separado de los proyectos de la aplicación.
  • Los llaveros de claves y las claves de Cloud KMS se aprovisionan en el proyecto de claves de Cloud KMS, y estas claves se usan para encriptar recursos en los proyectos de la aplicación.
  • Las políticas de Identity and Access Management (IAM) se aplican a proyectos o carpetas para permitir la separación de deberes. El principal que administra las claves de Cloud KMS en el proyecto de claves de Cloud KMS no es el mismo que usa las claves de encriptación en los proyectos de aplicaciones.

Estructura recomendada de carpetas y proyectos de Cloud KMS

Crea llaveros de claves de Cloud KMS para cada ubicación

Debes crear llaveros de claves de Cloud KMS en las ubicaciones en las que implementes recursos deTrusted Cloud encriptados con CMEK.

  • Los recursos regionales y zonales deben usar un llavero de claves y CMEK en la misma región que el recurso o en la ubicación global.
  • Los recursos globales deben usar un llavero de claves y una CMEK en la ubicación global.

La aplicación forzosa de claves regionales es una parte de una estrategia de regionalización de datos. Cuando se aplica la aplicación forzosa del uso de llaveros de claves y claves en una región definida, también se aplica la aplicación forzosa de que los recursos deben coincidir con la región del llavero de claves.

En el caso de las cargas de trabajo que requieren alta disponibilidad o capacidades de recuperación ante desastres en varias ubicaciones, es tu responsabilidad evaluar si tu carga de trabajo es resiliente en caso de que Cloud KMS deje de estar disponible en una región determinada. Por ejemplo, un disco persistente de Compute Engine encriptado con una clave de Cloud KMS de la región A no se puede volver a crear en la región B en una situación de recuperación ante desastres en la que la región A no está disponible. Para mitigar el riesgo de esta situación, puedes planificar la encriptación de un recurso con claves global.

Elige una estrategia de nivel de detalle de las claves

El nivel de detalle hace referencia a la escala y el alcance del uso previsto de cada clave. Por ejemplo, se dice que una clave que protege varios recursos es menos detallada que una clave que protege solo un recurso.

Las claves de Cloud KMS que se usan para las CMEK deben provisionarse con anticipación antes de crear un recurso que se encriptará con la clave, como un disco persistente de Compute Engine. Puedes crear claves muy detalladas para recursos individuales o crear claves menos detalladas para reutilizar entre recursos de forma más amplia.

Si bien no hay un patrón correcto universal, ten en cuenta las siguientes compensaciones de los diferentes patrones:

Claves de gran detalle: Por ejemplo, una clave para cada recurso individual

  • Más control para inhabilitar versiones de claves de forma segura: Inhabilitar o destruir una versión de clave que se usa para un alcance limitado tiene un menor riesgo de afectar otros recursos que inhabilitar o destruir una clave compartida. Esto también significa que usar claves altamente detalladas ayuda a reducir el posible impacto de que una clave se vea comprometida en comparación con el uso de claves de baja granularidad.
  • Costo: El uso de claves detalladas requiere mantener versiones de claves más activas en comparación con una estrategia que usa claves con menor nivel de detalle. Una mayor granularidad de claves requiere una mayor cantidad de versiones de claves activas, lo que genera costos adicionales.
  • Capa operativa: El uso de claves altamente detalladas puede requerir un esfuerzo administrativo o herramientas adicionales para la automatización para aprovisionar una gran cantidad de recursos de Cloud KMS y administrar los controles de acceso de los agentes de servicio para que solo puedan usar las claves adecuadas.

Claves de baja granularidad: Por ejemplo, una clave para cada aplicación, para cada región y para cada entorno

  • Se debe tener cuidado para inhabilitar versiones de clave de forma segura: Inhabilitar o destruir una versión de clave que se usa para un alcance amplio requiere más cuidado que inhabilitar o destruir una clave altamente detallada. Debes asegurarte de que todos los recursos que encriptó esa versión de clave se vuelvan a encriptar de forma segura con una versión de clave nueva antes de inhabilitar la versión de clave anterior. Esto también significa que usar claves de baja granularidad puede aumentar el potencial impacto de que una clave se vea comprometida en comparación con el uso de claves de granularidad alta.
  • Costo: El uso de claves menos detalladas requiere que se creen menos versiones de claves, lo que genera costos más bajos.
  • Capa operativa: Puedes definir y aprovisionar previamente una cantidad conocida de claves, con menos esfuerzo para garantizar los controles de acceso adecuados.

Elige el nivel de protección de las llaves

Cuando creas una clave, es tu responsabilidad seleccionar el nivel de protección adecuado para cada clave en función de tus requisitos para los datos y las cargas de trabajo encriptados con CMEK. Las siguientes preguntas pueden ayudarte en tu evaluación:

  1. ¿Necesitas alguna de las funciones de CMEK? Puedes revisar las funciones que se enumeran en Decide si usar CMEK en esta página.

    • Si es así, continúa con la siguiente pregunta.
    • De lo contrario, te recomendamos que uses la S3NS encriptación predeterminada.
  2. ¿Necesitas una certificación FIPS 140-2 de nivel 2 o 3, o que el material de clave se almacene fuera de Trusted Cloud?

Usa material de clave generado por Trusted Cloudsiempre que sea posible

Esta sección no se aplica a las claves de Cloud EKM.

Cuando creas una clave, debes permitir que Cloud KMS genere el material de clave por ti o importar manualmente el material de clave generado fuera de Trusted Cloud. Cuando sea posible, te recomendamos que elijas la opción generada. Esta opción no expone el material de clave sin procesar fuera de Cloud KMS y crea automáticamente versiones de claves nuevas según el período de rotación de claves que elijas. Si necesitas la opción de importar tu propio material de claves, te recomendamos que evalúes las siguientes consideraciones operativas y los riesgos de usar el enfoque de trae tu propia clave (BYOK):

  • ¿Puedes implementar la automatización para importar versiones de claves nuevas de forma coherente? Esto incluye la configuración de Cloud KMS para restringir las versiones de claves solo a la importación y la automatización fuera de Cloud KMS para generar e importar material de clave de forma coherente. ¿Cuál es el impacto si tu automatización no crea una versión de clave nueva en el momento esperado?
  • ¿Cómo piensas almacenar de forma segura o en depósito el material de clave original?
  • ¿Cómo puedes mitigar el riesgo de que tu proceso para importar claves filtre el material de clave sin procesar?
  • ¿Cuál sería el impacto de volver a importar una clave destruida previamente porque el material de clave sin procesar se retuvo fuera de Trusted Cloud?
  • ¿El beneficio de importar material clave por tu cuenta justifica el aumento de la sobrecarga y el riesgo operativos?

Elige el propósito y el algoritmo de clave adecuados para tus necesidades

Cuando creas una clave, debes seleccionar el propósito y el algoritmo subyacente para la clave. En el caso de los casos de uso de CMEK, solo se pueden usar claves con el propósito simétrico ENCRYPT_DECRYPT. Este propósito de clave siempre usa el algoritmo GOOGLE_SYMMETRIC_ENCRYPTION, que usa claves del Estándar de encriptación avanzada de 256 bits (AES-256) en modo Galois/contador (GCM), que se rellenó con metadatos internos de Cloud KMS. Cuando usas Autokey, estos parámetros de configuración se aplican automáticamente.

Para otros casos de uso, como la encriptación del cliente, revisa los propósitos y algoritmos de claves disponibles para elegir la opción más adecuada para tu caso de uso.

Elige un período de rotación

Te recomendamos que evalúes el período de rotación de claves adecuado para tus necesidades. La frecuencia de rotación de claves depende de los requisitos de tus cargas de trabajo según la sensibilidad o el cumplimiento. Por ejemplo, es posible que se requiera la rotación de claves al menos una vez al año para cumplir con ciertos estándares de cumplimiento, o bien puedes elegir un período de rotación más frecuente para cargas de trabajo altamente sensibles.

Después de rotar una clave simétrica, la versión nueva se marca como la versión de clave principal y se usa para todas las solicitudes nuevas para proteger la información. Las versiones de clave anteriores permanecen disponibles para desencriptar los datos encriptados anteriormente protegidos con esa versión. Cuando rotas una clave, los datos que se encriptaron con versiones de claves anteriores no se vuelven a encriptar de forma automática.

La rotación frecuente de claves ayuda a limitar la cantidad de mensajes encriptados con la misma versión de clave, lo que ayuda a reducir el riesgo y las consecuencias de que se vulnere una clave.

Aplica los controles de acceso adecuados

Te recomendamos que consideres los principios de privilegio mínimo y separación de tareas cuando planifiques los controles de acceso. En las siguientes secciones, se presentan estas recomendaciones.

Aplica el principio de privilegio mínimo

Cuando asignes permisos para administrar CMEK, considera el principio de privilegio mínimo y otorga los permisos mínimos necesarios para realizar una tarea. Te recomendamos que evites usar los roles básicos. En su lugar, otorga roles predefinidos de Cloud KMS para mitigar los riesgos de incidentes de seguridad relacionados con el acceso con privilegios excesivos.

Planifica la separación de obligaciones

Mantén identidades y permisos separados para quienes administran tus claves de encriptación y quienes las usan. El NIST SP 800-152 define una separación de deberes entre el oficial de criptografía que habilita y administra los servicios de un sistema de administración de claves criptográficas y un usuario que usa esas claves para encriptar o desencriptar recursos.

Cuando usas CMEK para administrar la encriptación en reposo con servicios de Trusted Cloud , el rol de IAM para usar claves de encriptación se asigna al agente de servicio del servicio Trusted Cloud , no al usuario individual. Por ejemplo, para crear objetos en un bucket de Cloud Storage encriptado, un usuario solo necesita el rol de IAM roles/storage.objectCreator, y el agente de servicio de Cloud Storage en el mismo proyecto (como service-PROJECT_NUMBER@gs-project-accounts.s3ns-system.iam.gserviceaccount.com) necesita el rol de IAM roles/cloudkms.cryptoKeyEncrypterDecrypter.

En la siguiente tabla, se enumeran las funciones de IAM que suelen estar asociadas con cada función laboral:

Función de IAM Descripción Designación de la SP 800-152 del NIST
roles/cloudkms.admin Proporciona acceso a los recursos de Cloud KMS, excepto al acceso a tipos de recursos y operaciones criptográficas restringidos. Oficial criptográfico
roles/cloudkms.cryptoKeyEncrypterDecrypter Proporciona la capacidad de usar los recursos de Cloud KMS solo para operaciones de encrypt y decrypt. Usuario del sistema de administración de claves criptográficas
roles/cloudkms.viewer Habilita las operaciones get y list. Administrador de auditorías

Aplica CMEK de forma coherente

En las siguientes secciones, se describen controles adicionales para ayudar a mitigar riesgos, como el uso de claves incoherente o la eliminación o destrucción accidentales.

Aplica retenciones de proyectos

Te recomendamos que protejas los proyectos con retenciones para evitar su eliminación accidental. Cuando se aplica una retención de proyecto, se bloquea la eliminación del proyecto de claves de Cloud KMS hasta que se quita la retención.

Cómo requerir claves CMEK

Te recomendamos que apliques el uso de CMEK en todo tu entorno con las restricciones de la política de la organización.

Usa constraints/gcp.restrictNonCmekServices para bloquear solicitudes para crear ciertos tipos de recursos sin especificar una clave CMEK.

Exigir una duración mínima programada para la destrucción

Te recomendamos que establezcas una duración mínima de programada para la destrucción. La destrucción de claves es una operación irreversible que puede provocar la pérdida de datos. De forma predeterminada, Cloud KMS usa una duración de programada para su destrucción (a veces llamada período de eliminación no definitiva) de 30 días antes de que el material de la clave se destruya de forma irrecuperable. Esto proporciona tiempo para restablecer una clave en caso de destrucción accidental. Sin embargo, es posible que alguien con el rol de administrador de Cloud KMS cree una clave con una duración de destrucción programada de hasta 24 horas, lo que podría no ser suficiente para detectar un problema y restablecer la clave. La duración de programada para la destrucción solo se puede configurar durante la creación de la clave.

Mientras una clave esté programada para su destrucción, no se puede usar para operaciones criptográficas, y las solicitudes para usarla fallan. Durante este tiempo, supervisa los registros de auditoría para comprobar que la clave no esté en uso. Si quieres volver a usar la clave, debes restablecerla antes de que finalice el período programado para la destrucción.

Para garantizar que todas las claves creadas cumplan con una duración mínima de programación para destrucción, te recomendamos que configures la restricción de la política de la organización constraints/cloudkms.minimumDestroyScheduledDuration con un mínimo de 30 días o la duración que prefieras. Esta política de la organización impide que los usuarios creen claves con una duración de destrucción programada inferior al valor especificado en la política.

Aplica los niveles de protección permitidos para las CMEK

Te recomendamos que apliques tus requisitos de niveles de protección de claves de manera coherente en todo tu entorno con las restricciones de la política de la organización.

Usa constraints/cloudkms.allowedProtectionLevels para aplicar la política de que las claves, las versiones de claves y los trabajos de importación nuevos deben usar los niveles de protección que permites.

Configura controles de detección para CMEK

Trusted Cloud proporciona varios controles de detección para las CMEK. En las siguientes secciones, se explica cómo habilitar y usar estos controles relevantes para Cloud KMS.

Habilita y agrega el registro de auditoría

Te recomendamos que agregues los registros de auditoría de actividad del administrador de Cloud KMS (junto con los registros de actividad del administrador de todos los servicios) en una ubicación centralizada para todos los recursos de tu organización. Esto permite que un equipo de seguridad o un auditor revisen toda la actividad relacionada con la creación o modificación de recursos de Cloud KMS a la vez. Para obtener orientación sobre cómo configurar receptores de registros agregados, consulta Cómo agregar y almacenar los registros de tu organización.

De forma opcional, puedes habilitar los registros de acceso a los datos para registrar las operaciones que usan las claves, incluidas las operaciones de encriptación y desencriptación. Cuando usas CMEK, esto puede generar un volumen de registros sustancial y afectar tus costos, ya que cada operación de cada servicio que usa CMEK creará registros de acceso a los datos. Antes de habilitar los registros de acceso a los datos, te recomendamos que definas un caso de uso claro para los registros adicionales y evalúes cómo aumentarán tus costos de registro.

Evalúa tus requisitos de cumplimiento

Los diferentes marcos de cumplimiento tienen requisitos diferentes para la encriptación y la administración de claves. Por lo general, un marco de cumplimiento describe los principios y objetivos de alto nivel de la administración de claves de encriptación, pero no es prescriptivo sobre el producto o la configuración en particular que logra el cumplimiento. Es tu responsabilidad comprender los requisitos de tu marco de cumplimiento y cómo tus controles, incluida la administración de claves, pueden cumplir con esos requisitos.

Si deseas obtener orientación sobre cómo los servicios de Trusted Cloud pueden ayudarte a cumplir con los requisitos de diferentes marcos de cumplimiento, consulta el siguiente recurso:

Resumen de prácticas recomendadas

En la siguiente tabla, se resumen las prácticas recomendadas de este documento:

Tema Tarea
Decide si usarás CMEK Usa CMEK si necesitas alguna de las funciones que habilitan las CMEK.
Proyectos de claves de Cloud KMS Usa un proyecto de claves centralizado para cada entorno. No crees recursos de Cloud KMS en el mismo proyecto que los recursos de Trusted Cloudque protegen las claves.
Llaveros de claves de Cloud KMS Crea llaveros de claves de Cloud KMS para cada ubicación en la que deseas proteger los recursos Trusted Cloud.
Nivel de detalle de las claves Elige un patrón de nivel de detalle de las claves que satisfaga tus necesidades de tolerancia al riesgo, costo y sobrecarga operativa.
Nivel de protección Elige Cloud EKM si tu material de claves debe almacenarse fuera de Trusted Cloud o si necesitas una certificación FIPS 140-2 de nivel 2 o 3. De lo contrario, elige llaves de software. Revisa la guía para seleccionar un nivel de protección.
Key material Para el material de clave alojado en Trusted Cloud, usa el material de clave generado por Trusted Cloudsiempre que sea posible. Si usas material de claves importado, implementa la automatización y los procedimientos para mitigar los riesgos.
Propósito y algoritmo de clave Todas las claves de CMEK deben usar el propósito de clave simétrica ENCRYPT_DECRYPT y el algoritmo GOOGLE_SYMMETRIC_ENCRYPTION.
Período de rotación Usa la rotación de claves automática para asegurarte de que tus claves se roten según el programa. Elige y aplica un período de rotación que satisfaga tus necesidades, idealmente, no menos de una vez al año. Usa una rotación de claves más frecuente para cargas de trabajo sensibles.
Privilegio mínimo Otorga los roles predefinidos más limitados que permitan a tus directores completar sus tareas. No uses roles básicos.
Separación de obligaciones Mantén permisos separados para los administradores de claves y las principales que usan claves.
Retenciones del proyecto Usa retenciones del proyecto para evitar la eliminación accidental de tus proyectos clave.
Cómo requerir CMEK Usa la restricción constraints/gcp.restrictNonCmekServices.
Exigir una duración mínima programada para la destrucción Usa la restricción constraints/cloudkms.minimumDestroyScheduledDuration.
Aplica los niveles de protección permitidos para las CMEK Usa la restricción constraints/cloudkms.allowedProtectionLevels.
Habilita y agrega el registro de auditoría Agrupa los registros de auditoría de actividad administrativa de todos los recursos de tu organización. Considera si deseas habilitar el registro de operaciones con claves.
Evalúa los requisitos de cumplimiento Revisa tu arquitectura de Cloud KMS y compárala con los requisitos de cumplimiento que debes cumplir.