Visão geral
O Enterprise Key Management (EKM) permite que a OpenAI criptografe dados usando uma chave mestra sob seu controle. Para que a OpenAI possa realizar operações de criptografia e descriptografia no seu Key Vault, é necessário conceder acesso. Este documento mostra como configurar sua conta do Azure para que a OpenAI possa assumir uma função com permissões no Key Vault.

Etapas
1. Crie um service principal para a OpenAI na sua conta
Obter um token de acesso
az account get-access-token --resource https://graph.microsoft.com
--tenant YOUR_TENANT_ID2. Crie o service principal. O appId na solicitação abaixo é o ID de cliente do aplicativo da OpenAI. Isso criará uma entidade com o nome de exibição “EKM - OpenAI Azure”. Lembre-se disso para as próximas etapas.
Instruções de integração da OpenAI com Azure EKM - criação do service principal
curl -X POST https://graph.microsoft.com/v1.0/servicePrincipals \
-H "Authorization: Bearer $TOKEN_FROM_ABOVE" \
-H "Content-Type: application/json" \
–d '{"appId": "20a14814-5ab7-4612-a671-1382b412bf93"}'2. Crie uma função personalizada para acesso limitado ao KMS
Acesse Assinatura → Controle de acesso (IAM)
No menu suspenso + Adicionar, selecione Adicionar função personalizada
Vá para a aba JSON, clique em Editar e adicione o seguinte
Qualquer nome de função - lembre-se do nome selecionado
As seguintes permissões em dataActions
Microsoft.KeyVault/vaults/keys/encrypt/action
Microsoft.KeyVault/vaults/keys/decrypt/action
Microsoft.KeyVault/vaults/keys/read

3. Crie um Key Vault e uma chave
Se ainda não houver um, crie um novo Key Vault na mesma assinatura em que a função personalizada foi criada
Nesse Key Vault, crie uma nova chave:
Acesse Key Vault → Objetos → Chaves e selecione Gerar/Importar
Em “Opções”, selecione Gerar

Selecione RSA como algoritmo de criptografia.
É possível escolher qualquer tamanho de chave RSA
Defina um nome de chave no seguinte formato: <org-xxx>--<any_name>, em que org-xxx é o ID da organização OpenAI, disponível em https://platform.openai.com/settings/organization/general

Caso não seja possível visualizar ou criar a chave, verifique se a função Administrador do Key Vault foi atribuída. Essa permissão é necessária mesmo quando há a função Proprietário. Para atribuir a função:
Acesse Key Vault → Controle de acesso (IAM)
Clique em Adicionar → Adicionar atribuição de função

4. Crie uma atribuição de função para o service principal da OpenAI, o KMS personalizado e a nova chave
Acesse Key Vault → Objetos → Chaves e selecione a linha da chave criada
Em seguida, acesse Controle de acesso (IAM) dessa chave específica (não do Key Vault).
No menu suspenso + Adicionar, selecione Adicionar atribuição de função

Na aba Função, selecione o nome da função personalizada criada anteriormente.

Na aba Membros:
Clique em “+ Selecionar membros”
Digite “ekm -” na barra de busca e a entidade de serviço da OpenAI criada na Etapa 1 deve aparecer para seleção

5. 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:
"tenant_id": "<YOUR_AZURE_TENANT_UUID>"
O UUID do seu locatário do Azure
"vault_uri": "https://<YOUR_KEYVAULT_NAME>.vault.azure.net/"
O URI do cofre do Azure que contém a chave mestra que você gerencia
"key_name": "<YOUR_KEY_NAME>"
O nome da chave mestra do Azure Key Vault que você gerencia
O nome da chave deve seguir o formato <org-xxx>--<any_name>, em que org-xxx é o ID da sua organização OpenAI, disponível em https://platform.openai.com/settings/organization/general
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 sua chave externa no nível da organização da OpenAI. Isso gerará um ID de chave externa no formato extkey_xxx
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.
# This generates an external key ID of the form extkey_xxx
curl -X POST \
-H "Content-type: application/json" \
-H "Authorization: Bearer $TOKEN" \
"https://api.openai.com/v1/organization/external_keys" \
-d '{
"type": "azure",
"name": "<ANY_FRIENDLY_NAME>",
"tenant_id": "<YOUR_AZURE_TENANT_UUID>",
"vault_uri": "https://<YOUR_KEYVAULT_NAME>.vault.azure.net/",
"key_name": "<YOUR_KEY_NAME>"
}'Em seguida, crie um projeto da OpenAI associado à chave externa. Após essa etapa, o EKM será ativado no projeto.
O corpo da resposta desta chamada de API fornecerá o ID do projeto (proj_xxx)
Instruções de integração da OpenAI com Azure EKM - Criação de 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"
}'