Configura CMEK para buckets de registros

En este documento, se proporcionan instrucciones para configurar claves de encriptación administradas por el cliente (CMEK) destinadas a registros almacenados en buckets de registros. En este documento, también se describe cómo administrar esas claves y las limitaciones asociadas con el uso de CMEK.

Puedes establecer CMEK como la configuración de recursos predeterminada para una organización o una carpeta. Cuando se configura, Cloud Logging garantiza que todos los buckets de registros nuevos en la organización o carpeta estén encriptados con una clave administrada por el cliente. Si no proporcionas una clave cuando creas el bucket de registros, se usará la clave predeterminada. Si deseas obtener más información, consulta Configura CMEK para Cloud Logging.

Descripción general

De forma predeterminada, Cloud Logging encripta el contenido del cliente almacenado en reposo. Los datos que Logging almacena en buckets de registros se encriptan con claves de encriptación de claves, un proceso conocido como encriptación de sobre. Acceder a tus datos de registro requiere acceso a esas claves de encriptación de claves, que Google administra sin que tengas que realizar ninguna acción.

Tu organización puede tener requisitos de encriptación avanzados, regulatorios o relacionados con el cumplimiento que nuestra encriptación en reposo predeterminada no proporciona. Para cumplir con los requisitos de tu organización, en lugar de que Google administre las claves de encriptación que protegen tus datos, puedes administrarlas.

Para obtener información específica sobre el uso de CMEK, incluidas sus ventajas y limitaciones, consulta Claves de encriptación administradas por el cliente.

En el caso de la encriptación simétrica, se recomienda usar el servicio de rotación de claves de manera periódica y automática como medida de seguridad. Para obtener más información, consulta Rotación de claves.

Requisitos previos

Completa los siguientes pasos:

  1. Existen algunas limitaciones cuando se usan CMEK. Antes de crear un bucket de registros con CMEK habilitadas, revisa las Limitaciones.

  2. Instala Google Cloud CLI y, luego, inicializa la ejecución del siguiente comando:

    gcloud init

    En esta guía, se proporcionan instrucciones para usar Google Cloud CLI.

  3. Crea o identifica el proyecto de Google Cloud en el que deseas ejecutar Cloud KMS.

  4. Si quieres obtener los permisos que necesitas para crear claves, pídele a tu administrador que te otorgue el rol de IAM Administrador de Cloud KMS (roles/cloudkms.admin) en el proyecto o en un recurso superior. Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso.

    Es posible que también puedas obtener los permisos necesarios a través de los roles personalizados o de otros roles predefinidos.

  5. Asegúrate de tener los siguientes permisos de Cloud Logging:

    • logging.settings.get
    • logging.buckets.get
    • logging.buckets.list
    • logging.buckets.create
    • logging.buckets.update
  6. Habilita la API de Cloud KMS para el proyecto de Google Cloud que ejecuta Cloud KMS.

  7. Crea un llavero de claves y claves para el proyecto de Google Cloud que ejecuta Cloud KMS.

    Para alinear los dominios con fallas, debes usar un llavero de claves cuya ubicación coincida con el alcance regional de tus datos:

    No puedes habilitar CMEK para los buckets de registros creados en la región global.

  8. Identifica los valores de las siguientes variables:

    • BUCKET_ID es el identificador numérico único del bucket de Logging que deseas crear.
    • BUCKET_PROJECT_ID es el nombre del proyecto de Google Cloud que contiene el bucket de registros nuevo.
    • KMS_PROJECT_ID es el identificador alfanumérico único, compuesto por el nombre del proyecto de Google Cloud y un número asignado de forma aleatoria, del proyecto de Google Cloud que ejecuta Cloud KMS.
    • KMS_KEY_LOCATION es la región de la clave de Cloud KMS.
    • KMS_KEY_RING es el nombre del llavero de claves de Cloud KMS.
    • KMS_KEY_NAME por el nombre de la clave de Cloud KMS Su formato es el siguiente: projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEYRING/cryptoKeys/KEY.

    Si quieres obtener información para ubicar identificadores de recursos, consulta Identifica proyectos.

Habilitar CMEK

Una vez que hayas completado los pasos de los requisitos previos, sigue estas instrucciones a fin de habilitar las CMEK para un bucket de registros individual.

Determina el ID de cuenta de servicio

