OpenAI

Instruções de integração da OpenAI com GCP EKM

Instruções passo a passo para provisionar o GCP e ativar o EKM

Atualizado: 4 hours ago

Visão geral

O Enterprise Key Management (EKM) permite que a OpenAI criptografe dados usando uma chave mestra sob seu controle. Este documento descreve como configurar sua conta do GCP para conceder à OpenAI acesso limitado ao AWS KMS.

Diagram of OpenAI GCP EKM integration flow using STS token exchange and KMS encrypt or decrypt requests

Etapas

1. Crie uma identidade federada para a OpenAI

A OpenAI emitirá um token de identidade a partir de uma conta do GCP pertencente à OpenAI, com formato semelhante ao descrito abaixo.

  • Os campos azp e sub correspondem aos IDs da conta de serviço da OpenAI no GCP

  • O campo aud corresponde ao ID da organização da OpenAI. Também é possível definir outro público, como o ID de um projeto da OpenAI, conforme descrito a seguir

{
  "aud": "org-xxxx",
  "azp": "105900137572174660365",
  "exp": 1747876928,
  "iat": 1747873328,
  "iss": "https://accounts.google.com",
  "sub": "105900137572174660365"
}

Essa etapa permite reconhecer as declarações do token de identidade e autoriza o STS do GCP a emitir um token de acesso quando esse token for apresentado.

  1. Acesse IAM & Admin → Workload Identity Federation e clique em Criar pool

    GCP IAM & Admin with Workload Identity Federation selected
  2. Na etapa Criar um pool de identidades, defina um nome para o pool.

    1. Guarde essa informação, pois será necessário registrá-la na OpenAI

  3. Na etapa Adicionar um provedor ao pool:

    1. Em Selecionar um provedor, escolha OpenID Connect (OIDC)

    2. Defina um nome para o provedor.

    3. Na seção Issuer (URL), insira https://accounts.google.com

    4. Na seção Públicos

      1. Selecione Público permitido

      2. Informe o público que a OpenAI deverá incluir ao enviar o token.

        1. Para ChatGPT ou API: insira o ID da organização da OpenAI (org-xxx)

        2. Para a API, também é possível usar um ID de projeto específico para maior granularidade.

          GCP Workload Identity Provider edit page with Allowed audiences selected and Audience 1 entered
    5. Na seção Mapeamento de atributos

      1. para google.subject, insira assertion.sub

        Google Cloud attribute mapping with Google 1 google.subject mapped to OIDC 1 assertion.sub
    6. Na seção Condições de atributos

      1. insira assertion.sub == "105900137572174660365"

  4. Após a configuração, o pool de identidade de workload e o provedor correspondente estarão listados na página https://console.cloud.google.com/iam-admin/workload-identity-pools

    1. ID do pool de identidade de workload

      GCP Workload Identity Pools page highlighting the provider ID value needed for OpenAI EKM setup
    2. ID do provedor de identidade de workload

      GCP Workload Identity Provider edit page with the provider ID field highlighted

2. Certifique-se de que o KMS esteja habilitado

Acesse https://console.developers.google.com/apis/api/cloudkms.googleapis.com/overview para habilitar o KMS. Não é necessário criar o KMS no mesmo projeto do GCP em que a identidade federada da OpenAI foi configurada. No entanto, se os projetos forem diferentes, o serviço KMS deve estar ativado em ambos.

3. Crie uma nova chave do KMS

  1. Acesse Segurança → Proteção de dados → Gerenciamento de chaves

  2. Na aba Visão geral, clique em Criar key ring

    1. Defina um nome para o key ring

    2. Em finalidade e algoritmo, selecione Criptografia e descriptografia simétrica

      GCP Key Management Overview page with the Create Key Ring button highlighted
    3. Após criar o key ring, ele aparecerá na aba Key rings. Clique no key ring.

    4. Nos detalhes do key ring, clique em Criar chave

      1. Defina um nome para a chave

4. Crie uma função com permissões limitadas para operações de criptografia e descriptografia no KMS

  1. Acesse IAM & Admin → Funções e clique em Criar função

  2. Defina um nome e um ID para a função

  3. Clique em Adicionar permissões e inclua o seguinte

    1. cloudkms.cryptoKeyVersions.useToDecrypt

    2. cloudkms.cryptoKeyVersions.useToEncrypt

