Habilita claves de encriptación administradas por el cliente para el enrutador de registros

En esta página, se describe cómo habilitar las claves de encriptación administradas por el cliente (CMEK) para el enrutador de registros en Cloud Logging a fin de satisfacer tus necesidades de cumplimiento. En lugar de que Google administre las claves de encriptación que protegen tus datos, puedes crearlas, controlarlas y administrarlas en Cloud Key Management Service.

Para obtener un resumen de las opciones de encriptación, consulta Encriptación en reposo.

CMEK para el enrutador de registros

Las CMEK te permiten controlar las claves que se usan para encriptar tus datos en reposo. Puedes usarlas para cumplir con los siguientes requisitos de tu organización de Google Cloud:

  • Cumplimiento y control interno: Las CMEK se pueden usar para controlar datos sensibles o regulados que almacenas en productos de Google Cloud. Este control suele ser un elemento documentado de procedimientos internos de cumplimiento; podría divulgarse a los reguladores y sería difícil de cambiar.

  • Encriptación avanzada: Es posible que tu organización tenga requisitos de encriptación avanzada (por ejemplo, eliminación rápida de claves) que nuestra encriptación en reposo predeterminada no proporciona. Las CMEK proporcionan una ruta para cumplir con estos requisitos mediante una integración con Cloud KMS.

  • Requisitos reglamentarios: Es posible que tu organización necesite controlar material sensible debido a regulaciones gubernamentales, como el Reglamento de Administración de Exportaciones (EAR).

La encriptación en reposo ya se proporciona en los servicios de Google Cloud, incluido el enrutador de registros. En la actualidad, no es posible usar CMEK en registros almacenados en Cloud Logging, pero puedes usar CMEK para proteger los archivos temporales de recuperación ante desastres que usa el enrutador de registros y los archivos temporales que se usan durante las exportaciones en Cloud Storage. Para obtener más información, ve a Limitaciones.

Para obtener una descripción del enrutador de registros, consulta la descripción general.

Comienza ahora

  1. Crea o identifica el proyecto de Google Cloud en el que deseas ejecutar Cloud KMS.
  2. Habilita la API de Cloud KMS para el proyecto de Google Cloud que ejecuta Cloud KMS.
  3. Crea un llavero de claves y claves para el proyecto de Google Cloud que ejecuta Cloud KMS.

    Ten en cuenta que el alcance regional de las claves debe coincidir con el de tus datos. En Ubicaciones de Cloud KMS, se muestra una lista de las regiones disponibles.

  4. Identifica los parámetros necesarios a continuación. En las muestras de esta página, se usa la siguiente convención 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 y un número asignado de forma aleatoria, del proyecto 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].

    Para obtener información sobre cómo identificar estos parámetros, consulta Identificar proyectos y Obtén el ID de tu organización.

Habilita CMEK para una organización

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

Otorga permisos de encriptación y desencriptación

Determina el ID de la cuenta de servicio adecuada y otorga permiso a la cuenta de servicio para que use tu clave de Cloud KMS.

Determina el ID de cuenta de servicio

API de REST

  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 serviceAccountId asociado a 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
    
    {
        "serviceAccountId": "[SERVICE_ACCOUNT_ID]@gcp-sa-logging.iam.gserviceaccount.com"
    }
    

gcloud

A fin de obtener el serviceAccountId asociado a la organización de Google Cloud para la que deseas habilitar CMEK, ejecuta el siguiente comando de gcloud:

gcloud alpha logging cmek-settings describe --organization=[ORGANIZATION_ID]

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

Asigna la función de encriptador/desencriptador

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

