De forma predeterminada, Dialogflow encripta el contenido del cliente 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. 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. 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 de Conversational Agents (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 previamente con una nueva versión de clave.
- No se admiten las siguientes regiones:
global
- 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 no integrados en CMEK no se pueden integrar en CMEK de forma retroactiva. En su lugar, se recomienda que los recursos se exporten y restablezcan en un proyecto nuevo para CMEK.
- AI Applications 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 su ubicación y si usará una clave administrada por Google o la clave administrada por el cliente ya configurada para esa ubicación. Realiza tus selecciones en este momento.
Requisitos previos
Crea la cuenta de servicio de CMEK de la CCAI para tu proyecto con Google Cloud CLI. Para obtener más información, consulta la documentación sobre la 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
Otorga a la cuenta de servicio de la CMEK de la CCAI el rol de Encriptador/Desencriptador de CryptoKey de Cloud KMS para garantizar 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 Conversational Agents (Dialogflow CX)
Usa la API de
InitializeEncryptionSpec
para configurar la clave.Deberás proporcionar las siguientes variables:
PROJECT_ID
: El ID de tu proyecto de Google Cloud .LOCATION_ID
: Es la ubicación que elegiste para habilitar la CMEK en Conversational Agents (Dialogflow CX).KMS_KEY_RING
: Es 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 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" }
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"
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 de la clave de KMS.
Después de la revocación de la clave, los datos encriptados dejarán de ser accesibles para los agentes conversacionales (Dialogflow CX) y el servicio dejará de estar en un estado operativo hasta que se restablezcan los permisos de la clave.