Claves de encriptación administradas por el cliente

De forma predeterminada, Agent Search encripta el contenido del cliente en reposo. Agent Search 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, incluida la Búsqueda con agente. 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 hacer un seguimiento del uso de las claves, 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 Search 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).

Cuando se registra una clave de CMEK, Agent Search llama a Cloud KMS de forma periódica para mantener una instancia aislada de forma lógica de tus datos. Esto sucede incluso si el parámetro de configuración de la CMEK no está establecido como predeterminado y no hay apps ni conectores de datos que la usen. El uso proviene de la configuración y la ejecución de la instancia, no de la cantidad de datos ni de la cantidad de usuarios que acceden a ella. Consulta los precios de Cloud Key Management Service.

Para detener por completo el uso de Cloud KMS, debes anular el registro de tu clave de Cloud KMS, inhabilitar la clave o revocar sus permisos. Si inhabilitas la API de Agent Search, no se borrarán tus datos ni tu CmekConfig, y se te seguirá facturando el uso de la CMEK.

Limitaciones de Cloud KMS en Agent Search

Las siguientes limitaciones se aplican a las claves de CMEK (Cloud KMS) en Agent Search:

  • Las claves que ya se aplicaron a una app o a un conector de datos no se pueden cambiar, aunque se pueden rotar las versiones de las claves.
  • Debes usar aplicaciones y almacenes de datos multirregionales de EE.UU. o la UE (no globales). Para obtener más información sobre las multirregiones y la residencia de datos, incluidos los límites asociados con el uso de ubicaciones no globales, consulta ubicaciones.
  • Si necesitas registrar más de una clave para un proyecto, comunícate con tu equipo de cuentas de Google para solicitar un aumento de la cuota para las configuraciones de CMEK y proporciona una justificación de por qué necesitas más de una clave.

    Se aplican las siguientes limitaciones al EKM o HSM con CMEK:

    • Tu cuota de EKM y HSM para las llamadas de encriptación y desencriptación debe tener al menos 1,000 QPM de margen. Para obtener información sobre cómo consultar tus cuotas, consulta Cómo consultar tus cuotas de Cloud KMS.

    • Si se usa EKM, se debe poder acceder a la clave durante más del 90% de cualquier período de más de 30 segundos. Si no se puede acceder a la clave durante este período, se puede afectar negativamente la indexación y la actualización de la búsqueda.

    • Si hay problemas de facturación, problemas persistentes de falta de cuota o problemas persistentes de inaccesibilidad durante más de 12 horas, el servicio desactiva automáticamente el CmekConfig asociado con la clave del EKM o del HSM.

  • Las apps o los conectores de datos creados antes de que se registre una clave en el proyecto no pueden protegerse con esa clave.
  • En el caso de las apps con varios conectores de datos, si un conector de datos usa una configuración de CMEK, todos los demás conectores de datos también deben usar la misma configuración de CMEK.

Acerca de las claves de una sola región para conectores de terceros

Si usas conectores de terceros y quieres usar tus propias claves para proteger los datos conectados, debes crear tres claves complementarias de una sola región, además de la clave de varias regiones. Los comandos para crear claves se proporcionan en el siguiente procedimiento, Registra tu clave de Cloud KMS.

Las claves únicas deben crearse para las siguientes regiones:

Multirregión Regiones individuales
eu europe-west1 europe-west4 europe-north1
us us-east1 us-central1 us-west1

Antes de comenzar

Asegúrate de cumplir con los siguientes requisitos previos:

  • Crea una clave simétrica multirregional de Cloud KMS. Consulta Crea un llavero de claves y Crea una clave en la documentación de Cloud KMS.

    • Establece el período de rotación en Nunca (rotación manual).

    • En Ubicación, selecciona Multirregión y, luego, europe o us en el menú desplegable.

  • Se otorgó el rol de IAM de encriptador/desencriptador de CryptoKey (roles/cloudkms.cryptoKeyEncrypterDecrypter) en la clave al agente de servicio de Discovery Engine. La cuenta del agente de servicio tiene una dirección de correo electrónico con el siguiente formato: service-PROJECT_NUMBER@gcp-sa-discoveryengine.iam.gserviceaccount.com. Para obtener instrucciones generales sobre cómo agregar un rol a un agente de servicio, consulta Otorga o revoca un solo rol.

  • Se otorgó el rol de IAM de encriptador/desencriptador de CryptoKey (roles/cloudkms.cryptoKeyEncrypterDecrypter) en la clave al agente de servicio de Cloud Storage. Si no se otorga este rol, fallará la importación de datos para las apps y los conectores de datos protegidos por CMEK, ya que Discovery Engine no podrá crear el bucket y el directorio temporales protegidos por CMEK que se requieren para la importación.

  • No crees ninguna app ni conector de datos que quieras que administre tu clave hasta que completes las instrucciones de registro de la clave que se indican en esta página.

