Configura CMEK para Cloud Logging

En este documento, se describe cómo configurar y administrar claves de encriptación administradas por el cliente (CMEK) para Cloud Logging a fin de satisfacer las necesidades de cumplimiento de tu organización. Puedes configurar CMEK como una configuración de recursos predeterminada para una organización, una carpeta o ambas. 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.

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 configurar CMEK para controlar y administrar tu propia encriptación.

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

Cuando configuras CMEK como un parámetro de configuración de recursos predeterminado para Logging, los buckets de registros nuevos en la organización o carpeta se encriptan de forma automática con la clave configurada. Sin embargo, puedes cambiar esa clave o crear buckets de registros y especificar una clave diferente. Si quieres obtener más información, consulta Configura CMEK para buckets de registros.

Requisitos previos

Para comenzar, 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. Busca los identificadores de la organización o carpeta para la que deseas habilitar las CMEK:

    • ORGANIZATION_ID es el identificador numérico único de la organización de Google Cloud para el que habilitas las CMEK. No necesitas este valor si solo planeas configurar CMEK para una carpeta. Para obtener más información sobre cómo obtener este identificador, consulta Cómo obtener el ID de la organización.
    • FOLDER_ID es el identificador numérico único de la carpeta de Google Cloud para el que habilitas las CMEK. No necesitas este valor si solo planeas configurar CMEK para una organización. Para obtener información sobre el uso de carpetas, consulta Crea y administra carpetas.
  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 para la organización:

    • logging.settings.get
    • logging.settings.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.

    Cloud Logging te permite usar una clave de 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 más información sobre las regiones compatibles, consulta los siguientes vínculos:

    Si configuras CMEK como un parámetro de configuración de recursos predeterminado para Logging mediante los pasos que se indican en este documento, los buckets de registros nuevos creados en la organización o carpeta se configurarán de forma automática para CMEK. Además, debido a que la ubicación de un bucket de registros debe coincidir con la de la clave, después de establecer CMEK como una configuración de recursos predeterminada, no puedes crear buckets de registros en la región global.

  8. Identifica los valores de los siguientes parámetros de Cloud KMS:

    • 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 ver más información sobre cómo obtener este identificador, consulta Identifica proyectos.
    • 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.

Habilita CMEK para una organización o carpeta

Una vez que hayas completado los pasos de requisitos previos, sigue estas instrucciones para habilitar CMEK en tu organización de Google Cloud.

Determina el ID de cuenta de servicio

Para determinar el ID de la cuenta de servicio asociado con la organización o carpeta a la que se aplicará la CMEK, ejecuta el siguiente comando gcloud logging settings describe:

CARPETA

 gcloud logging settings describe --folder=FOLDER_ID

ORGANIZACIÓN

gcloud logging settings describe --organization=ORGANIZATION_ID

Cuando se ejecuta el comando anterior, se genera una cuenta de servicio para la organización o carpeta, cuando aún no existe una, y se muestra el ID en el campo kmsServiceAccountId. A continuación, se muestra una respuesta de muestra al comando anterior cuando se especifica una organización:

kmsServiceAccountId: cmek-p12345@gcp-sa-logging.iam.gserviceaccount.com
name: organizations/ORGANIZATION_ID/settings

En este ejemplo, el valor de SERVICE_ACCT_NAME es cmek-p12345.

Ejecuta el proceso de aprovisionamiento solo una vez por recurso. Si ejecutas el comando describe varias veces, se muestra el mismo valor para el campo kmsServiceAccountId.

Si no puedes usar Google Cloud CLI, ejecuta el método de la API de Cloud Logging getSettings.

Asigna la función Encriptador/Desencriptador

Si deseas usar CMEK, asigna la función Encriptador/Desencriptador de CryptoKeys de Cloud KMS a la cuenta de servicio a fin de otorgarle permiso para que use tu Cloud KMS.

gcloud

gcloud kms keys add-iam-policy-binding \
--project=KMS_PROJECT_ID \
--member serviceAccount: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 de la siguiente manera:

  • Reemplaza SERVICE_ACCT_NAME por el valor serviceAccountId que determinaste en el paso anterior.

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

