Chaves de criptografia gerenciadas pelo cliente

Por padrão, os aplicativos de IA criptografam o conteúdo do cliente em repouso. Os aplicativos de IA processam a criptografia para você sem que você precise fazer nada. Essa opção é chamada de Criptografia padrão do Google.

Se você quiser controlar suas chaves de criptografia, use chaves de criptografia gerenciadas pelo cliente (CMEKs) no Cloud KMS com serviços integrados a CMEKs, incluindo aplicativos de IA. O uso de chaves do Cloud KMS permite controlar o nível de proteção, o local, a programação de rotação, as permissões de uso e acesso e os limites criptográficos. O uso do Cloud KMS também permite a você monitorar o uso de chaves, visualizar registros de auditoria e controlar ciclos de vida importantes. Em vez de o Google ser proprietário e gerente de chaves de criptografia de chaves (KEKs) simétricas que protegem seus dados, você controla e gerencia essas chaves no Cloud KMS.

Depois de configurar os recursos com CMEKs, a experiência de acesso aos recursos do AI Applications é semelhante à criptografia padrão do Google. Para mais informações sobre suas opções de criptografia, consulte Chaves de criptografia gerenciadas pelo cliente (CMEK).

Limitações do Cloud KMS em aplicativos de IA

As seguintes limitações se aplicam às chaves CMEK (Cloud KMS) em aplicativos de IA:

  • As chaves já aplicadas a um repositório de dados não podem ser alteradas.
  • Depois que uma chave é registrada, ela não pode ser cancelada nem removida de um repositório de dados.
  • É preciso usar repositórios de dados e apps multirregionais dos EUA ou da UE (não globais). Para mais informações sobre multirregiões e residência de dados, incluindo limites associados ao uso de locais não globais, consulte locais.
  • Se você precisar registrar mais de uma chave para um projeto, entre em contato com a equipe da sua conta do Google para solicitar um aumento de cota para configurações de CMEK, justificando por que você precisa de mais de uma chave.

  • O uso do gerenciador de chaves externas (EKM) com CMEK está em disponibilidade geral com lista de permissões. Para usar o EKM com a CMEK, entre em contato com a equipe da sua conta do Google.

    As seguintes limitações se aplicam ao EKM ou HSM com CMEK:

    • Sua cota de EKM e HSM para chamadas de criptografia e descriptografia precisa ter pelo menos 1.000 QPM de capacidade. Para saber como verificar suas cotas, consulte Verificar suas cotas do Cloud KMS.

    • Se você estiver usando o EKM, a chave precisará estar acessível por mais de 90% de qualquer período de mais de 30 segundos. Se a chave não estiver acessível por esse período, isso poderá afetar negativamente a indexação e a atualização da pesquisa.

    • Se houver problemas de faturamento, problemas persistentes de falta de cota ou problemas persistentes de inacessibilidade por mais de 12 horas, o serviço vai desativar automaticamente o CmekConfig associado à chave do EKM ou HSM.

  • Os repositórios de dados criados antes do registro de uma chave no projeto não podem ser protegidos por ela.

  • Não é possível ajustar modelos de pesquisa para repositórios de dados protegidos por chaves.

  • Para apps com vários armazenamentos de dados, se um repositório de dados usar uma configuração de CMEK, todos os outros também precisarão usar a mesma configuração.

  • A rotação de chaves não é compatível com as chaves de região única para os conectores de terceiros. Se você desativar ou destruir uma versão de chave que protege um repositório de dados associado a um conector de terceiros, o conector vai parar de funcionar.

  • A rotação de chaves não é compatível com análises. Se você fizer a rotação das chaves de um repositório de dados, os apps que o usam não vão mais mostrar análises.

  • A rotação de chaves não é compatível com apps de recomendações. Se você desativar ou destruir uma versão de chave que protege um repositório de dados associado a um app de recomendações, ele vai parar de funcionar.

  • Para a Vertex AI para Pesquisa, é necessário o Enterprise Edition. Para informações sobre a edição Enterprise, consulte Sobre os recursos avançados.

  • Os conectores próprios não são compatíveis com a CMEK, exceto os armazenamentos de dados "import-once" e "periodic" do BigQuery e do Cloud Storage.

  • Os repositórios de dados de pesquisa de saúde e os conectores de terceiros são compatíveis com a CMEK. No entanto, os conectores próprios, como o conector periódico do BigQuery, não são compatíveis com CMEK. Para informações gerais sobre repositórios de dados de saúde, consulte Criar um repositório de dados de pesquisa de saúde. Para informações sobre como tornar os conectores de terceiros compatíveis com a CMEK, consulte Sobre chaves de região única para conectores de terceiros.

  • As chaves não se aplicam às seguintes APIs de RAG: verificar embasamento, geração embasada e ranking.

  • Não é possível usar o Terraform para configurar a CMEK para aplicativos de IA.

Sobre chaves de região única para conectores de terceiros

