Descrição geral
A Enterprise Key Management (EKM) permite à OpenAI encriptar dados utilizando uma chave mestra que controla. Este documento mostra como configurar a sua conta GCP para conceder permissões limitadas à OpenAI no seu KMS.

Passos
1. Crie uma identidade federada para a OpenAI
A OpenAI emitirá um token de identidade a partir de uma conta GCP detida pela OpenAI que se parece com algo assim.
azp e sub são o ID da conta de serviço da OpenAI no GCP
aud é o ID da sua organização OpenAI. Também pode escolher outra audiência, como o ID do seu projeto OpenAI — consulte as instruções abaixo
{
"aud": "org-xxxx",
"azp": "105900137572174660365",
"exp": 1747876928,
"iat": 1747873328,
"iss": "https://accounts.google.com",
"sub": "105900137572174660365"
}Este passo reconhece as declarações feitas por esse token de identidade e permite que o seu GCP STS emita um token de acesso quando esse token de identidade é fornecido.
Vá a IAM & Administração -> Federação de identidades de cargas de trabalho e clique em Criar conjunto

No passo Criar um conjunto de identidades, introduza qualquer valor para o nome do conjunto.
No passo Adicionar um fornecedor ao conjunto:
Em Selecionar um fornecedor, selecione OpenID Connect (OIDC)
Introduza qualquer valor para o nome do fornecedor.
Na secção Emissor (URL), introduza https://accounts.google.com
Na secção Audiências
Selecione Audiências permitidas
Introduza a audiência que a OpenAI deve indicar quando lhe passarmos um token.
Para ChatGPT ou API: pode colocar o ID da organização da API OpenAI (org-xxx)
Para API: pode colocar um ID de projeto de API específico para maior granularidade.

Na secção Mapeamento de atributos
para google.subject, introduza assertion.sub

Na secção Condições de atributos
Agora deverá ver o seu conjunto de identidades de cargas de trabalho e fornecedor de identidades de cargas de trabalho listados na página https://console.cloud.google.com/iam-admin/workload-identity-pools
ID do conjunto de identidades de cargas de trabalho

ID do fornecedor de identidades de cargas de trabalho

2. Certifique-se de que o KMS está ativado
Vá a https://console.developers.google.com/apis/api/cloudkms.googleapis.com/overview para ativar o KMS. Não é obrigatório criar o seu KMS no mesmo projeto GCP em que reconheceu a identidade federada da OpenAI; no entanto, se os projetos forem diferentes, o produto KMS tem, pelo menos, de estar ativado em ambos os projetos.
3. Crie uma nova chave KMS
Vá a Segurança -> Proteção de dados > Gestão de chaves
No separador Descrição geral, clique em Criar conjunto de chaves
Escolha qualquer nome para o seu conjunto de chaves
Para Finalidade e algoritmo, selecione Encriptação/desencriptação simétrica

Depois de criar um conjunto de chaves, este deverá aparecer no separador Conjuntos de chaves. Clique no conjunto de chaves.
Nos detalhes do conjunto de chaves, clique em Criar chave
Escolha qualquer nome para a sua chave
4. Crie uma função limitada para operações de encriptação/desencriptação no KMS
Vá a IAM & Administração -> Funções -> Criar função
Introduza qualquer valor para o título e ID da função
Clique em Adicionar permissões e, em seguida, adicione o seguinte
cloudkms.cryptoKeyVersions.useToDecrypt
cloudkms.cryptoKeyVersions.useToEncrypt
5. Atribua a identidade federada da OpenAI à função limitada do KMS para operações de encriptação/desencriptação
Vá a Segurança -> Proteção de dados > Gestão de chaves
Clique no nome do seu conjunto de chaves e, em seguida, clique no seu nome da chave para aceder à página de detalhes da chave.
Clique no separador Permissões e, em seguida, clique no botão Conceder acesso

Atribua a identidade federada da OpenAI à função personalizada que criou anteriormente
Na secção Adicionar entidades principais, introduza principal://iam.googleapis.com/projects/<YOUR_GCP_PROJECT_NUMBER>/locations/global/workloadIdentityPools/<YOUR_GCP_WORKLOAD_IDENTITY_POOL>/subject/105900137572174660365
Na secção Atribuir funções, selecione a função personalizada que criou no passo anterior para permissões EKM limitadas
6. Aplique quaisquer restrições adicionais em conformidade com as suas próprias práticas de segurança
Acima está a informação mínima necessária de que a OpenAI precisa para configurar o EKM. Pode aplicar políticas de chave ou restrições adicionais em conformidade com as suas próprias práticas de segurança internas, desde que a OpenAI consiga invocar operações de encriptação e desencriptação no seu KMS. Quando chamar o endpoint de registo de chaves da OpenAI descrito abaixo, validaremos a sua configuração.
Depois de concluir os passos acima
ChatGPT Enterprise
Contacte o seu contacto da OpenAI e partilhe o seguinte:
"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 está localizada a chave mestra do seu Sistema de Gestão de Chaves
Ativaremos o EKM para a sua organização/espaço de trabalho do ChatGPT.
API
Registe a sua chave externa na OpenAI
Siga as instruções nesta referência da API Chaves externas na API de Gestão
Primeiro, registe a sua chave externa ao nível da organização OpenAI, o que irá gerar um ID de chave externa.
Neste passo, validaremos a sua configuração no GCP, verificando se conseguimos autenticar-nos no seu KMS.
Isto ainda não adicionará o EKM ao seu projeto 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": "Configuração GCP EKM",
"workload_identity_project_number": "123456789012",
"workload_identity_pool_id": "openai-azure",
"workload_identity_provider_id": "openai-ekm-service-role",
"audience": <o ID da sua organização ou do projeto>,
"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 OpenAI associado à chave externa. Depois disto, o EKM é ativado no seu projeto.
curl -X POST \
-H "Content-type: application/json" \
-H "Authorization: Bearer $TOKEN" \
"https://api.openai.com/v1/organization/projects" \
-d '{
"name": "Algum projeto",
"external_key_id": "extkey_xxxx"
}'