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 da AWS para conceder à OpenAI acesso limitado ao AWS KMS.

Etapas
1. Crie uma nova chave do KMS
Acesse KMS → Chaves gerenciadas pelo cliente e clique em Criar chave
Selecione um algoritmo de criptografia simétrica
Após criar a chave, anote o ARN. Os formatos compatíveis incluem arn:aws:kms:<region>:<account_number>:key/<uuid>, ...:key/mrk-* ou ...:alias/<alias_name>

2. Crie uma política personalizada com acesso limitado à chave do KMS
Acesse IAM → Policies e clique em Criar política
Na etapa Especificar permissões, selecione JSON e insira a política para conceder ações de acesso ao KMS. Substitua YOUR_KMS_ARN pelo ARN da chave criada.

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowEncryptDecrypt",
"Effect": "Allow",
"Action": [
"kms:Decrypt",
"kms:Encrypt"
],
"Resource": <YOUR_KMS_ARN>
}
]
}
3. Crie uma função do IAM para a OpenAI assumir e atribuir a ela a política com acesso limitado ao KMS
A OpenAI fará chamadas de AssumeRole a partir de uma conta AWS própria. Esta etapa permite que a entidade principal da OpenAI assuma a função com permissões limitadas para acessar o KMS.
Acesse IAM → Funções e clique em Criar função
Na etapa Selecionar entidade confiável, escolha Política de confiança personalizada

Insira a política de confiança para permitir acesso à entidade principal da OpenAI.
Principal da AWS da OpenAI: arn:aws:iam::790389265272:role/EnterpriseKeyManagement
Defina o ExternalID que a OpenAI deve fornecer durante o processo de AssumeRole.
Para ChatGPT ou API, use o ID da organização (org-xxx) associado ao workspace: https://platform.api.openai.org/settings/organization/general
Para a API, também é possível usar um ID de projeto específico para maior granularidade
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::790389265272:role/EnterpriseKeyManagement"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": [
<YOUR_OPENAI_ORGANIZATION_ID>,
]
}
}
}
]
}
Na etapa Adicionar permissões, selecione a política do IAM criada anteriormente. Clique na caixa de seleção ao lado do nome da política e, em seguida, clique em Avançar.

Na seção Nomear, revisar e criar, defina um nome para a função.
4. 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:
"role_arn": "arn:aws:iam::<YOUR_AWS_ACCOUNT_NUMBER>:role/<YOUR_ROLE>",
ARN da função que a OpenAI assumirá na sua nuvem
"kms_arn": "arn:aws:kms:<REGION>:<YOUR_AWS_ACCOUNT_NUMBER>:key/<UUID>"
ARN do sistema de gerenciamento de chaves referente à chave mestra sob sua administração
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.
Nessa etapa, a OpenAI valida se os dados fornecidos são válidos e se é 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": "aws",
"name": "AWS EKM Config",
"role_arn": "arn:aws:iam::<YOUR_AWS_ACCOUNT_NUMBER>:role/<YOUR_ROLE>",
"kms_arn": "arn:aws:kms:<REGION>:<YOUR_AWS_ACCOUNT_NUMBER>:key/<UUID>",
"external_id": <your org id or project id>
}'Em seguida, crie um projeto da OpenAI associado à chave externa. Após essa etapa, o EKM será ativado no projeto.
O corpo da resposta dessa chamada de API inclui o ID do projeto (proj_xxx)
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"
}'