Se você usa conectores de terceiros e quer usar suas próprias chaves para proteger os dados conectados, crie três chaves suplementares de região única além da chave multirregional. Os comandos para criar chaves são fornecidos no procedimento a seguir, Registrar sua chave do Cloud KMS.

As chaves únicas precisam ser criadas para as seguintes regiões:

Multirregional Regiões únicas
eu europe-west1 europe-west4 europe-north1
us us-east1 us-central1 us-west1

Antes de começar

Verifique se você atende aos seguintes pré-requisitos:

  • Crie uma chave simétrica multirregional do Cloud KMS. Consulte Criar um keyring e Criar uma chave na documentação do Cloud KMS.

    • Defina o período de rotação como Nunca (rotação manual).

    • Em Local, selecione Multirregional e escolha europe ou us no menu suspenso.

  • O papel do IAM de criptografia/descriptografia do CryptoKey (roles/cloudkms.cryptoKeyEncrypterDecrypter) na chave foi concedido ao agente de serviço do Discovery Engine. A conta do agente de serviço tem um endereço de e-mail com o seguinte formato: service-PROJECT_NUMBER@gcp-sa-discoveryengine.iam.gserviceaccount.com. Para instruções gerais sobre como adicionar um papel a um agente de serviço, consulte Conceder ou revogar um único papel.

  • O papel do IAM de criptografador/descriptografador de CryptoKey (roles/cloudkms.cryptoKeyEncrypterDecrypter) na chave foi concedido ao agente de serviço do Cloud Storage. Se essa função não for concedida, a importação de dados para repositórios de dados protegidos por CMEK vai falhar porque o Discovery Engine não consegue criar o bucket e o diretório temporários protegidos por CMEK necessários para a importação.

  • Não crie repositórios de dados ou apps que você quer gerenciar com sua chave até concluir as instruções de registro de chave nesta página.

Registrar sua chave do Cloud KMS

Para criptografar dados usando a CMEK, registre sua chave multirregional. Se os dados precisarem de chaves de região única, por exemplo, ao usar conectores de terceiros, registre as chaves de região única.

REST

Para registrar sua própria chave para aplicativos de IA, siga estas etapas:

  1. Chame o método UpdateCmekConfig com a chave que você quer 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"
    

    Substitua:

    • KMS_PROJECT_ID: o ID do projeto que contém a chave. O número do projeto não vai funcionar.
    • KMS_LOCATION: a multirregião da sua chave: us ou europe.
    • KEY_RING: o nome do keyring que contém a chave.
    • KEY_NAME: o nome da chave;
    • PROJECT_ID: o ID do projeto que contém o repositório de dados.
    • LOCATION: a multirregião do seu repositório de dados: us ou eu.
    • CMEK_CONFIG_ID: defina um ID exclusivo para o recurso CmekConfig, por exemplo, default_cmek_config.
    • SET_DEFAULT: defina como true para usar a chave como padrão para os armazenamentos de dados subsequentes criados na multirregião.
  2. Opcional: registre o valor name retornado pelo método e siga as instruções em Receber detalhes sobre uma operação de longa duração para saber quando a operação será concluída.

    Normalmente, leva alguns minutos para registrar uma chave.

    Depois que a operação for concluída, os novos armazenamentos de dados nessa multirregião serão protegidos pela chave. Para informações gerais sobre como criar repositórios de dados, consulte Sobre apps e repositórios de dados.

Console

Antes de começar

Verifique se a região já não está protegida por uma chave. O procedimento a seguir falha se uma chave já estiver registrada para a região usando o comando REST.

Para determinar se há uma chave ativa nos aplicativos de IA em um local, consulte Ver chaves do Cloud KMS.

Procedimento

Para registrar sua própria chave para aplicativos de IA, siga estas etapas:

  1. No console Google Cloud , acesse a página Aplicativos de IA.

    Aplicativos de IA

  2. Clique em Configurações e selecione a guia CMEK.

  3. Clique em Adicionar chave para o local us ou eu.

    Clique em "Adicionar chave" para um local.
    Clique em "Adicionar chave".
    1. Clique no menu suspenso Selecionar uma chave do Cloud KMS e escolha a chave.

      • Se a chave estiver em outro projeto, clique em Alternar projeto, clique no nome do projeto, digite o nome da chave criada e selecione-a.

      • Se você souber o nome de recurso da chave, clique em Inserir manualmente, cole o nome de recurso da chave e clique em Salvar.

    2. Clique em OK > Salvar.

Isso registra sua chave, criando um CmekResource chamado default_cmek_config.

Pode levar várias horas para que os dados ingeridos apareçam nos resultados da pesquisa.

Ver chaves do Cloud KMS

