Prezentare generală
Enterprise Key Management (EKM) permite OpenAI să cripteze date folosind o cheie principală pe care o controlați. Acest document arată cum să configurați contul dvs. GCP pentru a oferi OpenAI permisiuni limitate pe KMS-ul dvs.

Pași
1. Creați o identitate federată pentru OpenAI
OpenAI va emite un token de identitate dintr-un cont GCP deținut de OpenAI care arată aproximativ așa.
Valorile azp și sub sunt ID-ul contului de serviciu OpenAI în GCP
Valoarea aud este ID-ul organizației dvs. OpenAI. Puteți alege și o altă audiență, cum ar fi ID-ul proiectului dvs. OpenAI - vedeți instrucțiunile de mai jos
{
"aud": "org-xxxx",
"azp": "105900137572174660365",
"exp": 1747876928,
"iat": 1747873328,
"iss": "https://accounts.google.com",
"sub": "105900137572174660365"
}Acest pas recunoaște revendicările făcute de acel token de identitate și permite GCP STS să emită un token de acces când este furnizat acel token de identitate.
Accesați IAM & Admin -> Workload Identity Federation și faceți clic pe Create Pool

La pasul Create an identity pool, introduceți orice pentru pool name.
Rețineți acest lucru pentru mai târziu - va trebui să îl înregistrați la OpenAI
La pasul Add a provider to pool:
În Select a provider, selectați OpenID Connect (OIDC)
Introduceți orice pentru provider name.
În secțiunea Issuer (URL), introduceți https://accounts.google.com
În secțiunea Audiences
Selectați Allowed audiences
Introduceți audiența pe care OpenAI ar trebui să o indice când vă transmitem un token.
Pentru ChatGPT sau API: puteți introduce ID-ul organizației OpenAI API (org-xxx)
Pentru API: puteți introduce un ID de proiect API specific pentru mai multă granularitate.

În secțiunea Attribute mapping
pentru google.subject introduceți assertion.sub

În secțiunea Attribute conditions
introduceți
assertion.sub == "105900137572174660365"
Acum ar trebui să vedeți workload identity pool și workload identity provider listate în pagina https://console.cloud.google.com/iam-admin/workload-identity-pools
Workload identity pool id

Workload identity provider ID

2. Asigurați-vă că KMS este activat
Accesați https://console.developers.google.com/apis/api/cloudkms.googleapis.com/overview pentru a activa KMS. Nu este necesar să creați KMS-ul dvs. în același proiect GCP în care ați recunoscut identitatea federată a OpenAI; totuși, dacă proiectele diferă, produsul KMS trebuie cel puțin să fie activat în ambele proiecte.
3. Creați o nouă cheie KMS
Accesați Security -> Data Protection > Key Management
Sub fila Overview faceți clic pe Create key ring
Alegeți orice nume pentru key ring
Pentru Purpose and algorithm, selectați Symmetric encrypt/decrypt

După ce ați creat un key ring, acesta ar trebui să fie listat în fila Key Rings. Faceți clic pe key ring.
În detaliile key ring, faceți clic pe Create Key
Alegeți orice nume pentru cheia dvs.
4. Creați un rol limitat pentru operațiunile de criptare/decriptare pe KMS
Accesați IAM & Admin -> Roles -> Create role
Introduceți orice pentru titlul și ID-ul rolului
Faceți clic pe Add Permissions, apoi adăugați următoarele
cloudkms.cryptoKeyVersions.useToDecrypt
cloudkms.cryptoKeyVersions.useToEncrypt
5. Atribuiți identitatea federată a OpenAI rolului KMS limitat pentru operațiunile de criptare/decriptare
Accesați Security -> Data Protection > Key Management
Faceți clic pe numele key ring, apoi pe key name pentru a ajunge la pagina cu detaliile cheii.
Dacă nu aveți aceasta, reveniți la secțiunea Create a KMS
Faceți clic pe fila Permissions, apoi pe butonul Grant Access

