Обзор
Корпоративное управление ключами (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"
}На этом этапе распознаются утверждения, предоставленные этим токеном удостоверения личности, и вашему GCP STS разрешается выдавать токен доступа, когда предоставляется этот токен удостоверения личности.
Перейдите в раздел «IAM и администрирование -> Федеративное удостоверение рабочих нагрузок» и нажмите «Создать пул»

На этапе создания пула удостоверений введите любое значение в поле имени пула.
На этапе добавления провайдера в пул:
В поле «Выберите провайдера» выберите OpenID Connect (OIDC)
Введите любое значение для имени провайдера.
В разделе «Издатель (URL)» введите https://accounts.google.com
В разделе «Аудитории»
Выберите «Разрешенные аудитории»
Укажите целевую аудиторию, которую OpenAI должна указывать при передаче вам токена.
Для ChatGPT или API: можно указать ID организации API OpenAI (org-xxx)
Для API: можно указать конкретный ID проекта API для большей детализации.

В разделе «Сопоставление атрибутов»
для google.subject укажите assertion.sub

В разделе «Условия атрибута»
Теперь вы должны увидеть, что ваши пул удостоверений рабочих нагрузок и поставщик удостоверений рабочих нагрузок отображаются на странице https://console.cloud.google.com/iam-admin/workload-identity-pools .
ID пула удостоверений для рабочей нагрузки

ID поставщика удостоверений для рабочей нагрузки

2 Убедитесь, что KMS включена
Перейдите по адресу https://console.developers.google.com/apis/api/cloudkms.googleapis.com/overview, чтобы включить KMS. Вы не обязаны создавать KMS в том же проекте GCP, в котором вы подтвердили федеративное удостоверение OpenAI; однако, если проекты различаются, продукт KMS должен быть как минимум включен в обоих проектах.
3. Создайте новый ключ KMS
Перейдите в раздел «Безопасность -> Защита данных > Управление ключами»
На вкладке «Обзор» нажмите «Создать связку ключей»
Выберите любое название для своего набора ключей
Для параметра «Назначение и алгоритм» укажите «Симметричное шифрование/дешифрование»

Созданная связка ключей должна отобразиться на вкладке «Связки ключей». Нажмите на связку ключей.
В сведениях о связке ключей нажмите «Создать ключ»
Выберите любое имя для своего ключа
4. Создайте ограниченную роль для операций шифрования/дешифрования в KMS
Перейдите в раздел «IAM и администрирование» → «Роли» → «Создать роль»
Введите любое значение для названия роли и ID
Нажмите «Добавить разрешения», затем добавьте следующее
cloudkms.cryptoKeyVersions.useToDecrypt
cloudkms.cryptoKeyVersions.useToEncrypt
5. Назначьте федеративное удостоверение OpenAI на ограниченную роль KMS для операций шифрования/дешифрования
Перейдите в раздел «Безопасность -> Защита данных > Управление ключами»
Нажмите на имя своей связки ключей, затем нажмите на имя ключа, чтобы перейти на страницу сведений о ключе.
Перейдите на вкладку «Разрешения», затем нажмите «Предоставить доступ»

Назначьте федеративное удостоверение OpenAI на пользовательскую роль, которую вы ранее создали
В разделе «Добавить субъекты» введите principal://iam.googleapis.com/projects/<YOUR_GCP_PROJECT_NUMBER>/locations/global/workloadIdentityPools/<YOUR_GCP_WORKLOAD_IDENTITY_POOL>/subject/105900137572174660365
В разделе «Назначение ролей» выберите пользовательскую роль, которую вы создали на предыдущем шаге, для ограниченных разрешений 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 Config",
"workload_identity_project_number": "123456789012",
"workload_identity_pool_id": "openai-azure",
"workload_identity_provider_id": "openai-ekm-service-role",
"audience": <your org id or 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": "Some Project",
"external_key_id": "extkey_xxxx"
}'