Panoramica
Enterprise Key Management (EKM) consente di crittografare i contenuti dei clienti su OpenAI utilizzando chiavi gestite dal proprio sistema esterno di gestione delle chiavi (KMS), disponibile sia per ChatGPT Enterprise sia per l'API.
OpenAI supporta la crittografia Bring Your Own Key (BYOK) con account esterni in AWS KMS, Google Cloud (GCP) e Azure Key Vault.
Al momento, l'implementazione di EKM è limitata alle aree di lavoro Enterprise ed Edu con un referente OpenAI dedicato.
Come funziona la crittografia EKM di OpenAI
Flusso principale
Generiamo una chiave di crittografia dei dati (DEK) per il tuo provider cloud.
Il tuo KMS nel cloud gestisce una chiave di crittografia della chiave (KEK) principale, che può essere conservata nel tuo cloud oppure all’esterno. L'implementazione spetta a te.
Richiediamo la crittografia della DEK dal tuo cloud per ottenere una DEK crittografata (eDEK). Se la tua KEK è archiviata esternamente, il tuo cloud effettua semplicemente un passaggio aggiuntivo verso il tuo archivio esterno, in una fase che risulta opaca per OpenAI.
Crittografia
Durante la crittografia, i tuoi dati vengono crittografati con la DEK, e la eDEK viene archiviata come metadati del file.

Decrittografia
Durante la decrittografia, richiediamo che il tuo KMS cloud decrittografi l'eDEK nella DEK, e utilizziamo la DEK per decrittare i dati.

Termini chiave
Chiave di crittografia dei dati (DEK) - la chiave che crittografa i tuoi dati.
Chiave di crittografia dei dati crittografata (eDEK) - la DEK crittografata, generata dal tuo KMS
Chiave di crittografia della chiave (KEK) - la chiave principale che gestisci e che crittografa la DEK -> eDEK e decrittografa eDEK -> DEK. Questa chiave rimane sempre al di fuori dei sistemi di OpenAI.
Requisiti di alto livello per l'implementazione
Nel tuo provider cloud
Crea una nuova chiave nel tuo cloud KMS (Azure, AWS o GCP)
Crea una policy personalizzata e limitata con autorizzazioni di crittografia/decrittografia nel KMS
Crea una policy di attendibilità (AWS), un'identità del carico di lavoro (GCP) o un principal del servizio (per Azure) per OpenAI
Assegna a OpenAI un ruolo con la policy limitata per accedere al tuo KMS
Sulle piattaforme OpenAI
ChatGPT Enterprise
Crea un'area di lavoro sandbox di ChatGPT a scopo di test.
API
Nel tuo dashboard OpenAI, crea un nuovo progetto dove sarà applicata la crittografia.
Funzioni specifiche del provider
Per AWS, OpenAI:
Chiama AssumeRole con un ExternalID
Per GCP, OpenAI:
Chiama il tuo endpoint STS da un account OpenAI GCP
Usa il token di accesso GCP per eseguire la crittografia o decrittografia sul tuo KMS.
Per Azure, OpenAI:
Richiede un token di accesso per il vault del tuo tenant di Azure
Usa quel token di accesso per eseguire la crittografia o decrittografia nel tuo Key Vault.
Informazioni di cui hai bisogno da OpenAI
Autenticazione
Dovrai riconoscere i token di identità federata di OpenAI per AWS e GCP. Per Azure, dovrai riconoscere l'ID applicazione di OpenAI per la registrazione dell'app.
Riepilogo dei parametri di autenticazione
| Principal AWS di OpenAI | arn:aws:iam::790389265272:role/EnterpriseKeyManagement |
| ID dell'account di servizio GCP di OpenAI | 105900137572174660365 |
| ID applicazione OpenAI Azure | 20a14814-5ab7-4612-a671-1382b412bf93 |
Informazioni richieste durante l'implementazione in base al provider cloud
Per AWS, devi configurare una policy di attendibilità che riconosca:
Principal di OpenAI (numero di account e ruolo)
Un "ExternalID" che rappresenta l'ID del progetto OpenAI
Per GCP devi configurare un'identità del carico di lavoro che riconosca:
ID dell'account di servizio di OpenAI
Un pubblico che rappresenta l'ID del tuo progetto OpenAI
Per Azure devi creare un principal del servizio nel tuo tenant Azure per la registrazione dell'app di OpenAI
Creane uno per l'ID client dell'applicazione di OpenAI: 20a14814-5ab7-4612-a671-1382b412bf9
Puoi farlo eseguendo una richiesta POST all'endpoint https://graph.microsoft.com/v1.0/servicePrincipals.
Autorizzazione
Dovrai creare una policy che consenta all'identità di OpenAI di ottenere un accesso limitato al tuo KMS.
| AWS | GCP | Azure |
| kms:Decryptkms:Encrypt | cloudkms.cryptoKeyVersions.useToDecryptcloudkms.cryptoKeyVersions.useToEncrypt | Microsoft.KeyVault/vaults/keys/encrypt/actionMicrosoft.KeyVault/vaults/keys/decrypt/action |
Altro
In Azure, per Tipo di chiave (algoritmo di crittografia della chiave) seleziona RSA, non EC.
Informazioni che OpenAI richiede da te
Segui le istruzioni in questo documento per registrare il tuo KMS con OpenAI. Ecco un riepilogo dei parametri che dovrai fornire.
Autenticazione
AWS
ARN ruolo IAM: ruolo per OpenAI da assumere (esempio: arn:aws:iam::123456789:role/role-name)
ExternalID: il tuo ID organizzazione OpenAI
GCP
Numero del progetto di identità del carico di lavoro (esempio: 123456789)
ID del pool di identità del carico di lavoro
ID del provider di identità del carico di lavoro
Pubblico consentito: il tuo ID organizzazione OpenAI
Azure
ID tenant
| AWS | GCP | Azure | |
| Relativo all'autenticazione | ID tenant | ||
| Relativo a KMS | ARN KMS: (ad esempio: arn:aws:kms:REGION:ACCOUNT_NUMBER:key:KEY_UUID) | ID progetto KMS (ad esempio: adjective-noun-12345)Nome del keyring KMSNome della chiave KMSPosizione della chiave KMS (ad esempio: us-east1) | URI del vault(ad esempio: https://your-vault-name.vault.azure.net/)Nome della chiave |
Dopo aver registrato il tuo KMS con OpenAI, continua a seguire le istruzioni nella documentazione per attivare la configurazione EKM su un progetto API. Crea un progetto API OpenAI nuovo a scopo di test.
Guide all'implementazione specifiche del provider
Per una guida passo dopo passo, consulta i link corrispondenti qui sotto. Tieni presente che questi si concentrano sui requisiti di integrazione con OpenAI e non sono intesi come una guida completa per il tuo intero ambiente
Funzionalità non supportate se EKM è abilitato
Nella release iniziale, le seguenti funzionalità non sono disponibili se EKM è abilitato:
App con sincronizzazione
Funzionalità non disponibili al pubblico (ovvero, tutte quelle ancora in versione beta/alpha)
