De forma predeterminada, Dialogflow CX encripta el contenido del cliente en reposo. Dialogflow CX controla la encriptación por ti sin que tengas que realizar ninguna acción adicional en tu parte. Esta opción se denomina encriptación predeterminada de Google. La encriptación predeterminada de Google usa los mismos sistemas de administración de claves endurecidos que usamos para nuestros propios datos encriptados. Dentro de estos sistemas se incluyen los estrictos controles de acceso a claves y auditorías.
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 CX. 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 acceder a tus recursos de Dialogflow CX es similar a la de 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
Puedes proteger todos los datos en reposo de los agentes de Dialogflow CX con CMEK.
Limitaciones
- Se admite la rotación de claves, pero no la reencriptación de datos. No se admite la reencriptación de datos encriptados anteriormente con una versión de clave nueva.
- No se admiten las siguientes regiones:
global
- Se debe usar una clave por ubicación del proyecto.
- Para restablecer un agente con CMEK habilitado, debes elegir la opción de Cloud Storage.
- Los recursos existentes en proyectos no integrados en CMEK no se pueden integrar en CMEK de forma retroactiva. En su lugar, exporta y restablece los recursos en un proyecto nuevo para CMEK.
- Vertex AI Agent Builder tiene algunas limitaciones de Cloud Key Management Service.
Crea claves
Para crear claves, usa Cloud KMS. Para obtener instrucciones, consulta Crea claves simétricas. Cuando crees o elijas una clave, asegúrate de configurar lo siguiente:
- Selecciona la ubicación que usas para tu agente, ya que las solicitudes fallan si las ubicaciones no coinciden.
Identifica la cuenta de servicio de Dialogflow
Para identificar la cuenta de servicio de Dialogflow, haz lo siguiente:
- Abre la consola de Conversational Agents.
- Elige tu proyecto.
- Selecciona el agente.
- En el menú de navegación, haz clic en Configuración y, luego, ve a la pestaña Seguridad.
- Haz clic en Administrar la configuración de seguridad para que se te redireccione a la consola de CCAI.
- En la consola de CCAI, ve a la pestaña CMEK.
- Haz clic en Verificar o crear cuenta de servicio.
- Toma nota del nombre de la cuenta de servicio que se muestra (p.ej.,
service-665989447347@gcp-sa-ccai-cmek.IAM.gserviceaccount.com).
Otorga permisos a la cuenta de servicio
Para otorgar acceso a la cuenta de servicio:
- Ve a la página de Cloud KMS.
- Selecciona el llavero de claves que creaste.
- Selecciona la clave que creaste dentro de ese llavero de claves.
- Ve a la pestaña Permisos.
- Haz clic en Otorgar acceso.
- En el campo Principales nuevas, ingresa la cuenta de servicio de Dialogflow que identificaste en el paso anterior.
- En la lista Seleccionar un rol, selecciona Encriptador/desencriptador de CryptoKey de Cloud KMS.
- Haz clic en Guardar.
Copia el nombre del recurso de la clave
Para copiar el nombre del recurso de la clave, haz lo siguiente:
- Ve a la página de detalles de la clave de KMS.
- Haz clic en el menú Acción y selecciona Copiar el nombre del recurso.
Con esta acción, se copia la ruta de acceso completa de tu clave de KMS (por ejemplo,
projects/<var>PROJECT_ID</var>/locations/<var>LOCATION_ID</var>/keyRings/<var>KEY_RING</var>/cryptoKeys/<var>KEY_ID</var>).
Habilita CMEK en Dialogflow
Para habilitar CMEK en Dialogflow, haz lo siguiente:
- Regresa a la pestaña CMEK en la consola de CCAI.
- Pega el nombre del recurso de la clave copiada en el campo Clave para la ubicación en la que deseas habilitar CMEK.
- Haz clic en Guardar.
Se inicia una operación de larga duración (LRO) para habilitar CMEK en la ubicación elegida. Este proceso tarda entre 2 y 3 minutos.
Configura un agente para usar tus claves
Cuando crees un agente, especifica su ubicación y si deseas usar una Google-managed encryption key o una CMEK para esa ubicación.
Usa la CLI para configurar CMEK
Como alternativa, puedes usar los siguientes comandos para configurar CMEK. Esto es útil cuando se configura para varias regiones.
Usa Google Cloud CLI para crear la cuenta de servicio de CCAI CMEK para tu proyecto. 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 crea la cuenta de servicio. No se muestra en la respuesta de creación, pero tiene el siguiente formato:
service-PROJECT_NUMBER@gcp-sa-ccai-cmek.iam.gserviceaccount.comOtorga a la cuenta de servicio de CCAI CMEK el rol de encriptador/desencriptador de CryptoKey de Cloud KMS para permitir que el servicio encripte y desencripte 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
Usa la API para configurar una clave y verificar la configuración
Para configurar una clave para la ubicación de Dialogflow CX, llama a la API de
InitializeEncryptionSpecy proporciona las siguientes variables:PROJECT_ID: El Google Cloud ID del proyecto.LOCATION_ID: La ubicación que seleccionas para habilitar CMEK en Dialogflow CX.KMS_KEY_RING: El llavero de claves en el que se creó tu clave de KMS. La ubicación en el llavero de claves, comoprojects/PROJECT_ID/locations/LOCATION_ID/keyRings/KMS_KEY_RING, debe coincidir con la ubicación en la que habilitas CMEK.KMS_KEY_ID: El nombre de tu clave de KMS que se usa para encriptar y desencriptar datos de 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"
La respuesta JSON es similar a la siguiente:
{ "name": "projects/PROJECT_ID/locations/LOCATION_ID/operations/OPERATION_ID" }
Para obtener el resultado de la operación de larga duración (LRO), llama a la API de
GetOperation.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"
Para recuperar la clave de encriptación configurada para una ubicación, llama a la API de
GetEncryptionSpec.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"
Revoca claves
Para revocar el acceso de 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 de la clave de KMS.
Después de la revocación de la clave, los datos encriptados se vuelven inaccesibles para Dialogflow CX, y el servicio deja de estar operativo hasta que se restablecen los permisos de la clave.