5. Atribua a identidade federada da OpenAI à função limitada do KMS para operações de criptografia e descriptografia

  1. Acesse Segurança → Proteção de dados → Gerenciamento de chaves

  2. Clique no nome do key ring e, em seguida, no nome da chave para abrir a página de detalhes.

    1. Caso ainda não tenha criado esses recursos, retorne à etapa de criação do KMS

  3. Acesse a aba Permissões e clique em Conceder acesso

    Google Cloud KMS key details page with Permissions tab open and Grant Access highlighted
  4. Atribua a identidade federada da OpenAI à função personalizada criada anteriormente

    1. Na seção Adicionar principais, insira principal://iam.googleapis.com/projects/<YOUR_GCP_PROJECT_NUMBER>/locations/global/workloadIdentityPools/<YOUR_GCP_WORKLOAD_IDENTITY_POOL>/subject/105900137572174660365

      1. O valor YOUR_GCP_PROJECT_NUMBER corresponde ao projeto em que a identidade federada da OpenAI foi configurada ao criar YOUR_GCP_WORKLOAD_IDENTITY_POOL. Esse projeto pode, mas não precisa, ser o mesmo onde o KMS está configurado.

      2. Se os projetos forem diferentes, verifique se o KMS está ativado no outro projeto acessando https://console.developers.google.com/apis/api/cloudkms.googleapis.com/overview

    2. Na seção Atribuir funções, selecione a função personalizada criada na etapa anterior, com permissões limitadas para o EKM

6. Aplique restrições adicionais conforme as práticas de segurança

Os itens acima representam os requisitos mínimos para configuração do EKM. É possível aplicar políticas ou restrições adicionais de acordo com as práticas internas de segurança, desde que a OpenAI consiga executar operações de criptografia e descriptografia no KMS. Ao chamar o endpoint de registro de chave da OpenAI descrito na documentação, a configuração será validada.

Após concluir as etapas acima

ChatGPT Enterprise

Entre em contato com sua pessoa de contato na OpenAI e compartilhe as seguintes informações:

  • "workload_identity_project_number": "123456789012",

    • O número do projeto GCP de 12 dígitos onde você registrou a identidade de carga de trabalho da OpenAI

  • "workload_identity_pool_id": "openai-azure",

    • O pool que contém o provedor de identidade de carga de trabalho que você registrou para a OpenAI

  • "workload_identity_provider_id": "openai-ekm-service-role",

    • O provedor de identidade de carga de trabalho que você registrou para a OpenAI

  • "kms_project_id": "adjective-noun-12345",

    • O nome do projeto GCP onde seu KMS está hospedado

  • "kms_key_name": "openai-kms-key",

    • O nome da chave mestra do Sistema de Gerenciamento de Chaves

  • "kms_key_ring_name": "openai-kms-key-ring",

    • O key ring do sistema de gerenciamento de chaves que contém a chave mestra sob sua administração

  • "kms_key_location": "us-east1"

    • A região onde sua chave mestra do Sistema de Gerenciamento de Chaves está localizada

A OpenAI habilitará o EKM para sua organização ou workspace do ChatGPT.

API

Cadastre sua chave externa na OpenAI

Siga as instruções na referência da API de Chaves Externas, disponível na API de gerenciamento

  • Primeiro, registre a chave externa no nível da organização da OpenAI para gerar um ID de chave externa.

  • Nesta etapa, a configuração no GCP será validada para confirmar que é possível autenticar no KMS.

  • Esse processo ainda não ativa o EKM no projeto da OpenAI.

curl -X POST \
-H "Content-type: application/json" \
-H "Authorization: Bearer $TOKEN" \
"https://api.openai.com/v1/organization/external_keys" \
-d '{
   "type": "gcp",
   "name": "GCP EKM Config",
   "workload_identity_project_number": "123456789012",
   "workload_identity_pool_id": "openai-azure",
   "workload_identity_provider_id": "openai-ekm-service-role",
   "audience": <your org id or project id>,
   "kms_project_id": "adjective-noun-12345",
   "kms_key_name": "openai-kms-key",
   "kms_key_ring_name": "openai-kms-key-ring",
   "kms_key_location": "us-east1"
}'

Em seguida, crie um projeto da OpenAI associado à chave externa. Após essa etapa, o EKM será ativado no projeto.

curl -X POST \
-H "Content-type: application/json" \
-H "Authorization: Bearer $TOKEN" \
"https://api.openai.com/v1/organization/projects" \
-d '{
   "name": "Some Project",

   "external_key_id": "extkey_xxxx"

}'

Este artigo foi útil?