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

Стъпки
1. Създайте федерирана идентичност за OpenAI
OpenAI ще издава токен за идентичност от GCP акаунт, притежаван от OpenAI, който изглежда приблизително така.
azp и sub са идентификаторът на сервизния акаунт на OpenAI в GCP
aud е идентификаторът на вашата организация в OpenAI. Можете също да изберете друга audience стойност, например идентификатора на вашия 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, въведете каквото и да е за името на пула.
Запомнете това за по-късно — ще трябва да го регистрирате в OpenAI
В стъпката Add a provider to pool:
В Select a provider изберете OpenID Connect (OIDC)
Въведете каквото и да е за името на доставчика.
В раздела Issuer (URL) въведете https://accounts.google.com
В раздела Audiences
Изберете Allowed audiences
Въведете audience стойността, която OpenAI трябва да посочва, когато ви подаваме токен.
За ChatGPT или API: Можете да въведете идентификатора на организацията в OpenAI API (org-xxx)
За API: можете да въведете конкретен идентификатор на API project за по-голяма детайлност.

В раздела Attribute mapping
за google.subject въведете assertion.sub

В раздела Attribute conditions
въведете
assertion.sub == "105900137572174660365"
Сега трябва да виждате своя workload identity pool и workload identity provider изброени на страницата https://console.cloud.google.com/iam-admin/workload-identity-pools
Идентификатор на workload identity pool

Идентификатор на 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
За Purpose and algorithm изберете 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, след това щракнете върху името на своя ключ, за да отидете на страницата с детайли за ключа.
Ако нямате това, върнете се към раздела Create a KMS
Щракнете върху раздела 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
YOUR_GCP_PROJECT_NUMBER тук е проектът, в който разпознахте федерираната идентичност на OpenAI, като създадохте YOUR_GCP_WORKLOAD_IDENTITY_POOL. Той може да бъде, но не е задължително да бъде, същият проект, в който се намира вашият KMS.
Ако проектите са различни, уверете се, че KMS е поне активиран и в другия проект, като отидете на https://console.developers.google.com/apis/api/cloudkms.googleapis.com/overview
В раздела Assign roles изберете персонализираната роля, която създадохте в предишната стъпка, за ограничени EKM разрешения
6. Приложете всички допълнителни ограничения в съответствие със собствените си практики за сигурност
По-горе е минималната необходима информация, от която OpenAI се нуждае, за да настрои EKM. Можете да приложите допълнителни политики за ключове или ограничения в съответствие със собствените си вътрешни практики за сигурност, стига OpenAI да може да извиква операции за криптиране и декриптиране на вашия KMS. Когато извикате крайната точка за регистриране на ключ в OpenAI, описана по-долу, ние ще валидираме вашата настройка.
След изпълнение на горните стъпки
ChatGPT Enterprise
Моля, свържете се със своя контакт в OpenAI и споделете следното:
"workload_identity_project_number": "123456789012",
12-цифреният номер на GCP проекта, в който сте регистрирали workload identity на OpenAI
"workload_identity_pool_id": "openai-azure",
Пулът, съдържащ Workload Identity доставчика, който сте регистрирали за OpenAI
"workload_identity_provider_id": "openai-ekm-service-role",
Workload Identity доставчикът, който сте регистрирали за OpenAI
"kms_project_id": "adjective-noun-12345",
Името на GCP проекта, в който се намира вашият KMS
"kms_key_name": "openai-kms-key",
Името на главния ключ на Key Management System
"kms_key_ring_name": "openai-kms-key-ring",
Key Management System key ring, съдържащ главния ключ, който управлявате
"kms_key_location": "us-east1"
Регионът, в който се намира главният ключ на вашия Key Management System
Ще активираме EKM за вашата ChatGPT организация/работно пространство.
API
Регистрирайте своя външен ключ в OpenAI
Следвайте инструкциите в тази API справка External Keys in the Management API
Първо регистрирайте своя външен ключ на ниво организация в OpenAI, което ще генерира идентификатор на външен ключ.
В тази стъпка ще валидираме настройката ви в 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"
}'