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. Criar 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 e Administração -> Federação de Identidades de Carga de Trabalho e clique em Criar Pool.

Na etapa Criar um pool de identidades, defina um nome para o pool.
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, digite assertion.sub

Na seção Condições de atributos
Agora você deverá ver seu pool de identidades de carga de trabalho e seu provedor de identidades de carga de trabalho listados em https://console.cloud.google.com/iam-admin/workload-identity-pools página
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 seu KMS no mesmo projeto do GCP onde você reconheceu a identidade federada da OpenAI; no entanto, se os projetos forem diferentes, o produto KMS deve estar habilitado em ambos os projetos.
3. Crie uma nova chave 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/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.
Clique na guia Permissões e, em seguida, clique no botão 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
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",
"workload_identity_pool_id": "openai-azure",
"workload_identity_provider_id": "openai-ekm-service-role",
"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"
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"
}'