Administra las claves que protegen los datos del enrutador de registros

En esta página, se describe cómo configurar y administrar las claves de encriptación administradas por el cliente (CMEK) para el enrutador de registros a fin de satisfacer las necesidades de cumplimiento de tu organización.

Las CMEK para el enrutador de registros se configuran a nivel de la organización de Google Cloud. Se aplica a todos los proyectos y las carpetas de Cloud que contiene la organización de Google Cloud.

Descripción general

De forma predeterminada, Cloud Logging encripta el contenido del cliente almacenado en reposo. Los datos que transfiere Logging se encriptan mediante 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 de claves 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.

Para obtener información sobre el uso de CMEK en los registros almacenados en Cloud Logging, consulta Administra las claves que protegen los datos de almacenamiento de Logging.

Requisitos previos

A fin de comenzar a habilitar CMEK para el enrutador de registros, completa los siguientes pasos:

  1. Instala e inicializa el SDK de Cloud.

    En esta guía, se proporcionan instrucciones mediante la herramienta de línea de comandos de gcloud, que se instala con el SDK de Cloud.

  2. Identifica la organización para la que deseas habilitar CMEK.

  3. Crea o identifica el proyecto de Google Cloud en el que deseas ejecutar Cloud KMS.

    Verifica que la organización de Google Cloud que contiene el proyecto de Cloud te otorgue una función de IAM con los permisos logging.cmekSettings.{get,update}. Te recomendamos tener la función de Escritor de configuración de registros, que contiene los permisos necesarios.

  4. Habilita la API de Cloud KMS para el proyecto de Cloud que ejecuta Cloud KMS.

  5. Crea un llavero de claves y claves para el proyecto de Cloud que ejecuta Cloud KMS.

    El enrutador de registros te permite usar una clave de cualquier región, ya que una sola organización puede tener datos enrutados a varias regiones. Si todos los datos de la organización o la mayoría de ellos están restringidos a una región, te recomendamos que uses una clave cuya región coincida con el permiso regional de tus datos.

  6. Identifica los parámetros necesarios a continuación. En las muestras de esta página, se usa las siguientes variables para indicar metadatos de recursos de Google Cloud:

    • ORGANIZATION_ID es el identificador numérico único de la organización de Google Cloud para el que habilitas las CMEK.
    • KMS_PROJECT_ID es el identificador alfanumérico único, compuesto por el nombre del proyecto de Cloud y un número asignado de forma aleatoria, del proyecto de Cloud que ejecuta Cloud KMS.
    • KMS_KEY_NAME es el nombre del recurso de la clave de Cloud KMS. Su formato es el siguiente: projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEYRING/cryptoKeys/KEY.

    Si deseas obtener información para ubicar los identificadores de recursos, consulta Identifica proyectos y Obtén el ID de tu organización.

Habilita CMEK para una organización

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

Si deseas configurar CMEK a nivel de la organización, debes obtener el ID de la cuenta de servicio asociada con la organización a la que se aplicará CMEK. Ejecuta el siguiente comando:

API

  1. Obtén un token de autorización de acceso de OAuth 2.0 Playground. Configura Playground para usar tus credenciales de OAuth.

  2. Realiza una solicitud GET a fin de obtener el ID de la cuenta de servicio asociada con la organización de Google Cloud para la que deseas habilitar CMEK:

     curl -H "Authorization: Bearer AUTH_TOKEN" \
        https://logging.googleapis.com/v2/organizations/ORGANIZATION_ID/cmekSettings
    

gcloud

gcloud logging cmek-settings describe --organization=ORGANIZATION_ID

Cuando se ejecuta este comando, se genera una cuenta de servicio para la organización, si aún no existe una, y se muestra el ID en el campo serviceAccountId:

serviceAccountId: "SERVICE_ACCOUNT_ID@gcp-sa-logging.iam.gserviceaccount.com"

Solo debes ejecutar este proceso de aprovisionamiento una vez por recurso. Si ejecutas este comando varias veces, se muestra el mismo valor para el campo serviceAccountId.

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.