Console

  1. Abre el navegador de claves de Cloud Key Management Service en la consola de Google Cloud.
    Abrir el navegador de claves de Cloud KMS
  2. Haz clic en el nombre del llavero de claves que contiene la clave que desees.

  3. Selecciona la casilla de verificación de la clave que deseas.

    La pestaña de Permisos estará disponible.

  4. En el cuadro de diálogo Agregar miembros, especifica la dirección de correo electrónico de la cuenta de servicio de Logging a la que deseas otorgar acceso.

  5. En el menú desplegable Seleccionar una función, selecciona Encriptador/desencriptador de CryptoKey de Cloud KMS.

  6. Haz clic en Agregar.

Configura las políticas de la organización

Logging admite políticas de la organización que pueden requerir protección con CMEK y puede limitar qué CryptoKeys de Cloud KMS se pueden usar para la protección de CMEK:

  • Cuando logging.googleapis.com está en la lista de servicios de políticas de Deny para la restricción constraints/gcp.restrictNonCmekServices, Logging rechaza la creación de nuevos buckets definidos por el usuario que no estén protegidos por CMEK. Sin embargo, esta restricción no impide que Cloud Logging cree los buckets de registros _Required y _Default que se crean cuando se crea un proyecto de Google Cloud.

  • Cuando se aplica constraints/gcp.restrictCmekCryptoKeyProjects, Logging crea recursos protegidos por CMEK que están protegidos por una CryptoKey en una organización, carpeta o proyecto permitido.

Para obtener más información sobre las CMEK y las políticas de la organización, consulta las Políticas de la organización de CMEK.

Cuando una política de la organización especifique una restricción de CMEK, asegúrate de que esas restricciones sean coherentes con la configuración de recursos predeterminada de Logging para una organización o una carpeta. Además, si planeas modificar la configuración de recursos predeterminada, antes de actualizarla, revisa y, si es necesario, actualiza las políticas de la organización.

Para ver o configurar las políticas de la organización, haz lo siguiente:

  1. En el panel de navegación de la consola de Google Cloud, selecciona IAM y administración y, luego, Políticas de la organización:

    Ir a Políticas de la organización

  2. Selecciona tu organización.
  3. Verifica y, si es necesario, actualiza las restricciones específicas de CMEK.

    Para obtener información sobre cómo modificar una política de la organización, consulta Crea y edita políticas.

Configura Cloud Logging con la clave de Cloud KMS

Si deseas configurar CMEK como un parámetro de configuración de recursos predeterminado para Logging, ejecuta el siguiente comando gcloud logging settings update:

CARPETA

gcloud logging settings update \
    --folder=FOLDER_ID \
    --kms-location=KMS_KEY_LOCATION \
    --kms-key-name=KMS_KEY_NAME \
    --kms-keyring=KMS_KEY_RING \
    --kms-project=KMS_PROJECT_ID

El comando anterior actualiza la configuración de recursos predeterminada para almacenar información sobre la clave de Cloud KMS. Debes asegurarte de que la ubicación de almacenamiento predeterminada de la carpeta esté configurada en el valor de KMS_KEY_LOCATION. Si no configuraste la ubicación de almacenamiento predeterminada o si su valor no coincide con el de KMS_KEY_LOCATION, agrega lo siguiente al comando anterior:

--storage-location = KMS_KEY_LOCATION

La marca --storage-location te permite configurar o actualizar la ubicación de almacenamiento predeterminada de la carpeta.

ORGANIZACIÓN

gcloud logging settings update \
    --organization=ORGANIZATION_ID \
    --kms-location=KMS_KEY_LOCATION \
    --kms-key-name=KMS_KEY_NAME \
    --kms-keyring=KMS_KEY_RING \
    --kms-project=KMS_PROJECT_ID