Registra tu clave de Cloud KMS

Para encriptar datos con CMEK, debes registrar tu clave multirregional. De manera opcional, si tus datos necesitan claves de una sola región (por ejemplo, cuando usas conectores de terceros), también debes registrar tus claves de una sola región.

Antes de comenzar

Asegúrate de que se den las siguientes condiciones:

  • La región aún no está protegida por una clave. El siguiente procedimiento falla si ya se registró una clave para la región a través del comando de REST. Para determinar si hay una clave activa en Agent Search para una ubicación, consulta Cómo ver las claves de Cloud KMS.

Procedimiento

REST

Para registrar tu propia clave para Agent Search, sigue estos pasos:

  1. Llama al método UpdateCmekConfig con la clave que deseas registrar.

    curl -X PATCH \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -d '{"kmsKey":"projects/KMS_PROJECT_ID/locations/KMS_LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME"}' \
    "https://LOCATION-discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/cmekConfigs/CMEK_CONFIG_ID?set_default=SET_DEFAULT"
    

    Reemplaza lo siguiente:

    • KMS_PROJECT_ID: Es el ID del proyecto que contiene la clave. El número de proyecto no funcionará.
    • KMS_LOCATION: Es la multirregión de tu clave: us o europe.
    • KEY_RING: Es el nombre del llavero de claves que contiene la clave.
    • KEY_NAME: el nombre de la clave.
    • PROJECT_ID: Es el ID del proyecto que contiene el conector de datos o de la app.
    • LOCATION: Es la multirregión de tu app o conector de datos: us o eu.
    • CMEK_CONFIG_ID: Establece un ID único para el recurso CmekConfig, por ejemplo, default_cmek_config.
    • SET_DEFAULT: Se establece en true para usar la clave como clave predeterminada para las apps y los conectores de datos posteriores que se creen en la multirregión.

  2. Verifica que tu clave esté lista para usarse antes de crear apps o conectores de datos. Una clave registrada no puede proteger recursos hasta que esté lista. Por lo general, el registro de una llave tarda unos minutos. Consulta Cómo verificar que tu clave de Cloud KMS esté lista para usarse.

    Para hacer un seguimiento de la operación de registro, puedes registrar el valor de name que devuelve el método y seguir los pasos que se indican en Cómo obtener detalles sobre una operación de larga duración.

    Una vez que la clave esté lista, las apps y los conectores de datos nuevos de esa multirregión estarán protegidos por la clave. Para obtener información general sobre la creación de apps, consulta Acerca de las apps y los almacenes de datos.

  3. Crea la app. Para obtener vínculos a instrucciones para crear varias apps, consulta Acerca de las apps y los almacenes de datos.

Console

Procedimiento

Para registrar tu propia clave para Agent Search, sigue estos pasos:

  1. En la consola de Google Cloud , ve a la página AI Applications.

    Aplicaciones basadas en IA

  2. Haz clic en Configuración y selecciona la pestaña CMEK.

  3. Haz clic en Agregar clave para la ubicación us o eu.

    Haz clic en Agregar llave para una ubicación.
    Haz clic en Agregar clave.
    1. Haz clic en el menú desplegable Selecciona una clave de Cloud KMS y elige la clave.

      • Si la clave está en un proyecto diferente, haz clic en Cambiar proyecto, luego en el nombre de tu proyecto, escribe el nombre de la clave que creaste y selecciona la clave.

      • Si conoces el nombre del recurso de la clave, haz clic en Ingresar manualmente, pega el nombre del recurso de la clave y haz clic en Guardar.

    2. Haz clic en Aceptar > Guardar.

  4. Verifica que tu clave esté lista para usarse antes de crear apps o conectores de datos. Una clave registrada no puede proteger recursos hasta que esté lista. Consulta Verifica que tu clave de Cloud KMS esté lista para usarse.

  5. Crea la app. Para obtener vínculos a instrucciones para crear varias apps, consulta Acerca de las apps y los almacenes de datos.

Esto registra tu clave y crea un CmekResource llamado default_cmek_config.

