Omówienie
Enterprise Key Management (EKM) umożliwia OpenAI szyfrowanie danych przy użyciu klucza głównego, który kontrolujesz. Ten dokument pokazuje, jak skonfigurować konto GCP, aby przyznać OpenAI ograniczone uprawnienia do Twojego KMS.

Kroki
1. Utwórz tożsamość federacyjną dla OpenAI
OpenAI będzie wystawiać token tożsamości z należącego do OpenAI konta GCP, który będzie wyglądać mniej więcej tak.
Pola azp i sub to identyfikator konta usługi OpenAI w GCP
Pole aud to identyfikator organizacji OpenAI. Możesz też wybrać inne grono odbiorców, na przykład identyfikator projektu OpenAI — zobacz poniższe instrukcje
{
"aud": "org-xxxx",
"azp": "105900137572174660365",
"exp": 1747876928,
"iat": 1747873328,
"iss": "https://accounts.google.com",
"sub": "105900137572174660365"
}Ten krok rozpoznaje oświadczenia zawarte w tym tokenie tożsamości i umożliwia GCP STS wystawienie tokena dostępu po dostarczeniu tego tokena tożsamości.
Przejdź do IAM & Admin -> Workload Identity Federation i kliknij Create Pool

W kroku Create an identity pool wpisz dowolną wartość w polu pool name.
Zapamiętaj to na później — będzie trzeba zarejestrować to w OpenAI
W kroku Add a provider to pool:
W sekcji Select a provider wybierz OpenID Connect (OIDC)
Wpisz dowolną wartość w polu provider name.
W sekcji Issuer (URL) wpisz https://accounts.google.com
W sekcji Audiences
Wybierz Allowed audiences
Wpisz odbiorcę, którego OpenAI ma wskazywać, gdy przekażemy Ci token.
Dla ChatGPT lub API: możesz podać identyfikator organizacji OpenAI API (org-xxx)
Dla API: możesz podać konkretny identyfikator projektu API, aby uzyskać większą szczegółowość.

W sekcji Attribute mapping
dla google.subject wpisz assertion.sub

W sekcji Attribute conditions
wpisz
assertion.sub == "105900137572174660365"
Teraz na stronie https://console.cloud.google.com/iam-admin/workload-identity-pools powinny być widoczne Twoje workload identity pool i workload identity provider
Workload identity pool id

Workload identity provider ID

2. Upewnij się, że KMS jest włączony
Przejdź do https://console.developers.google.com/apis/api/cloudkms.googleapis.com/overview, aby włączyć KMS. Nie musisz tworzyć KMS w tym samym projekcie GCP, w którym rozpoznano tożsamość federacyjną OpenAI; jeśli jednak projekty są różne, usługa KMS musi być przynajmniej włączona w obu projektach.
3. Utwórz nowy klucz KMS
Przejdź do Security -> Data Protection > Key Management
Na karcie Overview kliknij Create key ring
Wybierz dowolną nazwę dla key ring
W sekcji Purpose and algorithm wybierz Symmetric encrypt/decrypt

Po utworzeniu key ring powinien on być widoczny na karcie Key Rings. Kliknij key ring.
W szczegółach key ring kliknij Create Key
Wybierz dowolną nazwę dla klucza
4. Utwórz ograniczoną rolę do operacji szyfrowania/deszyfrowania w KMS
Przejdź do IAM & Admin -> Roles -> Create role
Wpisz dowolną wartość dla tytułu i identyfikatora roli
Kliknij Add Permissions, a następnie dodaj następujące uprawnienia
cloudkms.cryptoKeyVersions.useToDecrypt
cloudkms.cryptoKeyVersions.useToEncrypt
5. Przypisz tożsamość federacyjną OpenAI do ograniczonej roli KMS na potrzeby operacji szyfrowania/deszyfrowania
Przejdź do Security -> Data Protection > Key Management
Kliknij nazwę swojego key ring, a następnie nazwę swojego key name, aby przejść do strony szczegółów klucza.
Jeśli tego nie masz, wróć do sekcji Utwórz KMS
Kliknij kartę Permissions, a następnie przycisk Grant Access

Przypisz tożsamość federacyjną OpenAI do niestandardowej roli utworzonej wcześniej
W sekcji Add principals wpisz principal://iam.googleapis.com/projects/<YOUR_GCP_PROJECT_NUMBER>/locations/global/workloadIdentityPools/<YOUR_GCP_WORKLOAD_IDENTITY_POOL>/subject/105900137572174660365
YOUR_GCP_PROJECT_NUMBER to projekt, w którym rozpoznano tożsamość federacyjną OpenAI przez utworzenie YOUR_GCP_WORKLOAD_IDENTITY_POOL. Może to być ten sam projekt, w którym znajduje się Twój KMS, ale nie jest to wymagane.
Jeśli projekty są różne, upewnij się, że KMS jest przynajmniej włączony w drugim projekcie, przechodząc do https://console.developers.google.com/apis/api/cloudkms.googleapis.com/overview
W sekcji Assign roles wybierz niestandardową rolę utworzoną w poprzednim kroku dla ograniczonych uprawnień EKM
6. Zastosuj wszelkie dodatkowe ograniczenia zgodnie z własnymi praktykami bezpieczeństwa
Powyżej podano minimalny wymagany zakres informacji, którego OpenAI potrzebuje do skonfigurowania EKM. Możesz zastosować dodatkowe zasady dotyczące kluczy lub ograniczenia zgodne z własnymi wewnętrznymi praktykami bezpieczeństwa, o ile OpenAI będzie w stanie wywoływać operacje szyfrowania i deszyfrowania w Twoim KMS. Gdy wywołasz opisany poniżej punkt końcowy rejestracji klucza w OpenAI, zweryfikujemy Twoją konfigurację.
Po wykonaniu powyższych kroków
ChatGPT Enterprise
Skontaktuj się ze swoją osobą kontaktową w OpenAI i udostępnij następujące informacje:
"workload_identity_project_number": "123456789012",
12-cyfrowy numer projektu GCP, w którym zarejestrowano workload identity OpenAI
"workload_identity_pool_id": "openai-azure",
Pula zawierająca dostawcę Workload Identity zarejestrowanego dla OpenAI
"workload_identity_provider_id": "openai-ekm-service-role",
Dostawca Workload Identity zarejestrowany dla OpenAI
"kms_project_id": "adjective-noun-12345",
Nazwa projektu GCP, w którym znajduje się Twój KMS
"kms_key_name": "openai-kms-key",
Nazwa klucza głównego Key Management System
"kms_key_ring_name": "openai-kms-key-ring",
Key ring w Key Management System zawierający zarządzany przez Ciebie klucz główny
"kms_key_location": "us-east1"
Region, w którym znajduje się klucz główny Key Management System
Włączymy EKM dla Twojej organizacji/przestrzeni roboczej ChatGPT.
API
Zarejestruj swój klucz zewnętrzny w OpenAI
Postępuj zgodnie z instrukcjami w tej dokumentacji API: External Keys in the Management API
Najpierw zarejestruj swój klucz zewnętrzny na poziomie organizacji OpenAI, co spowoduje wygenerowanie identyfikatora klucza zewnętrznego.
W tym kroku zweryfikujemy Twoją konfigurację w GCP, sprawdzając, czy możemy uwierzytelnić się w Twoim KMS.
To jeszcze nie doda EKM do Twojego projektu 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": <identyfikator Twojej organizacji lub projektu>,
"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"
}'Następnie utwórz projekt OpenAI powiązany z kluczem zewnętrznym. Po tym kroku EKM zostanie aktywowany w Twoim projekcie.
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"
}'