En este documento se explica cómo configurar claves de cifrado gestionadas por el cliente (CMEK) para los registros almacenados en segmentos de registro. En este documento también se describe cómo gestionar esas claves y las limitaciones asociadas al uso de CMEK.
Puedes configurar CMEK como ajuste de recurso predeterminado para una organización o una carpeta. Cuando se configura, Cloud Logging se asegura de que todos los nuevos cubos de registro de la organización o carpeta estén cifrados con una clave gestionada por el cliente. Si no proporcionas una clave al crear el bucket de registro, se usará la clave predeterminada. Para obtener más información, consulta el artículo sobre cómo configurar CMEK para Cloud Logging.
Información general
De forma predeterminada, Cloud Logging encripta el contenido de los clientes en reposo. Logging se encarga del cifrado sin que tengas que hacer nada más. Esta opción se llama Cifrado predeterminado de Google.
Si quieres controlar tus claves de cifrado, puedes usar claves de cifrado gestionadas por el cliente (CMEKs) en Cloud KMS con servicios integrados con CMEKs, como Logging. Si usas claves de Cloud KMS, tendrás control sobre su nivel de protección, ubicación, calendario de rotación, permisos de uso y acceso, y límites criptográficos. Además, Cloud KMS te permite ver los registros de auditoría y controlar los ciclos de vida de las claves. En lugar de que Google sea el propietario y gestione las claves de cifrado de claves (KEKs) simétricas que protegen tus datos, tú controlas y gestionas estas claves en Cloud KMS.
Una vez que hayas configurado tus recursos con CMEKs, la experiencia de acceso a tus recursos de Logging será similar a la de usar el cifrado predeterminado de Google. Para obtener más información sobre las opciones de encriptado, consulta Claves de encriptado gestionadas por el cliente (CMEK).
Requisitos previos
Este agente debe seguir estos pasos:
Hay algunas limitaciones al usar CMEK. Antes de crear un contenedor de registro con la clave de cifrado gestionada por el cliente habilitada, consulta las limitaciones.
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Configura el Google Cloud proyecto en el que quieras crear las claves:
-
Para obtener los permisos que necesitas para crear claves, pide a tu administrador que te conceda el rol de gestión de identidades y accesos Administrador de Cloud KMS (
roles/cloudkms.admin
) en el proyecto o en un recurso principal. Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.También puedes conseguir los permisos necesarios a través de roles personalizados u otros roles predefinidos.
Crea un conjunto de claves y claves.
Cloud Logging te permite usar una clave de cualquier región. Sin embargo, cuando creas un segmento de registro, la ubicación del segmento de registro debe coincidir con la ubicación de la clave. Para obtener información sobre las regiones admitidas, consulta lo siguiente:
No puedes habilitar CMEK en los segmentos de registro creados en la región
global
.
-
Asegúrate de que tienes los siguientes permisos de Cloud Logging en elGoogle Cloud proyecto en el que tienes previsto crear los contenedores de registro:
logging.settings.get
logging.buckets.get
logging.buckets.list
logging.buckets.create
logging.buckets.update
Ejecuta el siguiente comando:
gcloud logging settings describe
gcloud logging settings describe --project=BUCKET_PROJECT_ID
Antes de ejecutar el comando anterior, haz la siguiente sustitución:
- BUCKET_PROJECT_ID: nombre del proyecto de Google Cloud en el que quieres crear el contenedor de registro.
El comando anterior genera una cuenta de servicio para el recurso especificado (si aún no existe) y devuelve el ID de esa 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
muestra la cuenta de servicio que usa Cloud Logging para llamar a Cloud Key Management Service.Si el campo KMS_SERVICE_ACCT_NAME tiene el formato de
cmek-pPROJECT_NUMBER
, y usas Controles de Servicio de VPC o habilitas el uso compartido restringido al dominio, determina si tienes que migrar tu cuenta de servicio de CMEK. Para obtener información sobre cuándo debes hacer la migración y los pasos que debes seguir, consulta el artículo Solucionar problemas de Controles de Servicio de VPC y de uso compartido restringido por dominio.- KMS_PROJECT_ID: identificador alfanumérico único, compuesto por el nombre de tu proyecto Google Cloud y un número asignado aleatoriamente, del Google Cloud proyecto que ejecuta Cloud KMS. Para obtener información sobre cómo conseguir este identificador, consulta el artículo sobre cómo identificar proyectos.
- KMS_SERVICE_ACCT_NAME: el nombre de la cuenta de servicio que se muestra en el campo
kmsServiceAccountId
de la respuesta del comandogcloud logging settings describe
. - KMS_KEY_LOCATION: la región de la clave de Cloud KMS.
- KMS_KEY_RING: nombre del conjunto de claves de Cloud KMS.
- KMS_KEY_NAME:
Nombre de la clave de Cloud KMS. Tiene este formato:
projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KMS_KEY_RING/cryptoKeys/KEY
. - BUCKET_ID: nombre o ID del segmento de registro.
- LOCATION: la ubicación del segmento de registro.
- KMS_KEY_NAME:
Nombre de la clave de Cloud KMS. Tiene este formato:
projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KMS_KEY_RING/cryptoKeys/KEY
. - BUCKET_PROJECT_ID: nombre del proyecto Google Cloud en el que se creará el segmento de registro.
- BUCKET_PROJECT_ID: nombre del Google Cloud proyecto que almacena el segmento de registro.
- Identifica la clave de Cloud KMS actual del segmento de registro. Para obtener más información, consulta Verificar la habilitación de la clave.
- Identifica otra clave de Cloud KMS que puedas usar. Si tu conjunto de claves solo tiene una clave, selecciona Crear una clave.
- Cambia la clave de Cloud KMS del segmento de registro por la clave de Cloud KMS que has creado en el paso anterior.
- Cambia la clave de Cloud KMS del segmento de registro a la clave de Cloud KMS original.
- BUCKET_ID: nombre o ID del segmento de registro.
- LOCATION: la ubicación del segmento de registro.
- NEW_KMS_KEY_NAME: nombre de la nueva clave.
- BUCKET_PROJECT_ID: nombre del Google Cloud proyecto que almacena el segmento de registro.
- KMS_PROJECT_ID: identificador alfanumérico único, compuesto por el nombre de tu proyecto Google Cloud y un número asignado aleatoriamente, del Google Cloud proyecto que ejecuta Cloud KMS. Para obtener información sobre cómo conseguir este identificador, consulta el artículo sobre cómo identificar proyectos.
- KMS_SERVICE_ACCT_NAME: el nombre de la cuenta de servicio que se muestra en el campo
kmsServiceAccountId
de la respuesta del comandogcloud logging settings describe
. - KMS_KEY_LOCATION: la región de la clave de Cloud KMS.
- KMS_KEY_RING: nombre del conjunto de claves de Cloud KMS.
- KMS_KEY_NAME:
Nombre de la clave de Cloud KMS. Tiene este formato:
projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KMS_KEY_RING/cryptoKeys/KEY
. - La clave está habilitada.
- La cuenta de servicio de Logging tiene permisos de encriptado y desencriptado en la clave.
Habilitar CMEK
Una vez que hayas completado los pasos requisitos, sigue estas instrucciones para habilitar CMEK en un segmento de registro concreto.
Determinar el ID de la cuenta de servicio
Para determinar el ID de la cuenta de servicio asociada al Google Cloud recurso al que se aplicará CMEK, haz lo siguiente:
Asignar el rol Encrypter/Decrypter
Cuando configures las CMEK a nivel de segmento de registro, da permiso a la cuenta de servicio para usar tu Cloud KMS asignándole el rol Encargado de cifrar o descifrar CryptoKey de Cloud KMS a 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
Antes de ejecutar el comando anterior, haz las siguientes sustituciones:
Crea un segmento de registro y proporciona la clave de Cloud KMS
Para crear un segmento de registro y habilitar CMEK en él, ejecuta el siguiente comando:
gcloud logging buckets create
gcloud logging buckets create BUCKET_ID \ --location=LOCATION \ --cmek-kms-key-name=KMS_KEY_NAME \ --project=BUCKET_PROJECT_ID
Antes de ejecutar el comando anterior, haz las siguientes sustituciones:
Verificar la habilitación de la clave
Para verificar que has creado correctamente un contenedor de registro con CMEK habilitado, ejecuta el siguiente comando gcloud logging buckets list
:
gcloud logging buckets list --project=BUCKET_PROJECT_ID
Antes de ejecutar el comando anterior, haz la siguiente sustitución:
En la salida tabular, verá una columna llamada CMEK
. Si el valor de la columna CMEK
es TRUE
, se habilita CMEK en el bucket de registro.
Para ver los detalles de un contenedor de registro específico, incluidos los detalles de la clave, ejecuta este comando:
gcloud logging buckets describe BUCKET_ID --location=LOCATION --project=BUCKET_PROJECT_ID
Gestionar tu clave de Cloud KMS
En las siguientes secciones se describe cómo actualizar un contenedor de registro para usar la versión más reciente de la clave principal de una clave de Cloud KMS. También se describe cómo cambiar, revocar el acceso y inhabilitar tu clave de Cloud KMS.
Rotar una clave de Cloud KMS
Cuando crees una clave de Cloud KMS, podrás configurar un periodo de rotación. También puedes rotar una clave de Cloud KMS manualmente. Cada vez que se rota una clave, se crea una nueva versión de esa clave.
Si rotas una clave de Cloud KMS, la nueva versión de la clave solo se aplicará a los cubos de registro creados después de la rotación de la clave. Si la clave la usa un contenedor de registro, al rotarla no cambia la forma en que el contenedor protege sus datos.
Por ejemplo, supongamos que creas un segmento de registro y habilitas CMEK, y luego rotas la clave de Cloud KMS. El bucket de registro que has creado no usa la nueva versión de la clave, sino que sigue protegiendo sus datos con la versión de la clave que se marcó como principal cuando se creó el bucket de registro.
Para actualizar un segmento de registro de forma que use la versión de clave principal más reciente de una clave de Cloud KMS, haz lo siguiente:
Cambiar la clave de Cloud KMS
Para cambiar la clave de Cloud KMS asociada a tu segmento de registro, crea una clave y actualiza la configuración de CMEK del segmento de registro:
gcloud logging buckets update BUCKET_ID --location=LOCATION \ --cmek-kms-key-name=NEW_KMS_KEY_NAME --project=BUCKET_PROJECT_ID
Revocar el acceso a la clave de Cloud KMS
Para revocar el acceso de Logging a la clave de Cloud KMS en cualquier momento, elimina el permiso de gestión de identidades y accesos de la cuenta de servicio configurada para esa clave.
Si quitas el acceso de Logging a una clave, el cambio puede tardar 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 una tabla de BigQuery nueva. Si quiere usar una clave en una tabla de BigQuery que no esté vinculada a Logging, consulte la documentación de BigQuery. Si revoca el acceso de Logging a una clave y tiene un conjunto de datos de BigQuery vinculado, también revocará el acceso de BigQuery a la misma clave.
No puedes revocar el acceso de BigQuery a la clave del conjunto de datos vinculado y, al mismo tiempo, conservar 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
Antes de ejecutar el comando anterior, haz las siguientes sustituciones:
Limitaciones
Estas son las limitaciones conocidas:
CMEK inhabilita Error Reporting
Si quieres usar Error Reporting, no habilites las claves de cifrado gestionadas por el cliente (CMEK) en tus segmentos de registro. Para obtener más información, consulta Solución de problemas.
No se puede quitar la CMEK de los contenedores de registro
No puedes volver a configurar los segmentos de registro para cambiar o quitar la CMEK.
Degradación debido a que la clave de Cloud KMS no está disponible
Se considera que una clave de Cloud KMS está disponible y es accesible para Logging si se cumplen las dos condiciones siguientes:
Logging recomienda encarecidamente que se asegure de que las claves estén configuradas correctamente y siempre disponibles.
Pérdida de la recuperación tras fallos
Si se producen fallos críticos en el almacenamiento principal de Cloud Logging, Logging replicará los datos de registro en archivos de recuperación ante desastres. Cuando se habilita la CMEK en un recurso, como una Google Cloud organización, los registros pertenecientes a ese recurso se protegen con la clave CMEK configurada. Si no se puede acceder a la clave de CMEK, no se podrán escribir los archivos de recuperación ante desastres de ese recurso.
La pérdida de archivos de recuperación ante desastres no afecta a las operaciones de registro normales. Sin embargo, en caso de desastre de almacenamiento, es posible que Cloud Logging no pueda recuperar los registros de los recursos cuya CMEK no esté configurada correctamente.
Restricciones de compatibilidad
Asistencia de Google Cloud no puede leer los registros de tu recurso si su clave no está configurada correctamente o deja de estar disponible.
Rendimiento de consultas degradado
Cuando no se puede acceder a una clave de cifrado gestionada por el cliente, Cloud Logging sigue cifrando tus datos y almacenándolos en segmentos de registros. Sin embargo, Cloud Logging no puede realizar optimizaciones en segundo plano en estos datos. Si se restaura el acceso a la clave, los datos estarán disponibles. Sin embargo, los datos se almacenarán inicialmente en un estado no optimizado y el rendimiento de las consultas puede verse afectado.
Degradación debido a que las claves de Cloud EKM no están disponibles
Cuando usas una clave de Cloud EKM, Google Cloud no tiene control sobre la disponibilidad de tu clave gestionada de forma externa en el sistema del partner de gestión de claves externo. En el caso de las CMEK a nivel de segmento, si una clave gestionada externamente no está disponible, Cloud Logging sigue almacenando registros en segmentos de registros, pero los usuarios no pueden acceder a ellos.
Para obtener más información sobre las consideraciones y las posibles alternativas al usar claves externas, consulta la documentación de Cloud External Key Manager.
Regionalización
Cuando creas un segmento de registro y habilitas CMEK, debes usar una clave cuya región coincida con el ámbito regional de tus datos.
No puedes configurar CMEK para los segmentos de registro creados en la global
región.
Disponibilidad de la biblioteca de cliente
Las bibliotecas de cliente de registro no proporcionan métodos para configurar CMEK.
Cuotas
Cuando usas CMEK en Logging, tus proyectos pueden consumir cuotas de solicitudes criptográficas de Cloud KMS. Por ejemplo, habilitar CMEK en un segmento de registro puede consumir estas cuotas. Las operaciones de cifrado y descifrado con claves CMEK solo afectan a las cuotas de Cloud KMS si usas claves de hardware (Cloud HSM) o externas (Cloud EKM). Para obtener más información, consulta las cuotas de Cloud KMS.
Para obtener información sobre los límites de uso de Logging, consulta Cuotas y límites.
Solucionar errores de configuración
Para obtener información sobre cómo solucionar errores de configuración de CMEK, consulta el artículo Solucionar errores de CMEK y de configuración de la organización.