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

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

Solo los datos de conversación en reposo en una ubicación compatible se pueden proteger con CMEK.

Ubicaciones admitidas

Las CMEK están disponibles en todas las ubicaciones de Agent Assist, excepto global y eu. Para obtener más detalles, consulta también la página de regionalización de Agent Assist.

Limitaciones

Las CMEK también están disponibles para todas las funciones que admiten las ubicaciones de Agent Assist, incluidas las siguientes:

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 tus datos de Agent Assist. De lo contrario, las solicitudes fallarán.

Habilita CMEK en Agent Assist

Antes de crear datos de Agent Assist en una ubicación específica, puedes especificar si los datos de esta ubicación estarán protegidos por una clave administrada por el cliente. Configura tu clave 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 una ubicación de Agent Assist

  1. 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: La ubicación que elegiste para habilitar CMEK en Agent Assist.
    • KMS_KEY_RING: Es el llavero en el que se creó la clave de KMS. (La ubicación en el 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 Agent Assist 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 Agent Assist 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, Agent Assist no podrá acceder a los datos encriptados y el servicio ya no estará en un estado operativo hasta que se restablezcan los permisos de la clave.