El comando anterior actualiza la configuración de recursos predeterminada para almacenar información sobre la clave de Cloud KMS. Debes asegurarte de que la ubicación de almacenamiento predeterminada de la organización esté configurada en el valor de KMS_KEY_LOCATION. Si no configuraste la ubicación de almacenamiento predeterminada o si su valor no coincide con el de KMS_KEY_LOCATION, agrega lo siguiente al comando anterior:

--storage-location = KMS_KEY_LOCATION

La marca --storage-location te permite configurar o actualizar la ubicación de almacenamiento predeterminada de la organización.

Después de aplicar la clave, se configuran buckets de registros nuevos en la organización o carpeta para encriptar sus datos en reposo con esta clave. También puedes cambiar las claves para buckets de registros individuales. No puedes crear buckets de registros en la región global porque debes usar una clave cuya región coincida con el permiso regional de tus datos.

Si no puedes usar Google Cloud CLI, ejecuta el método de la API de Cloud Logging updateSettings.

Verifica la habilitación de claves

A fin de verificar que habilitaste CMEK de forma correcta para una organización o una carpeta, ejecuta el siguiente comando gcloud logging settings describe:

CARPETA

gcloud logging settings describe --folder=FOLDER_ID

ORGANIZACIÓN

gcloud logging settings describe --organization=ORGANIZATION_ID

El comando anterior muestra el nombre de la clave de Cloud KMS:

kmsKeyName: KMS_KEY_NAME
kmsServiceAccountId: SERVICE_ACCT_NAME@gcp-sa-logging.iam.gserviceaccount.com

Si se propaga el campo kmsKeyName, las CMEK se habilitan para la organización o carpeta.

Enruta registros a destinos compatibles.

  • Los buckets de registros de Cloud Logging se pueden configurar para encriptar datos con CMEK. Cuando configuras CMEK como un parámetro de configuración de recursos predeterminado para una organización o carpeta, los buckets de registros nuevos de la organización o carpeta usan CMEK de forma automática. Puedes cambiar la clave de estos buckets de registros y crear buckets de registros que usen una clave de KMS diferente a la que se especifica en la configuración de recursos predeterminada.

    Para obtener información sobre las CMEK aplicadas a los buckets de registros, incluido cómo cambiar claves y limitaciones cuando habilitas CMEK en un bucket de registros, consulta Configura CMEK para buckets de registros.

  • Cloud Storage admite CMEK para registros de enrutamiento. Si quieres obtener instrucciones para configurar CMEK en Cloud Storage, consulta Usa claves de encriptación administradas por el cliente.

    Si los datos se pierden debido a la falta de disponibilidad de claves cuando enrutas los datos de registro a Cloud Storage, puedes copiar los registros de forma retroactiva y masiva en Cloud Storage cuando esos registros también se almacenan en un bucket de registros. Para obtener más información, consulta Copia entradas de registro.

  • BigQuery, de forma predeterminada, encripta el contenido de los clientes almacenado en reposo. Para obtener más información, consulta Protege datos con claves de Cloud Key Management Service.

  • Pub/Sub De forma predeterminada, encripta el contenido de los clientes almacenado en reposo. Para obtener más detalles, consulta Configura la encriptación de mensajes.

Administra tu clave de Cloud KMS

En las siguientes secciones, se explica cómo cambiar y, luego, revocar el acceso a tu clave de Cloud KMS o inhabilitarla.

Cambia tu clave de Cloud KMS

Para cambiar la clave de Cloud KMS asociada a una organización o carpeta, crea una clave y actualiza la configuración de CMEK con el nombre de clave de Cloud KMS nuevo:

CARPETA

gcloud logging settings update \
    --folder=FOLDER_ID
    --kms-key-name=NEW_KMS_KEY_NAME
    --kms-location=NEW_KMS_KEY_LOCATION \
    --kms-keyring=NEW_KMS_KEY_RING \
    --kms-project=NEW_KMS_PROJECT_ID

Debes asegurarte de que la ubicación de almacenamiento predeterminada de la carpeta esté configurada en el valor de KMS_KEY_LOCATION. Si no configuraste la ubicación de almacenamiento predeterminada o si su valor no coincide con el de KMS_KEY_LOCATION, agrega lo siguiente al comando anterior:

