Configura CMEK para buckets de registros

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

Puedes configurar CMEK como una configuración de recursos predeterminada para una organización o una carpeta. Cuando se configura, Cloud Logging garantiza que todos los buckets de la organización o carpeta se encriptado con una clave administrada por el cliente. Si no proporcionas una clave cuando creas el bucket de registros, el se usa la clave predeterminada. Para 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 el claves de encriptación que protegen tus datos, puedes administrar tus claves.

Para obtener información específica sobre el uso de CMEK y 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 usa CMEK. Antes de crear un bucket de registros con CMEK habilitada, revisa las Limitaciones.

  2. Install the Google Cloud CLI, then initialize it by running the following command:

    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. A fin de obtener los permisos que necesitas para crear claves, solicita a tu administrador que te otorgue el Rol de IAM de 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 a proyectos, carpetas y organizaciones.

    También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.

  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 permiso regional de tus datos:

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

  8. Identifica valores para las siguientes variables:

    • BUCKET_ID es el identificador numérico único de las Bucket de registro para crear.
    • BUCKET_PROJECT_ID es el nombre del proyecto de Google Cloud que contiene la nueva bucket de registros.
    • KMS_PROJECT_ID es el identificador alfanumérico único, compuesto por el nombre de tu proyecto de Google Cloud y un número asignado, del proyecto de Google Cloud que se ejecuta Cloud KMS.
    • KMS_KEY_LOCATION es el ID de la clave de Cloud KMS región.
    • KMS_KEY_RING es el llavero de claves de Cloud KMS de la fuente de datos.
    • 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.

    Para obtener información sobre cómo ubicar identificadores de recursos, consulta Identifica proyectos

Habilitar CMEK

Una vez que hayas completado los pasos de requisitos previos, sigue estos instrucciones para habilitar CMEK en un bucket de registros individual.

Determina el ID de cuenta de servicio

Para determinar el ID de la cuenta de servicio asociado con Google Cloud recurso 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, cuando no existe uno aún, y devuelve el ID de ese cuenta de servicio 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 se usa por Cloud Logging para llamar a Cloud Key Management Service. El formato de la El campo KMS_SERVICE_ACCT_NAME es service-PROJECT_NUMBER o cmek-pPROJECT_NUMBER.

  2. Si el campo KMS_SERVICE_ACCT_NAME tiene el formato de cmek-pPROJECT_NUMBER, y si usas los Controles del servicio de VPC o si habilitar el uso compartido restringido del dominio, Luego, determina si necesitas migrar tu cuenta de servicio de CMEK. Para obtener información sobre cuándo debes realizar la migración y los pasos que debes seguir la migración, consulta Soluciona problemas de los Controles del servicio de VPC y del uso compartido restringido al dominio.

Asigna la función Encriptador/Desencriptador

Cuando configures CMEK a nivel de bucket de registros, asigna al permiso de la cuenta de servicio para usar Cloud KMS; para ello, asigna el Encriptador y desencriptador de CryptoKey de Cloud KMS para la cuenta de servicio identificada por 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 el requisito previo.

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

Para crear un bucket de registros y habilitar CMEK en él, sigue estos pasos: ejecuta el siguiente 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 correctamente 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 si la columna CMEK es TRUE, se habilita CMEK para el bucket de registros.

Para ver los detalles de un bucket de registros específico, incluidos los detalles de la clave, ejecuta lo siguiente: 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 describen cómo cambiar, revocar el acceso a tu clave de Cloud KMS o 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 para esa clave.

Si rotas una clave de Cloud KMS, solo se aplicará la nueva versión de la clave para registrar buckets creados después de la rotación de claves. Si la clave se usa un bucket de registros existente, rotar la clave no cambia la forma en que protege sus datos.

Supongamos que creas un bucket de registros y habilitas CMEK. y, luego, rotarás la clave de Cloud KMS. El bucket de registros que creado no usa la versión nueva de la clave, sino que sigue protegiendo de registro con la versión de clave que se marcó como principal cuando crear.

Actualizar un bucket de registros para que use la versión de clave primaria más reciente de un 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 claves.
  2. Identifica otra clave de Cloud KMS que puedas usar. Si el el llavero de claves solo tiene una clave, luego, Crear una clave.
  3. Cambia la clave de Cloud KMS para el bucket de registros al Clave de Cloud KMS creada en el paso anterior.
  4. Cambia la clave de Cloud KMS para el bucket de registros al la clave original de Cloud KMS.

Cambia tu clave de Cloud KMS

Para cambiar la clave de Cloud KMS asociada a tu bucket de registros, sigue estos pasos: 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 la clave a un nuevo BigQuery desde una tabla de particiones. Si quieres usar una clave en una tabla de BigQuery que no está vinculado a Logging, sigue 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 se preserva 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.

CMEK inhabilita Error Reporting

Si quieres usar Error Reporting, no lo hagas habilitar 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

No se pueden quitar CMEK de los buckets de registros

No puedes volver a configurar 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 encriptación y desencriptación permisos en la clave.

Logging recomienda asegurarse de que todas las claves se estén configurados 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. Cuándo CMEK se habilita para un recurso, como una organización de Google Cloud, que pertenezcan a ese recurso están protegidos por la clave CMEK configurada. Si la CMEK de recuperación ante desastres no se pueden escribir 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 en el almacenamiento, es posible que Cloud Logging no pueda recuperar registros de recursos cuyas CMEK no estén configuradas correctamente.

Restricciones de compatibilidad

Atención al cliente de Cloud no puede leer los registros de tu recurso si su clave no está configurado correctamente 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 encriptando tus datos y almacenando datos en buckets de registros. Sin embargo, Cloud Logging no puede realizar optimizaciones en segundo plano con estos datos. Si se restablece el acceso a la clave, los datos pasan a estar disponibles. Sin embargo, al principio, los datos se almacenan en un estado no optimizado y se consultan el rendimiento podría 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 CMEK a nivel de bucket, si una clave administrada de forma externa está no disponible, Cloud Logging sigue almacenando registros en buckets de registros pero los usuarios no pueden acceder a ellos.

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

Regionalidad

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

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

Si necesitas información para solucionar errores de configuración de CMEK, consulta Soluciona problemas de CMEK y errores de configuración de la organización.