Los datos transferidos pueden tardar varias horas en aparecer en los resultados de la búsqueda.

Cómo ver las claves de Cloud KMS

Para ver una clave registrada para Agent Search, realiza una de las siguientes acciones:

  • Si tienes el nombre del recurso CmekConfig, llama al método GetCmekConfig:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://LOCATION-discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/cmekConfigs/CMEK_CONFIG_ID"
    

    Reemplaza lo siguiente:

    • LOCATION: Es la multirregión de tu app o conector de datos: us o eu.
    • PROJECT_ID: Es el ID del proyecto que contiene los datos.
    • CMEK_CONFIG_ID: Es el ID del recurso CmekConfig. Si registraste tu clave con la consola, el ID es default_cmek_config.

    Un ejemplo de llamada y respuesta de curl se ve de la siguiente manera:

    $ curl -X GET
    -H "Authorization: Bearer $(gcloud auth print-access-token)"
    "https://us-discoveryengine.googleapis.com/v1/projects/my-ai-app-project-123/locations/us/cmekConfigs/default_cmek_config"
    
    { "name": "projects/my-ai-app-project-123/locations/us/cmekConfigs/default_cmek_config", "kmsKey": "projects/key-project-456/locations/us/keyRings/my-key-ring/cryptoKeys/my-key" "state": "ACTIVE" "isDefault": true }

  • Si no tienes el nombre del recurso CmekConfig, llama al método ListCmekConfigs:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://LOCATION-discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/cmekConfigs"
    

    Reemplaza lo siguiente:

    • LOCATION: Es la multirregión de tu app o conector de datos: us o eu.
    • PROJECT_ID: Es el ID del proyecto que contiene los datos.

    Un ejemplo de llamada y respuesta de curl se ve de la siguiente manera:

    $ curl -X GET
    -H "Authorization: Bearer $(gcloud auth print-access-token)"
    "https://us-discoveryengine.googleapis.com/v1/projects/my-ai-app-project-123/locations/us/cmekConfigs"
    
    { "cmek_configs": [ { "name": "projects/my-ai-app-project-123/locations/us/cmekConfigs/default_cmek_config", "kmsKey": "projects/key-project-456/locations/us/keyRings/my-key-ring/cryptoKeys/my-key" "state": "ACTIVE" "isDefault": true } ] }

Verifica que tu clave de Cloud KMS esté lista para usarse

Después de registrar una clave, debes verificar que esté lista para usarse antes de que pueda proteger recursos:

  1. Visualiza tus claves de Cloud KMS registradas. Consulta Cómo ver las claves de Cloud KMS.

  2. Revisa el resultado del comando. El objeto CmekConfig está listo para usarse si todos los siguientes valores se encuentran en el resultado:

    • "state": "ACTIVE"
    • "isDefault": true

    Si es "isDefault": true, la clave se aplica automáticamente para proteger las nuevas apps y los conectores de datos.

También puedes verificar que se haya establecido una configuración predeterminada de CMEK (es decir, "isDefault": true) con la consola de Google Cloud :

  1. En la consola de Google Cloud , ve a la página AI Applications.

  2. Haz clic en Configuración y selecciona la pestaña CMEK.

  3. Verifica que el estado de configuración de tu ubicación muestre la clave registrada.

Anula el registro de tu clave de Cloud KMS

Para anular el registro de tu clave en Agent Search, sigue estos pasos:

  1. Llama al método DeleteCmekConfig con el nombre del recurso CmekConfig que deseas anular el registro.

    curl -X DELETE \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://LOCATION-discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/cmekConfigs/CMEK_CONFIG_ID"
    

    Reemplaza lo siguiente:

    • LOCATION: Es la multirregión de tu app o conector de datos: us o eu.
    • PROJECT_ID: Es el ID del proyecto que contiene el conector de datos o la app.
    • CMEK_CONFIG_ID: Es el ID del recurso CmekConfig. Si registraste tu clave con la consola, el ID es default_cmek_config.

    Un ejemplo de llamada y respuesta de curl se ve de la siguiente manera:

    $ curl -X DELETE
    -H "Authorization: Bearer $(gcloud auth print-access-token)"
    "https://us-discoveryengine.googleapis.com/v1/projects/my-ai-app-project-123/locations/us/cmekConfigs/default_cmek_config"
     
    {
     "name": "projects/my-ai-app-project-123/locations/us/operations/delete-cmek-config-56789",
     "metadata": {
      "@type": "type.googleapis.com/google.cloud.discoveryengine.v1.DeleteCmekConfigMetadata"
     }
    }
    

  2. Opcional: Registra el valor de name que muestra el método y sigue las instrucciones en Cómo obtener detalles sobre una operación de larga duración para ver cuándo se completa la operación.

    Borrar un CmekConfig es una operación de larga duración que puede tardar hasta un par de días en completarse. Esto se debe a que los recursos encriptados subyacentes se desaprovisionan por completo antes de que se quite CmekConfig.

