Přehled
Enterprise Key Management (EKM) umožňuje OpenAI šifrovat data pomocí hlavního klíče, který spravujete vy. Tento dokument ukazuje, jak nastavit účet GCP tak, aby měl OpenAI omezená oprávnění k vašemu KMS.

Kroky
1. Vytvořte pro OpenAI federovanou identitu
OpenAI bude vydávat token identity z účtu GCP vlastněného OpenAI, který bude vypadat přibližně takto.
azp a sub jsou ID servisního účtu OpenAI v GCP
aud je ID vaší organizace OpenAI. Můžete také zvolit jiné publikum, například ID projektu OpenAI – viz pokyny níže
{
"aud": "org-xxxx",
"azp": "105900137572174660365",
"exp": 1747876928,
"iat": 1747873328,
"iss": "https://accounts.google.com",
"sub": "105900137572174660365"
}V tomto kroku se rozpoznají claimy uvedené v daném tokenu identity a vaše GCP STS pak bude moct vydat přístupový token, když bude tento token identity poskytnut.
Přejděte do IAM & Admin -> Workload Identity Federation a klikněte na Create Pool

V kroku Create an identity pool zadejte libovolný název poolu.
Toto si zapamatujte na později – budete to muset zaregistrovat u OpenAI
V kroku Add a provider to pool:
V části Select a provider vyberte OpenID Connect (OIDC)
Zadejte libovolný název poskytovatele.
V části Issuer (URL) zadejte https://accounts.google.com
V části Audiences
Vyberte Allowed audiences
Zadejte publikum, které má OpenAI uvádět, když vám předáme token.
Pro ChatGPT nebo API: můžete zadat ID organizace OpenAI API (org-xxx)
Pro API: pro větší granularitu můžete zadat konkrétní ID projektu API.

V části Attribute mapping
pro google.subject zadejte assertion.sub

V části Attribute conditions
zadejte
assertion.sub == "105900137572174660365"
Nyní byste měli na stránce https://console.cloud.google.com/iam-admin/workload-identity-pools vidět svůj workload identity pool a workload identity provider
Workload identity pool id

Workload identity provider ID

2. Ujistěte se, že je KMS povoleno
Přejděte na https://console.developers.google.com/apis/api/cloudkms.googleapis.com/overview a povolte KMS. Nemusíte vytvářet KMS ve stejném projektu GCP, ve kterém jste rozpoznali federovanou identitu OpenAI; pokud se však projekty liší, musí být produkt KMS alespoň povolen v obou projektech.
3. Vytvořte nový klíč KMS
Přejděte do Security -> Data Protection > Key Management
Na kartě Overview klikněte na Create key ring
Zvolte libovolný název pro key ring
Pro Purpose and algorithm vyberte Symmetric encrypt/decrypt

Jakmile key ring vytvoříte, měl by být uveden na kartě Key Rings. Klikněte na key ring.
V detailech key ringu klikněte na Create Key
Zvolte libovolný název klíče
4. Vytvořte omezenou roli pro operace šifrování/dešifrování v KMS
Přejděte do IAM & Admin -> Roles -> Create role
Zadejte libovolný název a ID role
Klikněte na Add Permissions a pak přidejte následující
cloudkms.cryptoKeyVersions.useToDecrypt
cloudkms.cryptoKeyVersions.useToEncrypt
5. Přiřaďte federovanou identitu OpenAI k omezené roli KMS pro operace šifrování/dešifrování
Přejděte do Security -> Data Protection > Key Management
Klikněte na název svého key ringu a poté klikněte na název svého klíče, čímž se dostanete na stránku s podrobnostmi o klíči.
Pokud to nemáte, vraťte se do části Create a KMS
Klikněte na kartu Permissions a pak na tlačítko Grant Access

Přiřaďte federovanou identitu OpenAI k vlastní roli, kterou jste vytvořili dříve
Do části Add principals zadejte principal://iam.googleapis.com/projects/<YOUR_GCP_PROJECT_NUMBER>/locations/global/workloadIdentityPools/<YOUR_GCP_WORKLOAD_IDENTITY_POOL>/subject/105900137572174660365
YOUR_GCP_PROJECT_NUMBER je zde projekt, ve kterém jste rozpoznali federovanou identitu OpenAI vytvořením YOUR_GCP_WORKLOAD_IDENTITY_POOL. Může to být, ale nemusí, stejný projekt, ve kterém se nachází vaše KMS.
Pokud se projekty liší, ujistěte se, že je KMS alespoň povoleno i v druhém projektu, a to přechodem na https://console.developers.google.com/apis/api/cloudkms.googleapis.com/overview
V části Assign roles vyberte vlastní roli, kterou jste vytvořili v předchozím kroku pro omezená oprávnění EKM
6. Uplatněte jakákoli další omezení v souladu se svými bezpečnostními postupy
Výše jsou uvedeny minimální požadované informace, které OpenAI potřebuje k nastavení EKM. Můžete použít další zásady pro klíče nebo omezení v souladu se svými interními bezpečnostními postupy, pokud OpenAI bude moct volat operace šifrování a dešifrování na vašem KMS. Když zavoláte koncový bod pro registraci klíče u OpenAI, který je popsán níže, ověříme vaše nastavení.
Po dokončení výše uvedených kroků
ChatGPT Enterprise
Obraťte se prosím na svůj kontakt v OpenAI a sdílejte následující:
"workload_identity_project_number": "123456789012",
12místné číslo projektu GCP, ve kterém jste zaregistrovali workload identity OpenAI
"workload_identity_pool_id": "openai-azure",
Pool obsahující poskytovatele Workload Identity, kterého jste zaregistrovali pro OpenAI
"workload_identity_provider_id": "openai-ekm-service-role",
Poskytovatel Workload Identity, kterého jste zaregistrovali pro OpenAI
"kms_project_id": "adjective-noun-12345",
Název projektu GCP, ve kterém se nachází vaše KMS
"kms_key_name": "openai-kms-key",
Název hlavního klíče systému Key Management System
"kms_key_ring_name": "openai-kms-key-ring",
Key ring systému Key Management System obsahující hlavní klíč, který spravujete
"kms_key_location": "us-east1"
Oblast, ve které se nachází hlavní klíč vašeho systému Key Management System
Povolíme EKM pro vaši organizaci/pracovní prostor ChatGPT.
API
Zaregistrujte svůj externí klíč u OpenAI
Postupujte podle pokynů v této referenci API Externí klíče v Management API
Nejprve zaregistrujte svůj externí klíč na úrovni organizace OpenAI, čímž se vygeneruje ID externího klíče.
V tomto kroku ověříme vaše nastavení v GCP kontrolou, že se můžeme autentizovat k vašemu KMS.
Tím se EKM do vašeho projektu OpenAI ještě nepřidá.
curl -X POST \
-H "Content-type: application/json" \
-H "Authorization: Bearer $TOKEN" \
"https://api.openai.com/v1/organization/external_keys" \
-d '{
"type": "gcp",
"name": "Konfigurace GCP EKM",
"workload_identity_project_number": "123456789012",
"workload_identity_pool_id": "openai-azure",
"workload_identity_provider_id": "openai-ekm-service-role",
"audience": <ID vaší organizace nebo ID 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"
}'Poté vytvořte projekt OpenAI přidružený k externímu klíči. Poté se ve vašem projektu aktivuje EKM.
curl -X POST \
-H "Content-type: application/json" \
-H "Authorization: Bearer $TOKEN" \
"https://api.openai.com/v1/organization/projects" \
-d '{
"name": "Nějaký projekt",
"external_key_id": "extkey_xxxx"
}'