En este documento, se proporcionan instrucciones para configurar claves de encriptación administradas por el cliente (CMEK) para los 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 configurar CMEK como un parámetro de configuración de recursos predeterminado para una organización o una carpeta. Cuando se configura, Cloud Logging se asegura de que todos los buckets de registro nuevos de la organización o carpeta se encripten con una clave administrada por el cliente. Si no proporcionas una clave cuando creas el bucket de registros, se usa la clave predeterminada. Para obtener más información, consulta Cómo configurar 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 los 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 Cloud 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 Cloud administre las claves de encriptación que protegen tus datos, puedes administrar tus claves.
Para obtener información específica sobre el uso de las CMEK, incluidas las 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:
Existen algunas limitaciones cuando se usan CMEK. Antes de crear un bucket de registros con CMEK habilitado, revisa 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 proyecto de Google Cloud en el que planeas crear tus claves:
-
Para obtener los permisos que necesitas para crear claves, pídele 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.
Crea un llavero de claves y claves.
Cloud Logging te permite usar una clave desde cualquier región. Sin embargo, cuando creas un bucket de registros, la ubicación del bucket de registros debe coincidir con la ubicación de la clave. Para obtener información sobre las regiones compatibles, consulta lo siguiente:
No puedes habilitar la CMEK para los buckets de registros creados en la región
global
.
-
Asegúrate de tener los siguientes permisos de Cloud Logging en el proyecto de Google Cloud en el que planeas crear buckets de registro:
logging.settings.get
logging.buckets.get
logging.buckets.list
logging.buckets.create
logging.buckets.update
Habilita CMEK
Una vez que hayas completado los pasos de requisitos previos, sigue estas 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 asociada con el recurso de Google Cloud para el que se aplicará CMEK, haz lo siguiente:
Ejecuta el siguiente comando
gcloud logging settings describe
:gcloud logging settings describe --project=BUCKET_PROJECT_ID
Antes de ejecutar el comando anterior, realiza el siguiente reemplazo:
- BUCKET_PROJECT_ID: Es el nombre del proyecto de Google Cloud en el que planeas crear el bucket de registros.
El comando anterior genera una cuenta de servicio para el recurso especificado, si aún no existe una, y muestra 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
En el campo
kmsServiceAccountId
, se 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 si usas los Controles del servicio de VPC o si habilitas el uso compartido con restricción de dominio, 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 para llevarla a cabo, consulta Cómo solucionar problemas relacionados con los Controles del servicio de VPC y el uso compartido con dominio restringido.
Asigna la función Encriptador/Desencriptador
Cuando configures CMEK a nivel del bucket de registros, asigna el rol de Encriptador/Desencriptador de CryptoKey de Cloud KMS a la cuenta de servicio identificada por el campo kmsServiceAccountId
para otorgarle permiso para usar tu Cloud KMS:
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, realiza los siguientes reemplazos:
- 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. Para obtener información sobre cómo obtener este identificador, consulta Identifica proyectos.
- KMS_SERVICE_ACCT_NAME: Es 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: 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:
Es el nombre de la clave de Cloud KMS. Su formato es el siguiente:
projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KMS_KEY_RING/cryptoKeys/KEY
.
Crea un bucket de registros y proporciona la clave de Cloud KMS
Para crear un bucket de registros y habilitar CMEK para 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 \ --project=BUCKET_PROJECT_ID
Antes de ejecutar el comando anterior, realiza los siguientes reemplazos:
- BUCKET_ID: Es el nombre o el ID del bucket de registros.
- LOCATION: Es la ubicación del bucket de registros.
- KMS_KEY_NAME:
Es el nombre de la clave de Cloud KMS. Su formato es el siguiente:
projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KMS_KEY_RING/cryptoKeys/KEY
. - BUCKET_PROJECT_ID: Es el nombre del proyecto de Google Cloud en el que se creará el bucket de registros.
Verifica la habilitación de claves
Para verificar que creaste correctamente un bucket de registros 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, realiza el siguiente reemplazo:
- BUCKET_PROJECT_ID: Es el nombre del proyecto de Google Cloud que almacena el bucket de registros.
En el resultado tabular, verás una columna etiquetada como 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 --location=LOCATION --project=BUCKET_PROJECT_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 más reciente de la clave primaria de una clave de Cloud KMS. También se describe cómo cambiar, revocar el acceso a tu clave de Cloud KMS y, luego, 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, la nueva versión de la clave solo se aplica a los buckets de registro creados después de la rotación de claves. Si un bucket de registros existente usa la clave, la rotación de la clave no cambia 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 sigue protegiendo sus datos con la versión de clave que se marcó como principal cuando se creó el bucket de registros.
Para 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:
- Identifica la clave de Cloud KMS actual para el bucket de registros. Para obtener más información, consulta Cómo verificar la habilitación de claves.
- Identifica otra clave de Cloud KMS que puedas usar. Si tu llavero solo tiene una clave, crea una clave.
- Cambia la clave de Cloud KMS del bucket de registros a la clave de Cloud KMS que creaste en el paso anterior.
- Cambia la clave de Cloud KMS del bucket de registros a la clave de Cloud KMS original.
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 --location=LOCATION \ --cmek-kms-key-name=NEW_KMS_KEY_NAME --project=BUCKET_PROJECT_ID
- BUCKET_ID: Es el nombre o el ID del bucket de registros.
- LOCATION: Es la ubicación del bucket de registros.
- NEW_KMS_KEY_NAME: Es el nombre de la clave nueva.
- BUCKET_PROJECT_ID: Es el nombre del proyecto de Google Cloud que almacena el bucket de registros.
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 aplicarlo a la clave de una tabla de BigQuery nueva. Si quieres usar una clave en la tabla de BigQuery que no esté vinculada a la API de registros, sigue la documentación de BigQuery para hacerlo. Si revocas el acceso de la API de registros a una clave y 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 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, realiza los siguientes reemplazos:
- 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. Para obtener información sobre cómo obtener este identificador, consulta Identifica proyectos.
- KMS_SERVICE_ACCT_NAME: Es 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: 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:
Es el nombre de la clave de Cloud KMS. Su formato es el siguiente:
projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KMS_KEY_RING/cryptoKeys/KEY
.
Limitaciones
Las siguientes son limitaciones conocidas.
CMEK inhabilita Error Reporting
Si deseas usar el Error Reporting, no habilites las claves de encriptación administradas por el cliente (CMEK) en tus buckets de registros. Si deseas obtener más información, consulta Solución de problemas.
No se puede quitar la CMEK de los buckets de registro.
No puedes volver a configurar los buckets de registros para cambiar o quitar CMEK.
Degradación debido a la falta de disponibilidad de la clave de Cloud KMS
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.
El registro recomienda que te asegures de que todas las claves estén configuradas correctamente y siempre estén disponibles.
Pérdida de la recuperación ante desastres
Si hay fallas críticas en el almacenamiento principal de Cloud Logging, este refleja los datos de registro en los archivos de recuperación ante desastres. Cuando las CMEK están habilitadas para un recurso, como una organización de Google Cloud, los registros que pertenecen a ese recurso están protegidos por la clave de CMEK configurada. Si no se puede acceder a la clave CMEK, no se pueden escribir los archivos de recuperación ante desastres para ese recurso.
La pérdida de archivos de recuperación ante desastres no afecta las operaciones de registro normales. Sin embargo, en caso de un desastre de almacenamiento, es posible que Cloud Logging no pueda recuperar los registros de los recursos cuyo CMEK no esté configurado correctamente.
Restricciones de compatibilidad
Atención al cliente de Cloud no puede leer los registros de tu recurso si su clave no está configurada correctamente o deja de estar disponible.
Rendimiento de las consultas degradado
Cuando no se puede acceder a una clave de encriptación administrada por el cliente, Cloud Logging sigue encriptando tus datos y almacenándolos en buckets de registro. Sin embargo, Cloud Logging no puede realizar optimizaciones en segundo plano en estos datos. Si se restablece 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 la falta de disponibilidad de la clave de Cloud EKM
Cuando usas una clave de Cloud EKM, Google Cloud no tiene control sobre la disponibilidad de tu clave administrada de forma externa en el sistema de socios de administración de claves externas. En el caso de las CMEK a nivel del 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 ellos.
Para obtener 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 cuya
región coincida con el alcance 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
Si deseas obtener información para solucionar problemas de configuración de CMEK, consulta Cómo solucionar problemas de CMEK y de configuración de la organización.