API de REST

  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:

    {
      "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]

Reemplaza [KMS_PROJECT_ID] por el ID de tu proyecto de Google Cloud que ejecuta Cloud KMS y reemplaza [KMS_KEY_LOCATION], [KMS_KEY_RING], [KMS_KEY_RING] y [KMS_KEY] por la ubicación, el llavero de claves y los nombres de claves de tu 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 Permisos en el panel de la ventana derecha 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

Actualiza la configuración de CMEK para la organización de Google Cloud con un nombre de clave de Cloud KMS a fin de habilitar la función en tu organización.

Estas actualizaciones fallan si [KMS_KEY_NAME] no es válido, si la cuenta de servicio asociada no tiene la función de encriptador/desencriptador necesaria o si el acceso a la clave está inhabilitado.

API de REST

  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

Ejecuta el siguiente comando de gcloud:

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

Verifica la habilitación de claves

Actualiza la configuración de CMEK para la organización de Google Cloud con un nombre de clave de Cloud KMS a fin de verificar que las CMEK estén habilitadas para tu organización.

API de REST

  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. Si se propaga kms_key_name, las CMEK se habilitan para tu organización:

     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

Ejecuta el siguiente comando de gcloud 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. Si se propaga kmsKeyName, las CMEK se habilitan para tu organización:

gcloud alpha logging cmek-settings describe --organization=[ORGANIZATION_ID]

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

Administra tu clave de Cloud KMS

A continuación, se explica cómo cambiar y borrar tu clave de Cloud KMS, y revocar el acceso a ella.

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.

API de REST

  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

Ejecuta el siguiente comando de gcloud:

gcloud alpha logging cmek-settings update \
    --organization=[ORGANIZATION_ID]
    --kms-key-name=[NEW_KMS_KEY_NAME]

Estas actualizaciones fallan si [KMS_KEY_NAME] no es válido, si la cuenta de servicio asociada no tiene la función de encriptador/desencriptador necesaria o si el acceso a la clave está inhabilitado.

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 para esa clave.

Si quitas el acceso de Logging a una clave, el cambio puede tomar hasta una hora en aplicarse.

API de REST

  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

Ejecuta el siguiente comando de 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

API de REST

  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

Ejecuta el siguiente comando de gcloud a fin de actualizar el serviceAccountId asociado a la organización para la que deseas inhabilitar las CMEK:

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

Estas actualizaciones fallan si [KMS_KEY_NAME] no es válido, si la cuenta de servicio asociada no tiene la función de encriptador/desencriptador necesaria o si el acceso a la clave está inhabilitado.

Si deseas obtener instrucciones para destruir tu clave, consulta Destruye y restablece versiones de claves.

Efecto de la rotación de la clave 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.

CMEK para exportaciones

Si usas receptores de registros para exportar registros a otro destino, debes configurar las CMEK de forma correcta a fin de proteger los datos almacenados en ese destino.

Cloud Storage admite CMEK para exportaciones de registros si el destino está encriptado con CMEK. Para obtener más información, consulta Usa claves de encriptación administradas por el cliente.

Los otros dos destinos de receptor de Logging, BigQuery y Pub/Sub, aún no admiten el uso de CMEK para proteger los datos que exporta Cloud Logging.

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, se aplican a todos los proyectos y carpetas de la organización de Google Cloud.

No se admite el uso de CMEK para el almacenamiento de Cloud Logging

El uso de CMEK no es compatible con los registros que se almacenan en Cloud Logging. Puedes usar CMEK para proteger los archivos temporales de recuperación ante desastres que usa el enrutador de registros y los archivos temporales que se usan durante las exportaciones a Cloud Storage.

Para evitar que se escriban entradas de registro en el almacenamiento de Cloud Logging, puedes excluirlas. Si deseas obtener instrucciones, ve a la sección Usa consultas de exclusión.

Falta de disponibilidad del archivo de recuperación ante desastres

Si Logging pierde el acceso a la clave de Cloud KMS, la experiencia del usuario se puede ver afectada de manera significativa, y puede producirse una pérdida de datos. Ya no se puede acceder a los datos de estos archivos temporales de recuperación ante desastres protegidos por CMEK ni a los archivos temporales que se usan para exportar a Cloud Storage.

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 la clave de Cloud KMS deja de estar disponible, el enrutador de registros no podrá escribir archivos temporales de recuperación ante desastres. Los archivos de recuperación ante desastres no estarán disponibles para los datos que se procesen durante este período.

Las exportaciones a Cloud Storage también podrían verse afectadas, ya que el enrutador de registros no podrá escribir los archivos temporales necesarios para facilitar la exportación. 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 admiten comandos para configurar CMEK.

Precios

Para obtener más información sobre los límites de uso de Logging, consulta Cuotas y límites. Para obtener información sobre los costos que se podrían generar, consulta la página Precios.

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.

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.

    El ID del proyecto se puede identificar mediante el siguiente comando de gcloud:

    gcloud alpha logging cmek-settings describe --organization=[ORGANIZATION_ID]
    
    kmsKeyName: projects/[KMS_PROJECT_ID]/locations/[LOCATION]/keyRings/[KEYRING]/cryptoKeys/[KEY]
    serviceAccountId: [SERVICE_ACCOUNT_ID]@gcp-sa-logging.iam.gserviceaccount.com
    

    El nombre completo de la clave de Cloud KMS en el resultado del comando contiene el ID del proyecto en el campo kmsKeyName.

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

  4. Verifica si hay notificaciones de Error de configuración de CMEK en Stackdriver Logging para el proyecto seleccionado.

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 no tiene los permisos de IAM suficientes para operar en la clave de Cloud KMS especificada. Sigue las instrucciones en el error o en esta documentación para otorgar los permisos de IAM adecuados.
La clave criptográfica está inhabilitada Se inhabilitó el Cloud KMS especificado. Sigue las instrucciones del error para volver a habilitar la clave.
Se destruyó la clave criptográfica Se destruyó el Cloud KMS especificado. Sigue las instrucciones del error o en esta documentación para configurar la encriptación de CMEK con una clave diferente.

Para solucionar el problema, sigue los pasos que se indican en el mensaje de notificación del error.

Verifica la usabilidad de la clave

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

    gcloud kms keys list 
--location=[KMS_KEY_LOCATION]
--keyring=[KMS_KEY_RING]

NAME    PURPOSE   ALGORITHM   PROTECTION_LEVEL  LABELS  PRIMARY_ID  PRIMARY_STATE
<var>[KMS_KEY_NAME]</var>  ENCRYPT_DECRYPT  GOOGLE_SYMMETRIC_ENCRYPTION  SOFTWARE  1  ENABLED

Verifica que el CryptoKey de Cloud KMS aparezca en el resultado del comando como habilitado 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. Para obtener instrucciones, consulta las secciones anteriores.

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 Cloud KMS CryptoKey Encrypter/Decrypter de IAM para la clave configurada.

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

    gcloud kms keys get-iam-policy [KMS_KEY_NAME]
   

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