Descrição geral
Enterprise Key Management (EKM) permite-lhe encriptar o conteúdo dos seus clientes na OpenAI com chaves geridas pelo seu próprio sistema externo de gestão de chaves (KMS), disponível tanto para o ChatGPT Enterprise como para a API.
A OpenAI suporta encriptação Bring Your Own Key (BYOK) com contas externas no AWS KMS, Google Cloud (GCP) e no Azure Key Vault.
Atualmente, a implementação de EKM está limitada a espaços de trabalho Enterprise e Edu com um representante de conta OpenAI designado.
Como funciona a encriptação EKM da OpenAI
Fluxo de alto nível
Geramos uma Data Encryption Key (DEK) para o seu fornecedor de cloud.
O KMS da sua cloud gere uma Key Encryption Key (KEK) mestra, armazenada na sua cloud ou externamente. A implementação fica ao seu critério.
Pedimos à sua cloud a encriptação da DEK, para obter uma DEK encriptada (eDEK). Se a sua KEK estiver armazenada externamente, a sua cloud apenas faz um salto adicional para o seu armazenamento externo, num passo que é opaco para a OpenAI.
Encriptação
Ao encriptar, os seus dados são encriptados com a DEK e o eDEK é armazenado como metadados no ficheiro.

Desencriptação
Ao desencriptar, pedimos que o eDEK seja desencriptado pelo KMS da sua cloud para DEK, e desencriptamos os dados com a DEK.

Termos-chave
Data Encryption Key (DEK) - a chave que encripta os seus dados.
Encrypted Data Encryption Key (eDEK) - a DEK encriptada, gerada pelo seu KMS
Key Encryption Key (KEK) - a chave-mestra que gere e que encripta DEK -> eDEK e desencripta eDEK -> DEK. Esta chave permanece sempre fora dos sistemas da OpenAI.
Requisitos de alto nível para a implementação
No seu fornecedor de cloud
Crie uma nova chave no KMS da sua cloud (Azure, AWS ou GCP)
Crie uma política personalizada e limitada com permissões Encrypt/Decrypt no KMS
Crie uma política de confiança (AWS), uma workload identity (GCP) ou um service principal (para Azure) para a OpenAI
Atribua à OpenAI uma função com a política limitada para aceder ao seu KMS
Nas plataformas OpenAI
ChatGPT Enterprise
Crie um espaço de trabalho sandbox do ChatGPT para fins de teste.
API
No seu dashboard da OpenAI, crie um novo projeto onde a encriptação será aplicada.
Funções específicas do fornecedor
Para AWS, a OpenAI irá:
chamar AssumeRole com um ExternalID
Para GCP, a OpenAI irá:
chamar o seu endpoint STS a partir de uma conta GCP da OpenAI
usar o token de acesso GCP para chamar encrypt/decrypt no seu KMS.
Para Azure, a OpenAI irá:
pedir um token de acesso para o cofre da sua tenancy do Azure
usar esse token de acesso para chamar encrypt/decrypt no seu Key Vault.
Informações de que precisa da OpenAI
Autenticação
Terá de reconhecer os tokens de identidade federada da OpenAI para AWS e GCP. Para Azure, terá de reconhecer o ID da aplicação da OpenAI para o respetivo registo de aplicação.
Resumo dos parâmetros de autenticação
| principal AWS da OpenAI | arn:aws:iam::790389265272:role/EnterpriseKeyManagement |
| ID da conta de serviço GCP da OpenAI | 105900137572174660365 |
| ID da aplicação Azure da OpenAI | 20a14814-5ab7-4612-a671-1382b412bf93 |
Informações necessárias durante a implementação com base no seu fornecedor de serviços cloud
Para a AWS, tem de configurar uma política de confiança que reconheça:
O principal da OpenAI (número da conta + função)
Um ExternalID que é o ID do seu projeto OpenAI
Para o GCP, tem de configurar uma Workload Identity que reconheça:
O ID da conta de serviço da OpenAI
Um público-alvo que é o ID do seu projeto OpenAI
Para o Azure, tem de criar um principal de serviço no seu tenant do Azure para o registo de aplicação da OpenAI
Crie um para o ID de cliente da aplicação da OpenAI: 20a14814-5ab7-4612-a671-1382b412bf9
Pode fazê-lo enviando um pedido POST para o endpoint https://graph.microsoft.com/v1.0/servicePrincipals.
Autorização
Terá de criar uma política que permita à identidade da OpenAI obter acesso limitado ao seu KMS.
| AWS | GCP | Azure |
| kms:Decryptkms:Encrypt | cloudkms.cryptoKeyVersions.useToDecryptcloudkms.cryptoKeyVersions.useToEncrypt | Microsoft.KeyVault/vaults/keys/encrypt/actionMicrosoft.KeyVault/vaults/keys/decrypt/action |
Outros
No Azure, em Tipo de chave (algoritmo de encriptação da chave), selecione RSA, não EC.
Informações de que a OpenAI precisa da sua parte
Siga as instruções neste documento para registar o seu KMS junto da OpenAI. Segue-se um resumo dos parâmetros que terá de fornecer.
Relacionado com autenticação
AWS
ARN da função IAM - função a assumir pela OpenAI (exemplo: arn:aws:iam::123456789:role/role-name)
ExternalID - o ID da sua organização OpenAI
GCP
Número do projeto Workload Identity (exemplo: 123456789)
ID do pool Workload Identity
ID do fornecedor Workload Identity
Público-alvo permitido: o ID da sua organização OpenAI
Azure
ID do tenant
| AWS | GCP | Azure | |
| Relacionado com autenticação | ID do tenant | ||
| Relacionado com KMS | ARN do KMS - (exemplo: arn:aws:kms:REGION:ACCOUNT_NUMBER:key:KEY_UUID) | ID do projeto KMS (exemplo: adjective-noun-12345)Nome do key ring KMSNome da chave KMSLocalização da chave KMS (exemplo: us-east1) | URI do Vault (exemplo: https://your-vault-name.vault.azure.net/)Nome da chave |
Depois de registar o seu KMS junto da OpenAI, continue a seguir as instruções no documento para ativar a configuração EKM num projeto de API. Crie um novo projeto da API da OpenAI para fins de teste.
Guias de implementação específicos por fornecedor
Para orientação passo a passo, consulte as ligações correspondentes abaixo. Tenha em atenção que estes guias se centram nos requisitos de integração com a OpenAI e não se destinam a servir de guia completo para todo o seu ambiente
Funcionalidades não suportadas se o EKM estiver ativado
Nesta versão inicial, as seguintes funcionalidades não estão disponíveis se o EKM estiver ativado:
Aplicações com sincronização
Funcionalidades que não estão em Disponibilidade Geral (ou seja, tudo o que ainda esteja em beta/alpha)
