OpenAI

Instruções de integração da OpenAI com Azure EKM

Instruções passo a passo para provisionar o Azure e ativar o EKM

Atualizado: 2 days ago

Visão geral

O Enterprise Key Management (EKM) permite que a OpenAI criptografe dados usando uma chave mestra que você controla. Para que a OpenAI possa executar operações de criptografia/descriptografia em seu Key Vault, precisamos ter acesso concedido a nós. Este documento mostra como configurar sua conta do Azure para que a OpenAI possa assumir uma função com permissões do Key Vault.

Azure EKM flow where OpenAI EKM uses Microsoft Entra ID to access your Key Vault and master KEK

Etapas

1. Crie um service principal para a OpenAI na sua conta

  1. Obter um token de acesso

az account get-access-token --resource https://graph.microsoft.com
--tenant YOUR_TENANT_ID
  1. 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.

  1. Acesse Assinatura → Controle de acesso (IAM)

  2. Na lista suspensa + Adicionar , selecione Adicionar função personalizada.

  3. Acesse a aba JSON , clique em Editar e adicione o seguinte:

    1. Qualquer nome de função - lembre-se do nome selecionado

    2. As seguintes permissões em dataActions:

      1. Microsoft.KeyVault/vaults/keys/encrypt/action

      2. Microsoft.KeyVault/vaults/keys/decrypt/action

      3. Microsoft.KeyVault/vaults/keys/read

OpenAI / Azure EKM Integration Instructions Custom Role

3. Criar um cofre de chaves + chave

Se ainda não houver um, crie um novo Key Vault na mesma assinatura em que você acabou de criar sua função personalizada.

Nesse Key Vault, crie uma nova chave:

  1. Acesse Key Vault → Objetos → Chaves e selecione Gerar/Importar

  2. Em Opções, selecione Gerar.

Azure Key Vault Keys page with Generate/Import highlighted to add a key
  1. Selecione RSA como algoritmo de criptografia.

  2. É possível escolher qualquer tamanho de chave RSA

  3. Forneça um nome de chave no seguinte formato: <org-xxx>--<any_name> , onde org-xxx é o seu ID de organização OpenAI, que você pode encontrar em https://platform.openai.com/settings/organization/general

Azure Key Vault key generation form with RSA selected and key name org-abcdefg--test-keyvault-key

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:

  1. Acesse Key Vault → Controle de acesso (IAM)

  2. Clique em Adicionar -> Adicionar atribuição de função

Azure Key Vault Access control (IAM) page with Add menu open to Add role assignment

4. Crie uma atribuição de função para a entidade de serviço OpenAI + novo KMS personalizado + nova chave.

  1. Acesse Key Vault → Objetos → Chaves e selecione a linha da chave criada

  2. Acesse o Controle de acesso (IAM) da chave que você acabou de clicar (não do seu cofre de chaves).

  3. Na lista suspensa + Adicionar , selecione Adicionar atribuição de função

Azure Key Vault Access control (IAM) page with Add menu open to Add role assignment
  1. Na aba Função, selecione o nome da função personalizada criada anteriormente.

Azure role list filtered for openai- with the openai-azure-kms-role entry
  1. Na aba Membros:

    1. Clique em “+ Selecionar membros”

    2. Digite “ekm -” na barra de pesquisa e o principal de serviço da OpenAI que você criou na Etapa 1 deverá ser carregado.

Azure role assignment Members step with EKM - OpenAI Azure Application selected as a member

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>"

  • "vault_uri": "https://<YOUR_KEYVAULT_NAME>.vault.azure.net/"

  • "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 nesta referência da API: Chaves externas 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.

# Isso gera um ID de chave externa do formulário 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).

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"
}'

Este artigo foi útil?