API

  1. Obtén un token de autorización de acceso de OAuth 2.0 Playground. Configura Playground para usar tus credenciales de OAuth. Para obtener instrucciones, consulta Autenticación de la API.
  2. Crea un archivo JSON que contenga la siguiente información:

    {
      "policy": {
        "bindings": {
          "role": "roles/cloudkms.cryptoKeyEncrypterDecrypter",
          "members": "serviceAccount:SERVICE_ACCOUNT_ID@gcp-sa-logging.iam.gserviceaccount.com"
        },
      }
    }
  3. Usa cURL para llamar a la API de Cloud KMS con una solicitud POST setIamPolicy:

    curl -X POST --data-binary @JSON_FILE_NAME.json \
    -H "Authorization: Bearer OAUTH2_TOKEN" \
    -H "Content-Type: application/json" \
    "https://cloudkms.googleapis.com/v1/KEY_RESOURCE:setIamPolicy"

gcloud

gcloud kms keys add-iam-policy-binding \
--project=KMS_PROJECT_ID \
--member SERVICE_ACCOUNT_ID@gcp-sa-logging.iam.gserviceaccount.com \
--role roles/cloudkms.cryptoKeyEncrypterDecrypter \
--location=KMS_KEY_LOCATION \
--keyring=KMS_KEY_RING \
KMS_KEY

Configura las variables en el comando de la siguiente manera:

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

  • Reemplaza las otras variables por los valores que determinaste en los pasos del requisito:

    • Reemplaza KMS_PROJECT_ID por el ID del proyecto de Cloud que ejecuta Cloud KMS.
    • Reemplaza KMS_KEY_LOCATION por la región de la clave de Cloud KMS.
    • Reemplaza KMS_KEY_RING por el nombre del llavero de claves de Cloud KMS.
    • Reemplaza KMS_KEY por el nombre de la clave de Cloud KMS.

Console

  1. Abre el navegador de claves de Cloud Key Management Service en Google Cloud Console.
    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 la clave de Cloud KMS

Para terminar de habilitar CMEK, agrega el nombre de la clave de Cloud KMS a tu organización. Ejecuta el siguiente comando:

API

  1. Obtén un token de autorización de acceso de OAuth 2.0 Playground. Configura Playground para usar tus credenciales de OAuth.

  2. Crea un archivo JSON que contenga la siguiente información:

    {
        "kms_key_name": "KMS_KEY_NAME"
    }
    
  3. Realiza una solicitud PATCH con el fin de actualizar kms_key_name, de modo que se asocie con la organización de Google Cloud para la que deseas habilitar CMEK:

    curl -X PATCH \
        -H "Authorization: Bearer AUTH_TOKEN \
        -H "Content-Type: application/json" \
        --data-binary @JSON_FILE_NAME
        https://logging.googleapis.com/v2/organizations/ORGANIZATION_ID/cmekSettings?update_mask="kms_key_name"
    

gcloud

gcloud logging cmek-settings update \
    --organization=ORGANIZATION_ID --kms-key-name=KMS_KEY_NAME

Verifica la habilitación de claves

Si deseas verificar que habilitaste CMEK en tu organización de forma correcta, ejecuta el siguiente comando:

API

  1. Obtén un token de autorización de acceso de OAuth 2.0 Playground. Configura Playground para usar tus credenciales de OAuth.

  2. Realiza una solicitud GET a fin de obtener la configuración de CMEK asociada a la organización de Google Cloud para la que deseas verificar la habilitación de claves:

     curl -H "Authorization: Bearer AUTH_TOKEN" \
        https://logging.googleapis.com/v2/organizations/ORGANIZATION_ID/cmekSettings
    
    {
        "kmsKeyName": "KMS_KEY_NAME",
        "serviceAccountId": "SERVICE_ACCOUNT_ID@gcp-sa-logging.iam.gserviceaccount.com"
    }
    

gcloud

gcloud logging cmek-settings describe --organization=ORGANIZATION_ID

Cuando ejecutas este comando, se muestra el nombre de la clave de Cloud KMS:

kmsKeyName: KMS_KEY_NAME
serviceAccountId: SERVICE_ACCOUNT_ID@gcp-sa-logging.iam.gserviceaccount.com

Si se propaga el campo kmsKeyName, las CMEK se habilitan para tu organización.

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

A fin de cambiar la clave de Cloud KMS asociada a tu organización, crea una clave y actualiza la configuración de CMEK para la organización con el nombre de clave de Cloud KMS nuevo.

Ejecuta el siguiente comando:

API

  1. Obtén un token de autorización de acceso de OAuth 2.0 Playground. Configura Playground para usar tus credenciales de OAuth.

  2. Crea un archivo JSON que contenga la siguiente información:

    {
        "kms_key_name": "NEW_KMS_KEY_NAME"
    }
    
  3. Ejecuta una solicitud PATCH para actualizar kms_key_name:

    curl -X PATCH \
        -H "Authorization: Bearer AUTH_TOKEN \
        -H "Content-Type: application/json" \
        --data-binary @JSON_FILE_NAME
        https://logging.googleapis.com/v2/organizations/ORGANIZATION_ID/cmekSettings?update_mask="kms_key_name"
    

gcloud

gcloud logging cmek-settings update \
    --organization=ORGANIZATION_ID
    --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.

Ejecuta el siguiente comando:

API

  1. Obtén un token de autorización de acceso de OAuth 2.0 Playground. Configura Playground para usar tus credenciales de OAuth.

  2. Crea un archivo JSON que contenga la siguiente información:

    revoke.json:
    {
      "policy": {
        "bindings": {
          "role": "roles/cloudkms.cryptoKeyEncrypterDecrypter",
          "members":
        },
      }
    }
    
  3. Ejecuta una solicitud POST:

    curl -X POST --data-binary @revoke.json -H "Authorization: Bearer
    ${OAUTH_TOKEN}" -H "Content-Type: application/json"
    "https://cloudkms.googleapis.com/v1/{$KEY}:setIamPolicy"
    

gcloud

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

Inhabilita CMEK para tu organización

Inhabilitar CMEK para tu organización quita la aplicación de políticas de CMEK solo en operaciones futuras. Los parámetros de configuración aplicados antes permanecen intactos.

A fin de inhabilitar CMEK en tu organización, ejecuta el siguiente comando:

API

  1. Obtén un token de autorización de acceso de OAuth 2.0 Playground. Configura Playground para usar tus credenciales de OAuth.

  2. Crea un archivo JSON que contenga la siguiente información:

    {
        "kms_key_name": ""
    }
    
  3. Ejecuta una solicitud PATCH para actualizar kms_key_name:

    curl -X PATCH \
        -H "Authorization: Bearer AUTH_TOKEN \
        -H "Content-Type: application/json" \
        --data-binary @JSON_FILE_NAME
        https://logging.googleapis.com/v2/organizations/ORGANIZATION_ID/cmekSettings?update_mask="kms_key_name"
    

gcloud

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

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

Efecto de la rotación de claves de Cloud KMS

El enrutador de registros no rota de manera 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 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.

Enruta registros a destinos compatibles.

Si usas receptores de registros para enrutar registros a un destino admitido, considera lo siguiente:

  • Cloud Storage admite CMEK para registros de enrutamiento. Usa las instrucciones que se indican en esta página para encriptar los datos correctamente. Para obtener más detalles, consulta la página sobre Usa claves de encriptación administradas por el cliente.

    Si, cuando enrutas datos de registros a Cloud Storage, los datos se pierden debido a la falta de disponibilidad de claves, puedes copiar registros de forma masiva y retroactiva en Cloud Storage. 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.

Consideraciones de claves externas

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.

Si una clave administrada de forma externa no está disponible, Cloud Logging continúa intentando acceder a la clave y almacena en búfer los datos de registro entrantes solo durante 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.

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

Limitaciones

Las siguientes son limitaciones comunes de CMEK para el enrutador de registros.

Configuración solo a nivel de la organización

