Claves de encriptación administradas por el cliente (CMEK)

De forma predeterminada, Dialogflow encripta el contenido del cliente almacenado en reposo. Dialogflow 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 Dialogflow. 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 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 Dialogflow 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).

Datos protegidos

Todos los datos en reposo de los agentes conversacionales (Dialogflow CX) se pueden proteger con CMEK.

Limitaciones

  • Se admite la rotación de claves, pero no la reencriptación de datos. Es decir, no se admite volver a encriptar datos encriptados anteriormente con una versión de clave nueva.
  • No se admiten las siguientes regiones:
    • global
    • eu
  • Se debe usar una clave por ubicación del proyecto.
  • Para restablecer un agente con la CMEK habilitada, debes elegir la opción de Cloud Storage.
  • Los recursos existentes en proyectos integrados que no son de CMEK no se pueden integrar de forma retroactiva. En su lugar, se recomienda exportar y restablecer los recursos en un proyecto nuevo para CMEK.
  • Vertex AI Agent Builder tiene algunas limitaciones de Cloud KMS.

Crea claves

Para crear claves, debes usar el servicio KMS. Para obtener instrucciones, consulta Crea claves simétricas. Cuando creas o eliges una clave, debes configurar lo siguiente:

  • Asegúrate de seleccionar la ubicación que usas para tu agente. De lo contrario, las solicitudes fallarán.

Configura un agente para usar tus claves

Cuando creas un agente, puedes especificar la ubicación del agente y si usará una clave administrada por Google o la clave administrada por el cliente ya configurada para esa ubicación. Haz tus selecciones en este momento.

Requisitos previos

  1. Crea la cuenta de servicio de CMEK de CCAI para tu proyecto con Google Cloud CLI. Para obtener más información, consulta la documentación de identidad de los servicios de gcloud.

    gcloud beta services identity create --service=dialogflow.googleapis.com --project=PROJECT_ID

    Se creará la cuenta de servicio. No se mostrará en la respuesta de creación, pero tendrá el siguiente formato:

    service-PROJECT_NUMBER@gcp-sa-ccai-cmek.iam.gserviceaccount.com
  2. Otorga a la cuenta de servicio de CMEK de CCAI el rol de encriptador/desencriptador de CryptoKey de Cloud KMS para asegurarte de que el servicio tenga permisos para encriptar y desencriptar con tu clave.

    gcloud kms keys add-iam-policy-binding KMS_KEY_ID \
    --project=PROJECT_ID \
    --location=LOCATION_ID \
    --keyring=KMS_KEY_RING \
    --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-ccai-cmek.iam.gserviceaccount.com \
    --role=roles/cloudkms.cryptoKeyEncrypterDecrypter

Configura una clave para la ubicación de los agentes conversacionales (Dialogflow CX)

  1. Usa la API de InitializeEncryptionSpec para configurar la clave.

    Deberás proporcionar las siguientes variables:

    • PROJECT_ID es el ID del proyecto de Google Cloud.
    • LOCATION_ID: La ubicación que elegiste para habilitar CMEK en agentes de conversación (Dialogflow CX).
    • KMS_KEY_RING: Es el llavero en el que se creó la clave de KMS. (La ubicación del llavero, como projects/PROJECT_ID/locations/LOCATION_ID/keyRings/KMS_KEY_RING, debe coincidir con la ubicación en la que habilitas la CMEK).
    • KMS_KEY_ID: Es el nombre de la clave de KMS que se usará para encriptar y desencriptar los datos de los agentes conversacionales (Dialogflow CX) en la ubicación seleccionada.

    Por ejemplo:

    curl -X POST \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type: application/json; charset=utf-8" \
        -d "{ encryption_spec: { kms_key: 'projects/PROJECT_ID/locations/LOCATION_ID/keyRings/KMS_KEY_RING/cryptoKeys/KMS_KEY_ID' } }" \
        "https://LOCATION_ID-dialogflow.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION_ID/encryptionSpec:initialize"

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

    {
      "name": "projects/PROJECT_ID/locations/LOCATION_ID/operations/OPERATION_ID"
    }
  2. Usa la API de GetOperation para verificar el resultado de la operación de larga duración.

    Por ejemplo:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://LOCATION_ID-dialogflow.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION_ID/operations/OPERATION_ID"

Verifica la configuración de CMEK

Usa la API de GetEncryptionSpec para verificar la clave de encriptación configurada para una ubicación.

Por ejemplo:

    curl -X GET \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      "https://LOCATION_ID-dialogflow.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION_ID/encryptionSpec"
  

Cómo revocar claves

Para revocar el acceso de los agentes conversacionales (Dialogflow CX) a la clave, puedes inhabilitar la versión de la clave de KMS o quitar el rol de encriptador/desencriptador de CryptoKey de Cloud KMS de la cuenta de servicio.

Después de la revocación de la clave, los agentes conversacionales (Dialogflow CX) no podrán acceder a los datos encriptados, y el servicio ya no estará en un estado operativo hasta que se restablezcan los permisos de la clave.