Para determinar el ID de la cuenta de servicio asociado con el recurso de Google Cloud al que se aplicará la CMEK, haz lo siguiente:

  1. Ejecuta el siguiente comando gcloud logging settings describe:

    gcloud logging settings describe --project=BUCKET_PROJECT_ID
    

    El comando anterior genera una cuenta de servicio para el recurso especificado, cuando no existe una, y muestra el ID de esa cuenta en el campo kmsServiceAccountId:

    kmsServiceAccountId: KMS_SERVICE_ACCT_NAME@gcp-sa-logging.iam.gserviceaccount.com
    loggingServiceAccountId: SERVICE_ACCT_NAME@gcp-sa-logging.iam.gserviceaccount.com
    name: projects/BUCKET_PROJECT_ID/settings
    

    El campo kmsServiceAccountId enumera la cuenta de servicio que usa Cloud Logging para llamar a Cloud Key Management Service. El formato del campo KMS_SERVICE_ACCT_NAME es service-PROJECT_NUMBER o cmek-pPROJECT_NUMBER.

  2. Si el campo KMS_SERVICE_ACCT_NAME tiene el formato cmek-pPROJECT_NUMBER y si usas los Controles del servicio de VPC o si habilitas el uso compartido restringido del dominio, determina si necesitas migrar tu cuenta de servicio de CMEK. Si deseas obtener información sobre cuándo debes migrar y los pasos para realizarla, consulta Soluciona problemas de los Controles del servicio de VPC y el uso compartido restringido del dominio.

Asigna la función Encriptador/Desencriptador

Cuando configures CMEK a nivel del bucket de registros, asigna la función Encriptador/Desencriptador de CryptoKey de Cloud KMS a la cuenta de servicio para que use Cloud KMS a la cuenta de servicio que identifica el campo kmsServiceAccountId:

gcloud kms keys add-iam-policy-binding \
--project=KMS_PROJECT_ID \
--member serviceAccount:KMS_SERVICE_ACCT_NAME@gcp-sa-logging.iam.gserviceaccount.com \
--role roles/cloudkms.cryptoKeyEncrypterDecrypter \
--location=KMS_KEY_LOCATION \
--keyring=KMS_KEY_RING \
KMS_KEY_NAME

Configura las variables en el comando anterior de la siguiente manera:

  • Reemplaza KMS_SERVICE_ACCT_NAME por el valor kmsServiceAccountId que determinaste en el paso anterior.

  • Reemplaza las otras variables por los valores que determinaste en los pasos de requisitos previos.

Crea un bucket de registros y proporciona la clave de Cloud KMS

Si deseas crear un bucket de registros y habilitar CMEK para el bucket de registros, ejecuta el siguiente comando gcloud logging buckets create:

gcloud logging buckets create BUCKET_ID \
--location=LOCATION \
--cmek-kms-key-name=KMS_KEY_NAME

Verifica la habilitación de claves

Para verificar que creaste de forma correcta un bucket de registros con CMEK habilitadas, ejecuta el siguiente comando:

gcloud logging buckets list --project=BUCKET_PROJECT_ID

En el resultado tabular, verás una columna etiquetada CMEK. Si el valor de la columna CMEK es TRUE, las CMEK están habilitadas para el bucket de registros.

Para ver los detalles de un bucket de registros específico, incluidos los detalles de la clave, ejecuta este comando:

gcloud logging buckets describe BUCKET_ID

Administra tu clave de Cloud KMS

En las siguientes secciones, se describe cómo actualizar un bucket de registros para usar la versión de clave primaria más reciente de una clave de Cloud KMS. También se describe cómo cambiar tu clave de Cloud KMS, cómo revocar el acceso y cómo inhabilitarla.

Rota tu clave de Cloud KMS

Cuando creas una clave de Cloud KMS, puedes configurar un período de rotación. También puedes rotar una clave de Cloud KMS de forma manual. Cada vez que se rota una clave, se crea una versión nueva de esa clave.

Si rotas una clave de Cloud KMS, la versión nueva de la clave solo se aplica a los buckets de registros creados después de la rotación de claves. Si un bucket de registros existente usa la clave, rotarla no cambiará la forma en que el bucket de registros protege sus datos.

Por ejemplo, supongamos que creas un bucket de registros, habilitas CMEK y, luego, rotas la clave de Cloud KMS. El bucket de registros que creaste no usa la versión de clave nueva, sino que continúa protegiendo sus datos con la versión de clave que se marcó como principal cuando se creó.

Si deseas actualizar un bucket de registros para usar la versión de clave primaria más reciente de una clave de Cloud KMS, haz lo siguiente:

  1. Identifica la clave de Cloud KMS actual para el bucket de registros. Para obtener más información, consulta Verifica la habilitación de la clave.
  2. Identifica otra clave de Cloud KMS que puedas usar. Si el llavero de claves solo tiene una clave, crea una clave.
  3. Cambia la clave de Cloud KMS del bucket de registros por la clave de Cloud KMS que creaste en el paso anterior.
  4. Cambia la clave de Cloud KMS del bucket de registros por la clave original de Cloud KMS.

Cambia tu clave de Cloud KMS

Para cambiar la clave de Cloud KMS asociada con tu bucket de registros, crea una clave y actualiza la configuración de CMEK para el bucket de registros:

gcloud logging buckets update BUCKET_ID --cmek-kms-key-name=NEW_KMS_KEY_NAME

