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 de 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 que controle y administre tu propia encriptación.

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

Cuando configuras CMEK como una configuración de recursos predeterminada para Logging, los buckets de registros nuevos de 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 deseas 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 usa 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 CMEK:

    • ORGANIZATION_ID es el identificador numérico único de la organización de Google Cloud para el que habilitas CMEK. No necesitas este valor si solo planeas configurar CMEK para una carpeta. Para obtener información sobre cómo obtener este identificador, consulta Obtén el ID de la organización.
    • FOLDER_ID es el identificador numérico único de la carpeta de Google Cloud para el que habilitas CMEK. No necesitas este valor si solo planeas configurar CMEK para una organización. Para obtener información sobre el uso de las carpetas, consulta Crea y administra carpetas.
  4. Para obtener los permisos que necesitas para crear claves, pídele a tu administrador que te otorgue el 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 funciones personalizadas o, también, otras funciones predefinidas.

  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, su ubicación debe coincidir con la ubicación de la clave. Para obtener información sobre las regiones admitidas, consulta los siguientes vínculos:

    Si configuras CMEK como una configuración de recursos predeterminada 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 ubicación de la clave, después de configurar CMEK como una configuración de recursos predeterminada, no puedes crear buckets de registro 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 de tu 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_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 la 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 ejecutas el comando anterior, se genera una cuenta de servicio para la organización o carpeta, si aún no existe, 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.

Ejecutar 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 por los valores que determinaste en los pasos de requisito previo.

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 con CMEK:

  • Cuando logging.googleapis.com está en la lista de servicios de la política Deny para la restricción constraints/gcp.restrictNonCmekServices, Logging rechaza crear buckets nuevos definidos por el usuario que no estén protegidos con 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 de un proyecto, una carpeta o una organización permitidos.

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

Cuando exista una política de la organización que 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 predeterminada de los recursos, antes de actualizar esta, revisa y, de ser 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 la consola de Google Cloud, ve a la página Políticas de la organización:

    Ir a Políticas de la organización

    Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuyo subtítulo es IAM y administrador.

  2. Selecciona tu organización.
  3. Verifica y, de ser 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 una configuración de recursos predeterminada 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

Con el comando anterior, se 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 estableciste la ubicación de almacenamiento predeterminada o si el valor de esa ubicación no coincide con el valor 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

Con el comando anterior, se 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 estableciste la ubicación de almacenamiento predeterminada o si el valor de esa ubicación no coincide con el valor 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 para la organización.

Después de aplicar la clave, los buckets de registros nuevos de la organización o carpeta se configuran para encriptar sus datos en reposo con esta clave. También puedes cambiar las claves para los 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

Si quieres verificar que habilitaste CMEK de forma correcta para una organización o 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 una configuración de recursos predeterminada para una organización o carpeta, los buckets de registros nuevos de esta 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 predeterminada de recursos.

    Para obtener información sobre las CMEK aplicadas a buckets de registros, incluido cómo cambiar las 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 una falta de disponibilidad de claves cuando se enrutan los datos de registro a Cloud Storage, puedes copiar los registros de forma retroactiva de forma masiva a 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 nuevo nombre de la clave de Cloud KMS:

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 estableciste la ubicación de almacenamiento predeterminada o si el valor de esa ubicación no coincide con el valor 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 estableciste la ubicación de almacenamiento predeterminada o si el valor de esa ubicación no coincide con el valor 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 CMEK en una organización o una carpeta, se quita la aplicación de la política de CMEK solo para operaciones futuras; cualquier configuración aplicada con anterioridad permanecerá intacta.

Para inhabilitar CMEK en un recurso que tiene CMEK configuradas como una configuración predeterminada de recursos, 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 sobre la 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 a 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

Una clave de Cloud KMS se considera disponible y se puede acceder a ella con Logging 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 dejan de funcionar. El rendimiento de las consultas puede disminuir, incluso después de que se restablezca el acceso a la clave.

El enrutamiento de registros a Cloud Storage también puede verse afectado, ya que Logging no puede escribir los archivos temporales necesarios para facilitar el enrutamiento. Si se produce un error durante la encriptación o la desencriptación de datos, se enviará 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 configura como la configuración de recursos predeterminada para una organización o una 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 un máximo de una hora. Después de una hora, si Cloud Logging aún no puede acceder a la clave administrada de forma externa, 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 seguirá 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 de 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 la solución de errores de configuración de CMEK, consulta Soluciona problemas de CMEK y errores de configuración predeterminada.