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.

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.
Acesse IAM & Admin → Workload Identity Federation e clique em Criar pool

Na etapa Criar um pool de identidades, defina um nome para o pool.
Guarde essa informação, pois será necessário registrá-la na OpenAI
Na etapa Adicionar um provedor ao pool:
Em Selecionar um provedor, escolha OpenID Connect (OIDC)
Defina um nome para o provedor.
Na seção Issuer (URL), insira https://accounts.google.com
Na seção Públicos
Selecione Público permitido
Informe o público que a OpenAI deverá incluir ao enviar o token.
Para ChatGPT ou API: insira o ID da organização da OpenAI (org-xxx)
Para a API, também é possível usar um ID de projeto específico para maior granularidade.

Na seção Mapeamento de atributos
para google.subject, insira assertion.sub

Na seção Condições de atributos
insira
assertion.sub == "105900137572174660365"
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
ID do pool de identidade de workload

ID do provedor de identidade de workload

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
Acesse Segurança → Proteção de dados → Gerenciamento de chaves
Na aba Visão geral, clique em Criar key ring
Defina um nome para o key ring
Em finalidade e algoritmo, selecione Criptografia e descriptografia simétrica

Após criar o key ring, ele aparecerá na aba Key rings. Clique no key ring.
Nos detalhes do key ring, clique em Criar chave
Defina um nome para a chave
4. Crie uma função com permissões limitadas para operações de criptografia e descriptografia no KMS
Acesse IAM & Admin → Funções e clique em Criar função
Defina um nome e um ID para a função
Clique em Adicionar permissões e inclua o seguinte
cloudkms.cryptoKeyVersions.useToDecrypt
cloudkms.cryptoKeyVersions.useToEncrypt
5. Atribua a identidade federada da OpenAI à função limitada do KMS para operações de criptografia e descriptografia
Acesse Segurança → Proteção de dados → Gerenciamento de chaves
Clique no nome do key ring e, em seguida, no nome da chave para abrir a página de detalhes.
Caso ainda não tenha criado esses recursos, retorne à etapa de criação do KMS
Acesse a aba Permissões e clique em Conceder acesso

Atribua a identidade federada da OpenAI à função personalizada criada anteriormente
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
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.
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
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"
}'