--storage-location = NEW_KMS_KEY_LOCATION

ORGANIZACIÓN

gcloud logging settings update \
    --organization=ORGANIZATION_ID
    --kms-key-name=NEW_KMS_KEY_NAME
    --kms-location=NEW_KMS_KEY_LOCATION \
    --kms-keyring=NEW_KMS_KEY_RING \
    --kms-project=NEW_KMS_PROJECT_ID

Debes asegurarte de que la ubicación de almacenamiento predeterminada de la organización esté configurada en el valor de KMS_KEY_LOCATION. Si no configuraste la ubicación de almacenamiento predeterminada o si su valor no coincide con el de KMS_KEY_LOCATION, agrega lo siguiente al comando anterior:

--storage-location = NEW_KMS_KEY_LOCATION

Revoca el acceso a la clave de Cloud KMS

Puedes revocar el acceso de Logging a la clave de Cloud KMS si quitas 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 tardar hasta una hora en aplicarse.

Para revocar el acceso de Logging a la clave de Cloud KMS, ejecuta el siguiente comando de Google Cloud CLI:

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

Inhabilitar CMEK

Si inhabilitas las CMEK en una organización o carpeta, se quita la aplicación de la política de CMEK solo para las operaciones futuras. Cualquier configuración aplicada anteriormente permanecerá intacta.

Para inhabilitar CMEK en un recurso que tiene CMEK configuradas como la configuración de recursos predeterminada, ejecuta el siguiente comando de Google Cloud CLI:

CARPETA

gcloud logging settings update --folder=FOLDER_ID --clear-kms-key

ORGANIZACIÓN

gcloud logging settings update --organization=ORGANIZATION_ID --clear-kms-key

Consulta Destruye y restablece versiones de clave para destruir tu clave.

Consideraciones de rotación de claves de Cloud KMS

Cloud Logging no rota de forma automática la clave de encriptación para los archivos temporales de recuperación ante desastres cuando se rota la clave de Cloud KMS asociada con la organización o carpeta de Google Cloud. Los archivos de recuperación existentes continúan usando la versión de clave con la que se crearon. Los archivos de recuperación nuevos usan la versión de clave primaria actual.

Limitaciones

Las siguientes son limitaciones conocidas cuando configuras CMEK como una configuración de recursos predeterminada para Logging.

Falta de disponibilidad del archivo de recuperación ante desastres

Se considera que una clave de Cloud KMS está disponible y que Logging puede acceder a ella cuando 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.

Si Logging pierde el acceso a la clave de Cloud KMS, no podrá escribir archivos temporales de recuperación ante desastres y, para los usuarios, las consultas dejarán de funcionar. El rendimiento de las consultas puede disminuir, incluso después de que se restablezca el acceso a la clave.

Los registros de enrutamiento a Cloud Storage también pueden verse afectados, ya que Logging no puede escribir los archivos temporales necesarios para facilitar el enrutamiento. Si se produce un error mientras se encriptan o desencriptan datos, se envía una notificación al proyecto de Google Cloud que contiene la clave de Cloud KMS.

Disponibilidad de la biblioteca cliente

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

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.

Cuando CMEK se establece como la configuración de recursos predeterminada para una organización o carpeta, si una clave administrada de forma externa no está disponible, Cloud Logging vuelve a intentar acceder a la clave de forma continua. Cloud Logging también almacena en búfer los datos de registro entrantes durante una hora como máximo. Después de una hora, si Cloud Logging aún no puede acceder a la clave administrada de forma externa, entonces Cloud Logging comienza a descartar los datos.

Si se aplica CMEK a un bucket de registros y una clave administrada de forma externa no está disponible, Cloud Logging continúa almacenando registros en buckets de registros, pero los usuarios no podrán acceder a esos datos.

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

Limitaciones en los buckets de registros

Para conocer las limitaciones cuando usas CMEK con buckets de registros, consulta Limitaciones.

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 errores de configuración predeterminada.