Revoca el acceso a la clave de Cloud KMS

A fin de revocar el acceso de Logging a la clave de Cloud KMS en cualquier momento, quita el permiso de IAM de la cuenta de servicio configurada para esa clave.

Si quitas el acceso de Logging a una clave, el cambio puede tomar hasta una hora en aplicarse.

Si tienes un conjunto de datos de BigQuery vinculado, BigQuery no puede usar este acceso para aplicar a una clave a una tabla nueva de BigQuery. Si deseas usar una clave en la tabla de BigQuery que no está vinculada a Logging, sigue la documentación de BigQuery para hacerlo. Si revocas el acceso de Logging a una clave y si tienes un conjunto de datos de BigQuery vinculado, también revocarás el acceso de BigQuery a la misma clave.

No puedes revocar el acceso de BigQuery a la clave del conjunto de datos vinculado mientras conservas el acceso de Logging.

Para obtener más información sobre el impacto de revocar el acceso, consulta Limitaciones.

Para quitar el acceso de Logging a una clave, ejecuta el siguiente comando:

gcloud kms keys remove-iam-policy-binding \
--project=KMS_PROJECT_ID \
--member serviceAccount:KMS_SERVICE_ACCT_NAME@gcp-sa-logging.iam.gserviceaccount.com \
--role roles/cloudkms.cryptoKeyEncrypterDecrypter \
--location=KMS_KEY_LOCATION \
--keyring=KMS_KEY_RING \
KMS_KEY_NAME

Limitaciones

Las siguientes son limitaciones conocidas.

Las CMEK inhabilitan Error Reporting

Si deseas usar Error Reporting, no habilites las claves de encriptación administradas por el cliente (CMEK) en tus buckets de registros. Para obtener más información, consulta Solución de problemas.

La CMEK no se puede quitar de los buckets de registros

No puedes volver a configurar los buckets de registros para cambiar o quitar CMEK.

Degradación debido a que la clave de Cloud KMS no está disponible

Una clave de Cloud KMS se considera disponible y se puede acceder a ella con Logging si se cumplen las siguientes condiciones:

  • La clave está habilitada.
  • La cuenta de servicio de Logging tiene permisos de encriptación y desencriptación en la clave.

Logging recomienda asegurarse de que las claves estén configuradas de forma correcta y estén siempre disponibles.

Pérdida de la recuperación ante desastres

Si hay fallas críticas en el almacenamiento principal de Cloud Logging, Logging duplica los datos de registro en los archivos de recuperación ante desastres. Cuando se habilita CMEK para un recurso, como una organización de Google Cloud, los registros que pertenecen a ese recurso están protegidos por la CMEK configurada. Si no se puede acceder a la clave CMEK, no se podrán escribir los archivos de recuperación ante desastres para ese recurso.

La pérdida de los archivos de recuperación ante desastres no afecta las operaciones de registro normales. Sin embargo, si ocurre un desastre de almacenamiento, es posible que Cloud Logging no pueda recuperar los registros de los recursos cuyas CMEK no estén configuradas de forma correcta.

Restricciones de compatibilidad

Atención al cliente de Cloud no puede leer los registros de tu recurso si su clave no está configurada de forma correcta o deja de estar disponible.

Rendimiento degradado de las consultas

Cuando no se puede acceder a una clave de encriptación administrada por el cliente, Cloud Logging continúa con la encriptación y el almacenamiento de datos en buckets de registros. Sin embargo, Cloud Logging no puede realizar optimizaciones en segundo plano sobre estos datos. Si se restablece el acceso a la clave, los datos estarán disponibles. Sin embargo, los datos se almacenan inicialmente en un estado no optimizado y el rendimiento de las consultas puede verse afectado.

Degradación debido a que la clave de Cloud EKM no está disponible

Cuando usas una clave de Cloud EKM, Google no tiene control sobre la disponibilidad de tu clave administrada de forma externa en el sistema de socios de administración de claves externas. Para las CMEK a nivel de bucket, si una clave administrada de forma externa no está disponible, Cloud Logging continúa almacenando registros en buckets de registros, pero los usuarios no pueden acceder a esos registros.

Para obtener más consideraciones y posibles alternativas, cuando uses claves externas, consulta la documentación de Cloud External Key Manager.

Regiones

Cuando creas un bucket de registros y habilitas CMEK, debes usar una clave cuya región coincida con el permiso regional de tus datos. No puedes configurar CMEK para los buckets de registros creados en la región global.

Disponibilidad de la biblioteca cliente

Las bibliotecas cliente de Logging no proporcionan métodos para configurar CMEK.

Cuotas

Para obtener más información sobre los límites de uso de Logging, consulta Cuotas y límites.

Soluciona problemas de errores de configuración

Para obtener información sobre cómo solucionar errores de configuración de CMEK, consulta Soluciona problemas de CMEK y de configuración de la organización.