De forma predeterminada, Dialogflow cifra el contenido del cliente en reposo. Dialogflow se encarga del cifrado sin que tengas que hacer nada más. Esta opción se llama Cifrado predeterminado de Google. El cifrado predeterminado de Google utiliza los mismos sistemas reforzados de gestión de claves que usamos para proteger nuestros propios datos cifrados. Estos sistemas incluyen controles de acceso a claves estrictos y auditorías.
Si quieres controlar tus claves de cifrado, puedes usar claves de cifrado gestionadas por el cliente (CMEKs) en Cloud KMS con servicios integrados con CMEKs, como Dialogflow. Si usas claves de Cloud KMS, tendrás control sobre su nivel de protección, ubicación, calendario de rotación, permisos de uso y acceso, y límites criptográficos. Además, Cloud KMS te permite ver los registros de auditoría y controlar los ciclos de vida de las claves. En lugar de que Google sea el propietario y gestione las claves de cifrado de claves (KEKs) simétricas que protegen tus datos, tú controlas y gestionas estas claves en Cloud KMS.
Una vez que hayas configurado tus recursos con CMEKs, la experiencia de acceso a tus recursos de Dialogflow será similar a la de usar el cifrado predeterminado de Google. Para obtener más información sobre las opciones de encriptado, consulta Claves de encriptado gestionadas por el cliente (CMEK).
Datos protegidos
Limitaciones
- Se admite la rotación de claves, pero no el reencriptado de datos. Es decir, no se admite volver a cifrar datos cifrados 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 restaurar un agente con CMEK habilitada, debes elegir la opción Cloud Storage.
- Los recursos de proyectos que no tienen integrada la CMEK no se pueden integrar de forma retroactiva. En su lugar, se recomienda exportar los recursos y restaurarlos en un proyecto nuevo para CMEK.
- Aplicaciones de IA tiene algunas limitaciones de Cloud KMS.
Crear claves
Para crear claves, usa el servicio KMS. Para obtener instrucciones, consulta el artículo Crear claves simétricas. Al crear o elegir una clave, debes configurar lo siguiente:
- Asegúrate de seleccionar la ubicación que usas para tu agente, ya que, de lo contrario, las solicitudes fallarán.
Configurar un agente para que use tus claves
Cuando creas un agente, puedes especificar su ubicación y si usará una clave gestionada por Google o una clave gestionada por el cliente que ya esté configurada para esa ubicación. Haz tus selecciones ahora.
Requisitos previos
Crea la cuenta de servicio de CMEK de CCAI para tu proyecto con la CLI de Google Cloud. 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 devolverá en la respuesta de creación, pero tendrá el siguiente formato:
service-PROJECT_NUMBER@gcp-sa-ccai-cmek.iam.gserviceaccount.com
Asigna a la cuenta de servicio de CMEK de CCAI el rol Encargado del encriptado y desencriptado de la clave criptográfica Cloud KMS para asegurarte de que el servicio tiene 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
Configurar una clave para la ubicación de Conversational Agents (Dialogflow CX)
Usa la API
InitializeEncryptionSpec
para configurar la clave.Deberá proporcionar las siguientes variables:
PROJECT_ID
: tu ID de proyecto Google Cloud .LOCATION_ID
: la ubicación que has elegido para habilitar CMEK en Conversational Agents (Dialogflow CX).KMS_KEY_RING
: el conjunto de claves en el que se creó la clave de KMS. La ubicación del conjunto de claves, comoprojects/PROJECT_ID/locations/LOCATION_ID/keyRings/KMS_KEY_RING
, debe coincidir con la ubicación en la que habilites CMEK.KMS_KEY_ID
: el nombre de la clave de KMS que se usará para cifrar y descifrar 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 siguiente:
{ "name": "projects/PROJECT_ID/locations/LOCATION_ID/operations/OPERATION_ID" }
Usa la API
GetOperation
para comprobar 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"
Comprobar la configuración de CMEK
Usa la API GetEncryptionSpec
para comprobar la clave de cifrado configurada en 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"
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 Encargado del cifrado y descifrado de CryptoKey de Cloud KMS de la cuenta de servicio de la clave de KMS.
Después de revocar la clave, los agentes conversacionales (Dialogflow CX) no podrán acceder a los datos cifrados y el servicio dejará de estar operativo hasta que se restablezcan los permisos de la clave.