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

Стъпки
1. Създайте нов KMS ключ
Отидете на KMS -> Customer managed keys, след което щракнете върху Create Key
Изберете алгоритъм за симетрично шифроване
След като ключът ви бъде създаден, запишете неговия ARN. Поддържаните формати включват arn:aws:kms:<region>:<account_number>:key/<uuid>, ...:key/mrk-*, или ...:alias/<alias_name>

2. Създайте персонализирана политика за ограничен достъп до KMS ключа
Отидете на IAM -> Policies, след което щракнете върху Create Policy
В стъпката Specify permissions изберете JSON и въведете следното, за да дадете на политиката действия за достъп до KMS. Уверете се, че сте заменили YOUR_KMS_ARN с ARN на ключа, който създадохте.

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowEncryptDecrypt",
"Effect": "Allow",
"Action": [
"kms:Decrypt",
"kms:Encrypt"
],
"Resource": <YOUR_KMS_ARN>
}
]
}
3. Създайте IAM роля, която OpenAI да поема, и я свържете с политиката с ограничен достъп до вашия KMS
OpenAI ще извиква AssumeRole от AWS акаунт, притежаван от OpenAI. Тази стъпка указва, че AWS principal на OpenAI може да поеме ограничената роля за достъп до вашия KMS.
Отидете на IAM -> Roles, след което щракнете върху Create Role
В стъпката Select trusted entity изберете Custom trust policy

Въведете следното в Custom trust policy, за да разрешите достъп на AWS principal на OpenAI.
Principal е AWS principal на OpenAI - arn:aws:iam::790389265272:role/EnterpriseKeyManagement
Посочете кой Externald OpenAI трябва да подаде по време на процеса AssumeRole.
За ChatGPT или API можете да използвате organization id (org-xxx), свързан с вашето работно пространство - https://platform.api.openai.org/settings/organization/general
За API можете да въведете конкретен API project ID за по-голяма детайлност
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::790389265272:role/EnterpriseKeyManagement"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": [
<YOUR_OPENAI_ORGANIZATION_ID>,
]
}
}
}
]
}
В стъпката Add permissions потърсете името на IAM политиката, която създадохте в предишната стъпка. Щракнете върху checkbox до името на политиката, след което щракнете Next.

В секцията Name, review, and create изберете произволно име за ролята.
4. Приложете допълнителни ограничения според собствените си практики за сигурност
По-горе е минималната необходима информация, от която OpenAI се нуждае, за да настрои EKM. Можете свободно да приложите допълнителни политики за ключове или ограничения според собствените си вътрешни практики за сигурност, стига OpenAI да може да извиква операциите за шифроване и дешифроване на вашия KMS. Когато извикате крайната точка за регистриране на ключ с OpenAI, описана по-долу, ние ще валидираме вашата настройка.
След изпълнение на горните стъпки
ChatGPT Enterprise
Моля, свържете се с вашия контакт в OpenAI и споделете следното:
"role_arn": "arn:aws:iam::<YOUR_AWS_ACCOUNT_NUMBER>:role/<YOUR_ROLE>",
Role ARN, която OpenAI ще поеме във вашия облак
"kms_arn": "arn:aws:kms:<REGION>:<YOUR_AWS_ACCOUNT_NUMBER>:key/<UUID>"
ARN на системата за управление на ключове за главния ключ, който управлявате
Ще активираме EKM за вашата организация/работно пространство в ChatGPT.
API
Регистрирайте външния си ключ в OpenAI
Следвайте инструкциите в тази API справка Външни ключове в Management API
Първо регистрирайте външния си ключ на ниво организация в OpenAI, което ще генерира идентификатор на външен ключ.
В тази стъпка ще валидираме, че въведените от вас данни са валидни и че можем да се удостоверим пред вашия 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": "aws",
"name": "AWS EKM конфигурация",
"role_arn": "arn:aws:iam::<YOUR_AWS_ACCOUNT_NUMBER>:role/<YOUR_ROLE>",
"kms_arn": "arn:aws:kms:<REGION>:<YOUR_AWS_ACCOUNT_NUMBER>:key/<UUID>",
"external_id": <your org id or project id>
}'След това създайте OpenAI проект, свързан с външния ключ. След това EKM се активира за вашия проект.
Тялото на отговора от това API извикване ще ви даде ID на проекта (proj_xxx)
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"
}'