Para conferir uma chave registrada para aplicativos de IA, faça o seguinte:

  • Se você tiver o nome do recurso CmekConfig, chame o 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"
    

    Substitua:

    • LOCATION: a multirregião do seu repositório de dados: us ou eu.
    • PROJECT_ID: o ID do projeto que contém os dados.
    • CMEK_CONFIG_ID: o ID do recurso CmekConfig. Se você registrou a chave usando o console, o ID é default_cmek_config.

    Exemplo de chamada e resposta do curl:

    $ 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 }

  • Se você não tiver o nome do recurso CmekConfig, chame o 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"
    

    Substitua:

    • LOCATION: a multirregião do seu repositório de dados: us ou eu.
    • PROJECT_ID: o ID do projeto que contém os dados.

    Exemplo de chamada e resposta do curl:

    $ 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 } ] }

Cancelar o registro da chave do Cloud KMS

Para cancelar o registro da sua chave nos aplicativos de IA, siga estas etapas:

  1. Chame o método DeleteCmekConfig com o nome do recurso CmekConfig que você quer cancelar o 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"
    

    Substitua:

    • LOCATION: a multirregião do seu repositório de dados: us ou eu.
    • PROJECT_ID: o ID do projeto que contém o repositório de dados.
    • CMEK_CONFIG_ID: o ID do recurso CmekConfig. Se você registrou a chave usando o console, o ID é default_cmek_config.

    Exemplo de chamada e resposta do curl:

    $ 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: registre o valor name retornado pelo método e siga as instruções em Receber detalhes sobre uma operação de longa duração para ver quando a operação será concluída.

    Normalmente, leva alguns minutos para excluir uma chave.

Verificar se um repositório de dados está protegido por uma chave

Os repositórios de dados criados antes do registro da chave não são protegidos por ela. Se quiser confirmar que um repositório de dados específico está protegido pela sua chave, siga estas etapas:

  1. Execute o seguinte comando curl no repositório de dados:

    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"
    

    Substitua:

    • LOCATION: a multirregião do seu repositório de dados: us ou eu.
    • PROJECT_ID: o ID do projeto que contém o repositório de dados.
    • DATA_STORE_ID: o ID do repositório de dados.

    Exemplo de chamada curl:

    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. Revise a saída do comando: se o campo cmekConfig estiver na saída e o campo kmsKey mostrar a chave que você registrou, o repositório de dados estará protegido por ela.

    Exemplo de resposta:

    {
     "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"
     }
    }
    

Outros dados protegidos pela chave do Cloud KMS

Além dos dados nos repositórios, suas chaves podem proteger outros tipos de informações principais pertencentes ao app mantidas pelos aplicativos de IA, como os dados de sessão gerados durante a pesquisa com acompanhamentos. Esse tipo de informação principal é protegido pela CMEK se os repositórios de dados associados ao app também forem.

Embora não seja possível executar um comando específico para verificar se as sessões estão protegidas, se você executar o comando Verificar se um repositório de dados está protegido por uma chave e encontrar a chave no recurso cmekConfig, os dados da sessão estarão protegidos.

Fazer a rotação das chaves do Cloud KMS

Ao fazer a rotação de chaves, você cria uma nova versão e a define como a principal. Deixe a versão original da chave ativada por um tempo antes de desativá-la. Isso dá tempo para que todas as operações de longa duração que possam estar usando a chave mais antiga sejam concluídas.

O procedimento a seguir descreve as etapas para rotacionar chaves de um repositório de dados de aplicativos de IA. Para informações gerais sobre rotação de chaves, consulte Rotação de chaves no guia do Cloud KMS.

Importante:não faça a rotação de chaves em repositórios de dados associados a apps de recomendações ou a apps que precisam de análises. Além disso, não faça a rotação das chaves de região única usadas para conectores de terceiros. Consulte Limitações do Cloud KMS em aplicativos de IA.

  1. Registre a chave novamente. Para isso, repita a etapa 1 de Registrar sua chave do Cloud KMS.

  2. Consulte as instruções na seção Gerenciar chaves do guia do Cloud KMS para fazer o seguinte:

    1. Crie uma versão de chave, ative e defina como principal.

    2. Deixe a versão de chave mais antiga ativada.

    3. Depois de uma semana, desative a versão de chave mais antiga e verifique se tudo está funcionando como antes.

    4. Em uma data posterior, quando tiver certeza de que não houve problemas causados pela desativação da versão de chave mais antiga, você poderá destruí-la.

Se uma chave do Cloud KMS for desativada ou revogada

Se uma chave for desativada ou as permissões dela forem revogadas, o repositório de dados vai parar de ingerir e veicular dados em 15 minutos. No entanto, reativar uma chave ou restaurar permissões leva muito tempo. Pode levar até 24 horas para que o repositório de dados retome a veiculação.

Portanto, não desative uma chave a menos que seja necessário. Ativar e desativar uma chave em um repositório de dados é uma operação demorada. Por exemplo, alternar repetidamente uma chave entre desativada e ativada significa que o repositório de dados vai levar muito tempo para atingir um estado protegido. Desativar uma chave e reativá-la imediatamente depois pode resultar em dias de inatividade, porque a chave é primeiro desativada do repositório de dados e depois reativada.