Configura la encriptación de mensajes

De forma predeterminada, Pub/Sub encripta el contenido del cliente en reposo. Pub/Sub controla la encriptación por ti sin que debas realizar ninguna acción adicional. Esta opción se denomina encriptación predeterminada de Google.

Si deseas controlar tus claves de encriptación, puedes usar las claves de encriptación administradas por el cliente (CMEK) en Cloud KMS con servicios integrados en CMEK, incluido Pub/Sub. El uso de claves de Cloud KMS te permite controlar su nivel de protección, ubicación, programa de rotación, permisos de uso y acceso, y límites criptográficos. El uso de Cloud KMS también te permite hacer un seguimiento del uso de las claves, ver los registros de auditoría y controlar los ciclos de vida de las claves. En lugar de que Google posea y administre las claves de encriptación de claves (KEK) simétricas que protegen tus datos, tú las controlas y administras en Cloud KMS.

Después de configurar tus recursos con CMEK, la experiencia de acceso a tus recursos de Pub/Sub es similar a usar la encriptación predeterminada de Google. Para obtener más información sobre tus opciones de encriptación, consulta Claves de encriptación administradas por el cliente (CMEK).

CMEK con Autokey de Cloud KMS

Puedes crear CMEK de forma manual para proteger tus recursos de Pub/Sub o usar la clave automática de Cloud KMS. Con Autokey, los llaveros de claves y las claves se generan a pedido para admitir la creación de recursos en Pub/Sub. Los agentes de servicio que usan las claves para las operaciones de encriptación y desencriptación se crean si aún no existen y se les otorgan los roles de Identity and Access Management (IAM) necesarios. Para obtener más información, consulta Descripción general de Autokey.

Cómo funciona CMEK con Pub/Sub

Cuando configuras Pub/Sub con CMEK, el servicio encripta automáticamente todos los datos con la clave especificada. El uso de Cloud KMS para CMEK puede generar costos adicionales según tus patrones de uso.

Cada mensaje se encripta en los siguientes estados y capas:

En la capa de la aplicación, Pub/Sub encripta de forma individual los mensajes entrantes en cuanto se recibe el mensaje. Esta implementación agrega las siguientes características:

Patrón de encriptación de sobre

Pub/Sub usa el patrón de encriptación de sobre con CMEK. De esta manera, Cloud KMS no encripta los mensajes. En cambio, se usa Cloud KMS para encriptar las claves de encriptación de datos (DEK) que Pub/Sub crea para cada tema. Pub/Sub solo almacena estas DEK en formato encriptado o unido. Antes de almacenar una DEK, el servicio la envía a Cloud KMS para que se encripte con la clave de encriptación de claves (KEK) especificada en el tema. Se genera una DEK nueva para cada tema cada seis horas, aproximadamente.

Antes de que Pub/Sub publique mensajes en una suscripción, los encripta con la DEK más nueva que se generó para el tema. Pub/Sub desencripta los mensajes poco antes de entregarlos a los suscriptores.

Región de la clave de Cloud KMS

Debido a que los recursos de Pub/Sub son globales, te recomendamos que uses las claves globales de Cloud KMS para configurar temas habilitados para CMEK. El uso de una clave regional de Cloud KMS puede generar dependencias innecesarias en los vínculos de red entre regiones, según las ubicaciones de los publicadores y suscriptores de un tema.

Usa claves regionales de Cloud KMS solo en las siguientes situaciones:

En estas situaciones, todo el tráfico del tema se enruta a la misma región.

Configura CMEK con Pub/Sub

Puedes configurar CMEK de forma manual o con Autokey.

Antes de comenzar

Puedes configurar CMEK para Pub/Sub con la Google Cloud consola de Cloud o Google Cloud CLI.

Realice las siguientes tareas:

  • Habilita la API de Cloud KMS.

  • Crea un llavero de claves y una clave en Cloud KMS. Las llaves y los llaveros de claves no se pueden borrar.

Para obtener instrucciones sobre cómo realizar estas tareas, Crea un llavero de claves y Crea una clave.

Roles y permisos requeridos

Pub/Sub usa un Google Cloud agente de servicio para acceder a Cloud KMS. Pub/Sub mantiene de forma interna el agente de servicio para cada proyecto, y no está visible en la página Cuentas de servicio de la Google Cloud consola de Cloud de forma predeterminada.

El agente de servicio de Pub/Sub tiene el formato service-${PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com.

Pub/Sub requiere permisos específicos para encriptar y desencriptar datos con CMEK.

Completa los siguientes pasos para configurar el acceso requerido:

  • Otorga al agente de servicio de Pub/Sub el rol de encriptador/desencriptador de clave de encriptación de Cloud KMS (roles/cloudkms.cryptoKeyEncrypterDecrypter).

    gcloud kms keys add-iam-policy-binding CLOUD_KMS_KEY_NAME \
        --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com \
        --role=roles/cloudkms.cryptoKeyEncrypterDecrypter
    

    Reemplaza lo siguiente:

    • CLOUD_KMS_KEY_NAME: El nombre de la clave de Cloud KMS.

      La clave tiene el formato projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/CRYPTO_KEY.

      Un ejemplo es projects/test-project/locations/us-central1/keyRings/test-keyring/cryptoKeys/test-key.

    • PROJECT_NUMBER: El número de proyecto del proyecto de Pub/Sub.

Para obtener más información sobre cómo otorgar roles de Identity and Access Management, consulta Otorga roles en un recurso.

Configura un tema de forma manual con CMEK

Puedes configurar CMEK de forma manual para un tema con la Google Cloud consola o gcloud CLI.

Console

Para crear un tema con CMEK, sigue estos pasos:

  1. En la Google Cloud consola de Cloud, ve a la página Temas de Pub/Sub.

    Ir a temas

  2. Haga clic en Crear tema.

  3. En el campo ID de tema, ingresa un ID para tu tema.

    Para obtener más información sobre cómo asignar nombres a los temas, consulta los lineamientos para asignar nombres.

  4. En Encriptación, haz clic en Clave de Cloud KMS.

  5. Selecciona el tipo de clave. Si no ves el menú desplegable Selecciona una clave administrada por el cliente, asegúrate de haber habilitado la API de Cloud KMS para el proyecto.

  6. Haga clic en Crear tema.

gcloud

  1. En la Google Cloud consola de Cloud, activa Cloud Shell.

    Activa Cloud Shell

    En la parte inferior de la Google Cloud consola de Cloud, se inicia una sesión de Cloud Shell en la que se muestra una ventana de línea de comandos. Cloud Shell es un entorno de shell con Google Cloud CLI ya instalada y con valores ya establecidos para el proyecto actual. La sesión puede tardar unos segundos en inicializarse.

  2. Para crear un tema con CMEK, ejecuta el gcloud pubsub topics create comando:

        gcloud pubsub topics create