Por el momento, las CMEK para el enrutador de registros solo se pueden configurar para organizaciones de Google Cloud. Una vez configuradas, las CMEK se propagan a todos los proyectos y carpetas de Cloud de la organización de Google Cloud.

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 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.

Si Logging pierde el acceso a la clave de Cloud KMS, Logging 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.

El enrutamiento de registros a Cloud Storage también puede verse afectado, ya que el enrutador de registros no podrá escribir los archivos temporales necesarios para facilitar el enrutamiento. Si se produce un error cuando se encriptan o desencriptan datos, se enviará una notificación al proyecto que contiene la clave de Cloud KMS.

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

En las siguientes secciones, se describe cómo encontrar y mitigar errores comunes de configuración de CMEK.

Cuando configuras CMEK, el proyecto de Cloud que contiene la clave de Cloud KMS recibirá una notificación de problemas relacionados. Por ejemplo, las actualizaciones fallan si KMS_KEY_NAME no es válido, si la cuenta de servicio asociada no tiene la función de Encriptador/Desencriptador de CryptoKey de Cloud Key Management Service requerida. Si el acceso a la clave está inhabilitado

Identifica errores de configuración

Para encontrar y ver los errores de configuración de CMEK, haz lo siguiente:

  1. Navega a Google Cloud Console:

    Ir a Google Cloud Console

  2. Selecciona el proyecto que contiene la clave de encriptación.

    Para identificar el ID del proyecto, ejecuta el siguiente comando:

    gcloud logging cmek-settings describe --organization=ORGANIZATION_ID
    
    

    Cuando ejecutas este comando, se muestra lo siguiente:

     kmsKeyName: projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEYRING/cryptoKeys/KEY
     serviceAccountId: SERVICE_ACCOUNT_ID@gcp-sa-logging.iam.gserviceaccount.com
     

    El valor del campo kmsKeyName incluye el ID del proyecto de la clave.

  3. Selecciona la pestaña Actividad en Cloud Console.

  4. Verifica si hay notificaciones de Error de configuración de CMEK en Cloud Logging.

    Cada notificación de error contiene los pasos que puedes seguir para mitigar el problema:

    Error Recomendación
    Se denegó el permiso para usar claves criptográficas La cuenta de servicio de Logging asociada a tu proyecto de Cloud no tiene los permisos de IAM suficientes para operar en la clave de Cloud KMS especificada. Sigue las instrucciones en el error o en Otorga permiso de encriptación y desencriptación para otorgar el permiso de IAM adecuado.
    La clave criptográfica está inhabilitada Se inhabilitó la clave de Cloud KMS especificada. Sigue las instrucciones del error para volver a habilitar la clave.
    Se destruyó la clave criptográfica Se destruyó la clave de Cloud KMS especificada. Sigue las instrucciones del error o Configura la clave de Cloud KMS para configurar la encriptación de CMEK con una clave diferente.

Verifica la usabilidad de la clave

Si deseas verificar la usabilidad de la clave, ejecuta el siguiente comando para enumerar todas las claves:

gcloud kms keys list \
--location=KMS_KEY_LOCATION \
--keyring=KMS_KEY_RING

Este comando muestra información sobre cada clave en formato tabular. La primera línea del resultado es una lista de nombres de columnas:

NAME PURPOSE ...

Verifica que la clave de Cloud KMS aparezca en el resultado del comando como ENABLED y que el propósito de la clave sea la encriptación simétrica: la columna PURPOSE debe contener ENCRYPT_DECRYPT y la columna PRIMARY_STATE debe contener ENABLED.

Si es necesario, crea una clave nueva.

Verifica la configuración de los permisos

Las cuentas de servicio que están asociadas a la configuración de CMEK de la organización deben tener la función Encriptador/Desencriptador de CryptoKey de Cloud KMS para la clave configurada.

Para enumerar la política de IAM de la clave, ejecuta el siguiente comando:

gcloud kms keys get-iam-policy KMS_KEY_NAME

Si es necesario, agrega la cuenta de servicio que contiene la función Encriptador/Desencriptador de CryptoKey de Cloud KMS a la clave.