Cómo verificar que un conector de datos o una app estén protegidos por una clave

Las apps y los conectores de datos que se creen después de que se registre tu clave estarán protegidos por ella. Si quieres confirmar que una app o un conector de datos en particular están protegidos por tu clave, sigue estos pasos:

Verifica con la consola de Google Cloud

  1. Para verificar si un conector de datos está protegido por una clave, haz lo siguiente:

    1. En la consola de Google Cloud , ve a la página AI Applications.

    2. Haz clic en Almacenes de datos y selecciona tu conector de datos.

    3. Verifica que el campo Clave de KMS muestre tu clave registrada.

Verifica con la CLI o la API

  1. Para verificar un almacén de datos, haz lo siguiente:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -H "x-goog-user-project: PROJECT_ID" \
    "https://LOCATION-discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/collections/default_collection/dataStores/DATA_STORE_ID"
    

    Reemplaza lo siguiente:

    • LOCATION: Es la multirregión de tu proyecto: us o eu.
    • PROJECT_ID: ID del proyecto que contiene el conector de datos o de la app.
    • DATA_STORE_ID: Es el ID del almacén de datos asociado con tu app o conector de datos.

    Un ejemplo de llamada de curl se ve de la siguiente manera:

    curl -X GET
    -H "Authorization: Bearer $(gcloud auth print-access-token)"
    -H "Content-Type: application/json"
    -H "x-goog-user-project: my-ai-app-project-123"
    "https://us-discoveryengine.googleapis.com/v1/projects/my-ai-app-project-123/locations/us/collections/default_collection/dataStores/my-data-store-1"
    

  2. Para verificar una app, haz lo siguiente:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -H "x-goog-user-project: PROJECT_ID" \
    "https://LOCATION-discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/collections/default_collection/engines/ENGINE_ID"
    

    Reemplaza lo siguiente:

    • LOCATION: Es la multirregión de tu proyecto: us o eu.
    • PROJECT_ID: Es el ID del proyecto que contiene la app.
    • ENGINE_ID: Es el ID de tu app.

    Un ejemplo de llamada de curl se ve de la siguiente manera:

    curl -X GET
    -H "Authorization: Bearer $(gcloud auth print-access-token)"
    -H "Content-Type: application/json"
    -H "x-goog-user-project: my-ai-app-project-123"
    "https://us-discoveryengine.googleapis.com/v1/projects/my-ai-app-project-123/locations/us/collections/default_collection/engines/my-app"
    

  3. Revisa el resultado del comando: Si el campo cmekConfig está en el resultado y el campo kmsKey muestra la clave que registraste, la app o el conector de datos están protegidos por la clave.

    Un ejemplo de respuesta para un almacén de datos se ve de la siguiente manera:

    {
     "name": "projects/969795412903/locations/us/collections/default_collection/dataStores/my-data-store-1",
     "displayName": "my-data-store-1",
     "industryVertical": "GENERIC",
     "createTime": "2023-09-05T21:20:21.520552Z",
     "solutionTypes": [
       "SOLUTION_TYPE_SEARCH"
     ],
     "defaultSchemaId": "default_schema",
     "cmekConfig": {
       "name": "projects/969795412903/locations/us/collections/default_collection/dataStores/my-data-store-1/cmekConfigs/default_cmek_config",
       "kmsKey": "projects/my-ai-app-project-123/locations/us/keyRings/my-key-ring/cryptoKeys/my-key"
     }
    }
    

    Un ejemplo de respuesta para una app se ve de la siguiente manera:

    {
      "name": "projects/969795412903/locations/us/collections/default_collection/engines/my-app",
      "displayName": "my-app",
      "dataStoreIds": [
        "my-data-store-1"
      ],
      "solutionType": "SOLUTION_TYPE_SEARCH",
      "searchEngineConfig": {
        "searchTier": "SEARCH_TIER_STANDARD"
      },
      "industryVertical": "GENERIC",
      "appType": "APP_TYPE_INTRANET",
      "cmekConfig": {
       "name": "projects/969795412903/locations/us/collections/default_collection/dataStores/my-data-store-1/cmekConfigs/default_cmek_config",
       "kmsKey": "projects/my-ai-app-project-123/locations/us/keyRings/my-key-ring/cryptoKeys/my-key"
     }
    }
    