Atribuiți identitatea federată OpenAI rolului personalizat creat anterior
Pentru secțiunea Add principals, introduceți principal://iam.googleapis.com/projects/<YOUR_GCP_PROJECT_NUMBER>/locations/global/workloadIdentityPools/<YOUR_GCP_WORKLOAD_IDENTITY_POOL>/subject/105900137572174660365
YOUR_GCP_PROJECT_NUMBER aici este proiectul în care ați recunoscut identitatea federată a OpenAI prin crearea unui YOUR_GCP_WORKLOAD_IDENTITY_POOL. Poate fi, dar nu este obligatoriu să fie, în același proiect în care se află KMS-ul dvs.
Dacă proiectele diferă, asigurați-vă că KMS este cel puțin activat în celălalt proiect accesând https://console.developers.google.com/apis/api/cloudkms.googleapis.com/overview
În secțiunea Assign roles, selectați rolul personalizat pe care l-ați creat în pasul anterior pentru permisiuni EKM limitate
6. Aplicați orice restricții suplimentare în conformitate cu propriile dvs. practici de securitate
Mai sus sunt informațiile minime necesare de care OpenAI are nevoie pentru a configura EKM. Puteți aplica politici sau restricții suplimentare pentru chei în conformitate cu propriile practici interne de securitate, atât timp cât OpenAI poate apela operațiunile de criptare și decriptare pe KMS-ul dvs. Când apelați punctul final de înregistrare a cheii la OpenAI descris mai jos, vom valida configurarea dvs.
După finalizarea pașilor de mai sus
ChatGPT Enterprise
Vă rugăm să contactați persoana dvs. de contact de la OpenAI și să transmiteți următoarele:
"workload_identity_project_number": "123456789012",
Numărul de proiect GCP din 12 cifre unde ați înregistrat identitatea de workload a OpenAI
"workload_identity_pool_id": "openai-azure",
Pool-ul care conține furnizorul Workload Identity pe care l-ați înregistrat pentru OpenAI
"workload_identity_provider_id": "openai-ekm-service-role",
Furnizorul Workload Identity pe care l-ați înregistrat pentru OpenAI
"kms_project_id": "adjective-noun-12345",
Numele proiectului GCP unde se află KMS-ul dvs.
"kms_key_name": "openai-kms-key",
Numele cheii principale din Key Management System
"kms_key_ring_name": "openai-kms-key-ring",
Key ring-ul din Key Management System care conține cheia principală pe care o gestionați
"kms_key_location": "us-east1"
Regiunea în care se află cheia principală din Key Management System
Vom activa EKM pentru organizația/spațiul de lucru ChatGPT.
API
Înregistrați cheia dvs. externă la OpenAI
Urmați instrucțiunile din această referință API External Keys in the Management API
Mai întâi, înregistrați cheia externă la nivelul organizației OpenAI, ceea ce va genera un ID de cheie externă.
În acest pas, vom valida configurarea dvs. din GCP verificând că ne putem autentifica la KMS-ul dvs.
Acest lucru nu va adăuga încă EKM la proiectul dvs. OpenAI.
curl -X POST \
-H "Content-type: application/json" \
-H "Authorization: Bearer $TOKEN" \
"https://api.openai.com/v1/organization/external_keys" \
-d '{
"type": "gcp",
"name": "GCP EKM Config",
"workload_identity_project_number": "123456789012",
"workload_identity_pool_id": "openai-azure",
"workload_identity_provider_id": "openai-ekm-service-role",
"audience": <ID-ul organizației sau ID-ul proiectului dvs.>,
"kms_project_id": "adjective-noun-12345",
"kms_key_name": "openai-kms-key",
"kms_key_ring_name": "openai-kms-key-ring",
"kms_key_location": "us-east1"
}'Apoi, creați un proiect OpenAI asociat cu cheia externă. După aceasta, EKM este activat pentru proiectul dvs.
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"
}'