Общ преглед
Enterprise Key Management (EKM) позволява на OpenAI да шифрова данни с помощта на главен ключ, който контролирате. Този документ показва как да настроите своя GCP акаунт, за да предоставите на OpenAI ограничени разрешения за вашия KMS.

Стъпки
1. Създайте федерирана идентичност за OpenAI
OpenAI ще издава токен за идентичност от GCP акаунт, собственост на OpenAI, който изглежда приблизително така.
azp и sub са ID на сервизния акаунт на OpenAI в GCP
aud е ID на вашата организация в OpenAI. Можете също да изберете друга аудитория, например ID на вашия проект в OpenAI – вижте инструкциите по-долу
{
"aud": "org-xxxx",
"azp": "105900137572174660365",
"exp": 1747876928,
"iat": 1747873328,
"iss": "https://accounts.google.com",
"sub": "105900137572174660365"
}Тази стъпка разпознава claims, направени от този токен за идентичност, и позволява на вашия GCP STS да издаде токен за достъп, когато бъде предоставен този токен за идентичност.
Отидете на IAM & Admin -> Workload Identity Federation и щракнете върху Create Pool

В стъпката Create an identity pool, въведете произволна стойност за pool name.
В стъпката Add a provider to pool:
В Select a provider изберете OpenID Connect (OIDC)
Въведете произволна стойност за provider name.
В секцията Issuer (URL) въведете https://accounts.google.com
В секцията Audiences
Изберете Allowed audiences
Въведете аудиторията, която OpenAI трябва да посочи, когато ви предаваме токен.
За ChatGPT или API: можете да въведете ID на организацията на OpenAI API (org-xxx)
За API: можете да въведете конкретен ID на API проект за по-голяма детайлност.

В секцията Attribute mapping
за google.subject въведете assertion.sub

В секцията Attribute conditions
Сега трябва да виждате своя workload identity pool и workload identity provider , посочени на страницата https://console.cloud.google.com/iam-admin/workload-identity-pools
ID на workload identity pool

ID на workload identity provider

2. Уверете се, че KMS е активиран
Отидете на https://console.developers.google.com/apis/api/cloudkms.googleapis.com/overview, за да активирате KMS. Не е задължително да създавате своя KMS в същия GCP проект, в който сте разпознали федерираната идентичност на OpenAI; ако обаче проектите се различават, продуктът KMS трябва поне да е активиран и в двата проекта.
3. Създайте нов KMS ключ
Отидете на Security -> Data Protection > Key Management
В раздела Overview щракнете върху Create key ring
Изберете произволно име за своя key ring
За предназначение и алгоритъм изберете Symmetric encrypt/decrypt

След като създадете key ring, той трябва да бъде показан в раздела Key Rings. Щракнете върху key ring.
В подробностите за key ring щракнете върху Create Key
Изберете произволно име за своя ключ
4. Създайте ограничена роля за операции за шифроване/дешифриране в KMS
Отидете на IAM & Admin -> Roles -> Create role
Въведете произволна стойност за заглавието и ID на ролята
Щракнете върху Add Permissions, след което добавете следното
cloudkms.cryptoKeyVersions.useToDecrypt
cloudkms.cryptoKeyVersions.useToEncrypt
5. Присвоете федерираната идентичност на OpenAI към ограничената KMS роля за операции за шифроване/дешифриране
Отидете на Security -> Data Protection > Key Management
Щракнете върху името на своя key ring, след което щракнете върху името на своя ключ, за да отидете на страницата с подробности за ключа.
Щракнете върху раздела Permissions, след което върху бутона Grant Access

Присвоете федерираната идентичност на OpenAI към персонализираната роля, която създадохте по-рано
В секцията Add principals въведете principal://iam.googleapis.com/projects/<YOUR_GCP_PROJECT_NUMBER>/locations/global/workloadIdentityPools/<YOUR_GCP_WORKLOAD_IDENTITY_POOL>/subject/105900137572174660365
В секцията Assign roles изберете персонализираната роля, която създадохте в предишната стъпка за ограничени EKM разрешения
6. Приложете допълнителни ограничения съгласно собствените си практики за сигурност
По-горе е посочена минимално необходимата информация, от която OpenAI се нуждае, за да настрои EKM. Можете свободно да прилагате допълнителни политики за ключове или ограничения съгласно собствените си вътрешни практики за сигурност, стига OpenAI да може да извиква операции за шифроване и дешифриране във вашия KMS. Когато извикате крайната точка за регистрация на ключ в OpenAI, описана по-долу, ще валидираме вашата настройка.
След като изпълните горните стъпки
ChatGPT Enterprise
Моля, свържете се с вашия контакт в OpenAI и споделете следното:
"workload_identity_project_number": "123456789012",
"workload_identity_pool_id": "openai-azure",
"workload_identity_provider_id": "openai-ekm-service-role",
"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"
Регионът, в който се намира главният ключ на вашата система за управление на ключове
Ще активираме EKM за вашата организация/работно пространство в ChatGPT.
API
Регистрирайте външния си ключ в OpenAI
Следвайте инструкциите в тази справка за API Външни ключове в API за управление
Първо регистрирайте външния си ключ на ниво организация на OpenAI, което ще генерира ID на външен ключ.
В тази стъпка ще валидираме настройката ви в GCP, като проверим дали можем да се удостоверим към вашия KMS.
Това все още няма да добави EKM към вашия проект на 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",
"workload_identity_project_number": "123456789012",
"workload_identity_pool_id": "openai-azure",
"workload_identity_provider_id": "openai-ekm-service-role",
"audience": <вашият org id или project id>,
"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"
}'След това създайте проект на OpenAI, свързан с външния ключ. След това EKM се активира за вашия проект.
curl -X POST \
-H "Content-type: application/json" \
-H "Authorization: Bearer $TOKEN" \
"https://api.openai.com/v1/organization/projects" \
-d '{
"name": "Някакъв проект",
"external_key_id": "extkey_xxxx"
}'