Otros datos protegidos por la clave de Cloud KMS

Además de los datos de las apps y los conectores de datos, tus claves pueden proteger otros tipos de información principal propiedad de la app que contiene Agent Search, como los datos de sesión generados durante la búsqueda con seguimiento. Este tipo de información principal está protegida por CMEK si las apps y los conectores de datos también lo están.

Si bien no puedes ejecutar un comando específico para verificar que las sesiones estén protegidas, puedes verificar si la app está protegida. Ejecuta el comando Verifica que una app o un conector de datos estén protegidos por una clave para que la app vea la clave en el recurso cmekConfig. Así sabrás que los datos de la sesión están protegidos.

Rota las claves de Cloud KMS

Cuando rotas las claves, creas una versión nueva de la clave y la configuras como la versión principal. Deja habilitada la versión original de la llave durante un tiempo antes de inhabilitarla. Esto les da tiempo a las operaciones de larga duración que podrían estar usando la clave anterior para completarse.

En el siguiente procedimiento, se describen los pasos para rotar las claves de una app de Agent Search o un conector de datos. Para obtener información general sobre la rotación de claves, consulta Rotación de claves en la guía de Cloud KMS.

Importante: No rotes las claves en las apps ni en los conectores de datos asociados con recomendaciones o con cualquier app que necesite estadísticas, y no rotes las claves de una sola región que se usan para los conectores de terceros. Consulta Limitaciones de Cloud KMS en Agent Search.

  1. Vuelve a registrar tu llave. Para ello, repite el paso 1 de Registra tu clave de Cloud KMS.

  2. Consulta las instrucciones en la sección Administra claves de la guía de Cloud KMS para hacer lo siguiente:

    1. Crea una versión de clave nueva, habilítala y conviértela en la principal.

      Después de que la nueva clave se convierte en la principal, los documentos de la app o del conector de datos se vuelven a encriptar con la nueva clave, y los documentos posteriores que se agreguen a la app o al conector de datos se encriptan con la nueva clave.

    2. Deja habilitada la versión de clave anterior.

    3. Después de una semana, inhabilita la versión de clave anterior y asegúrate de que todo funcione como antes.

    4. En una fecha posterior, cuando tengas la certeza de que la inhabilitación de la versión anterior de la clave no causó problemas, puedes destruir esa versión.

Si se inhabilita o revoca una clave de Cloud KMS

Si una clave está inhabilitada o se revocan los permisos para la clave, la app o el conector de datos dejan de transferir datos y de publicarlos en un plazo de 15 minutos. Puedes volver a habilitar la clave en un plazo de 30 días para reanudar las operaciones antes de que venza la configuración de CMEK y se borren permanentemente los datos asociados. Sin embargo, volver a habilitar una clave o restablecer los permisos lleva mucho tiempo. La app o el conector de datos pueden tardar hasta 24 horas en reanudar la publicación de datos.

Por lo tanto, no inhabilite una clave a menos que sea necesario. Habilitar o inhabilitar una clave en un conector de datos o una app es una operación que lleva mucho tiempo. Por ejemplo, cambiar repetidamente una clave entre inhabilitada y habilitada significa que la app o el conector de datos tardarán mucho tiempo en alcanzar un estado protegido. Si inhabilitas una clave y la vuelves a habilitar inmediatamente después, es posible que se produzcan días de inactividad, ya que primero se inhabilita la clave del conector de datos o de la app y, luego, se vuelve a habilitar.

Solución de problemas: Error de no se encontraron proyectos de claves de KMS

Síntoma: Cuando intentas crear un conector de datos o una app con una clave de KMS, recibes un error similar al siguiente:

KMS key projects/[...] not found for location: [...] and project number: [...]

Problema: Este mensaje de error puede ser engañoso. No necesariamente significa que la clave no existe. En cambio, podría indicar que la clave de KMS no se registró para usarse con Agent Search en la ubicación especificada.

Solución: Para resolver este problema, registra tu clave siguiendo los pasos que se indican en Cómo registrar tu clave de Cloud KMS. Una vez que se complete el registro, podrás crear apps o conectores de datos protegidos por esa clave.