Обзор
Корпоративное управление ключами (EKM) позволяет шифровать контент клиентов в OpenAI с помощью ключей, управляемых вашей собственной внешней системой управления ключами (KMS). Эта функция доступна для ChatGPT Enterprise и API.
OpenAI поддерживает шифрование Bring Your Own Key (BYOK) с внешними учетными записями в AWS KMS, Google Cloud (GCP) и Azure Key Vault.
В настоящее время внедрение EKM доступно только для рабочих областей Enterprise и Edu с назначенным представителем OpenAI по работе с клиентами.
Как работает шифрование OpenAI EKM
Поток верхнего уровня
Мы создаем ключ шифрования данных (DEK) для вашего облачного провайдера.
Ваша облачная KMS управляет главным ключом шифрования ключей (KEK), который хранится либо в вашем облаке, либо вне его. Реализация остается на ваше усмотрение.
Мы запрашиваем шифрование DEK из вашего облака, чтобы получить зашифрованный DEK (eDEK). Если ваш KEK хранится во внешнем хранилище, ваше облако просто выполняет дополнительный переход к вашему внешнему хранилищу на этапе, который не виден OpenAI.
Шифрование
При шифровании ваши данные шифруются с помощью DEK, а eDEK сохраняется в метаданных файла.

Дешифрование
При дешифровании мы запрашиваем у вашей облачной KMS расшифровку eDEK в DEK, а затем расшифровываем данные с помощью DEK.

Ключевые термины
Ключ шифрования данных (DEK) — ключ, который шифрует ваши данные.
Зашифрованный ключ шифрования данных (eDEK) — зашифрованный DEK, созданный вашей KMS
Ключ шифрования ключей (KEK) — главный ключ, которым вы управляете и который шифрует DEK в eDEK и дешифрует eDEK в DEK. Этот ключ всегда остается вне систем OpenAI.
Высокоуровневые требования к реализации
Для вашего облачного провайдера
Создайте новый ключ в облачной KMS (Azure, AWS или GCP)
Создайте пользовательскую ограниченную политику с разрешениями на шифрование и дешифрование в KMS
Создайте политику доверия (AWS), учетную запись рабочей нагрузки (GCP) или субъект-службу (для Azure) для OpenAI
Назначьте OpenAI роль с ограниченной политикой для доступа к вашей KMS
На платформах OpenAI
ChatGPT Enterprise
Создавать рабочую область ChatGPT для тестирования.
API
На панели управления OpenAI создайте новый проект, в котором будет применяться шифрование.
Функции, специфичные для провайдера
Для AWS, OpenAI будет:
Вызывать AssumeRole с ExternalID
Для GCP OpenAI будет:
Вызывать вашу конечную точку STS из учетной записи OpenAI GCP
Использовать токен доступа GCP, чтобы вызвать функции шифрования/дешифрования для вашей KMS.
Для платформы Azure OpenAI будет:
Запрашивать токен доступа для хранилища вашего клиента Azure
Использовать этот токен доступа, чтобы вызвать шифрование и дешифрование для вашего хранилища ключей.
Информация, необходимая от OpenAI
Аутентификация
Для AWS и GCP вам потребуется распознать токен федеративной идентификации OpenAI. Для Azure вам потребуется распознать ID приложения OpenAI для его регистрации.
Сводка параметров аутентификации
| Основной объект OpenAI AWS | arn:aws:iam::790389265272:role/EnterpriseKeyManagement |
| Идентификатор сервисного учетной записи OpenAI GCP | 105900137572174660365 |
| Идентификатор приложения OpenAI Azure | 20a14814-5ab7-4612-a671-1382b412bf93 |
Требуемая информация при внедрении в зависимости от вашего облачного провайдера
Для AWS необходимо настроить политику доверия, которая распознает:
Основного пользователя OpenAI (номер учетной записи + роль)
ExternalID, который является идентификатором вашего проекта OpenAI
Для GCP необходимо настроить идентификацию рабочих нагрузок, которая распознает:
ID сервисной учетной записи OpenAI
Целевую аудиторию, связанную с идентификатором вашего проекта OpenAI
Для Azure необходимо создать служебную учетную запись в клиенте Azure для регистрации приложения OpenAI
Создайте запись для идентификатора клиента приложения OpenAI: 20a14814-5ab7-4612-a671-1382b412bf9
Это можно сделать, отправив запрос на https://graph.microsoft.com/v1.0/servicePrincipals (конечную точку).
Авторизация
Вам потребуется создать политику, которая позволит удостоверению OpenAI получить ограниченный доступ к вашей KMS.
| AWS | GCP | Azure |
| kms:Decryptkms:Encrypt | cloudkms.cryptoKeyVersions.useToDecryptcloudkms.cryptoKeyVersions.useToEncrypt | Microsoft.KeyVault/vaults/keys/encrypt/actionMicrosoft.KeyVault/vaults/keys/decrypt/action |
Другое
В Azure для типа ключа (алгоритма шифрования ключа) выберите RSA, а не EC.
Информация, необходимая OpenAI от вас
Следуйте инструкциям в этом документе, чтобы зарегистрировать ваш KMS в OpenAI. Ниже приведена сводка параметров, которые вам потребуется указать.
Связанные с аутентификацией
AWS
IAM Role ARN — роль, которую OpenAI может принять (пример: arn:aws:iam::123456789:role/role-name)
ExternalID — ваш ID организации OpenAI
GCP
Номер проекта идентификации рабочих процессов (пример: 123456789)
ID пула удостоверений для рабочих нагрузок
ID поставщика удостоверений для рабочих нагрузок
Разрешенная аудитория: ваш ID организации OpenAI
Azure
ID клиента
| AWS | GCP | Azure | |
| Связано с аутентификацией | ID клиента | ||
| Связано с KMS | KMS ARN — (пример: arn:aws:kms:REGION:ACCOUNT_NUMBER:key:KEY_UUID) | ID проекта KMS (пример: adjective-noun-12345)Имя связки ключей KMSИмя ключа KMSМестоположение ключа KMS (пример: us-east1) | URI хранилища (пример: https://your-vault-name.vault.azure.net/)Имя ключа |
После того как вы зарегистрируете свой KMS в OpenAI, продолжайте следовать инструкциям в документации, чтобы активировать конфигурацию EKM в API-проекте. Создайте новый проект API OpenAI для тестирования.
Руководства по реализации для конкретных провайдеров
Пошаговое руководство см. по соответствующим ссылкам ниже. Обратите внимание: руководства посвящены требованиям к интеграции с OpenAI и не предназначены для использования в качестве полного руководства по всей вашей среде
Неподдерживаемые функции при включенном EKM
В первом релизе при включении EKM недоступны следующие функции:
Приложения с синхронизацией
Функции, которые не являются общедоступными (т. е. всё, что ещё находится в стадии бета/альфа-тестирования)
