OpenAI

OpenAI / AWS EKM: инструкции по интеграции

Пошаговые инструкции по подготовке AWS и активации EKM

Обновлено: 14 days ago

Обзор

Корпоративное управление ключами (EKM) позволяет OpenAI шифровать данные с помощью главного ключа, который контролируете вы. В этом документе описано, как настроить вашу учетную запись AWS, чтобы предоставить OpenAI ограниченные разрешения для доступа к вашей KMS.

AWS EKM integration flow between OpenAI EKM Service, your STS, your KMS, and your master KEK

Инструкции

1. Создайте новый ключ KMS

  1. Перейдите в раздел «KMS -> Ключи, управляемые клиентом», затем нажмите «Создать ключ».

  2. Выберите алгоритм симметричного шифрования.

  3. После создания ключа запишите его ARN. Поддерживаемые форматы: arn:aws:kms:<region>:<account_number>:key/<uuid>, ...:key/mrk-* или ...:alias/<alias_name>.

AWS KMS customer managed key details page with key ID and ARN for test-kms

2. Создайте пользовательскую политику для ограниченного доступа к ключу KMS

  1. Перейдите в раздел «IAM -> Политики», затем нажмите «Создать политику».

  2. На этапе «Укажите разрешения» выберите JSON и введите следующее, чтобы предоставить политике действия доступа к KMS. Убедитесь, что вы заменили параметр YOUR_KMS_ARN на ARN созданного вами ключа.

AWS IAM Create policy page with Specify permissions open and the JSON policy editor selected
{
    "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 OpenAI может принять ограниченную роль для доступа к вашей KMS.

  1. Перейдите в раздел «IAM -> Роли», затем нажмите «Создать роль».

  2. На этапе «Выбор доверенного субъекта» выберите «Пользовательская политика доверия».

AWS IAM Select trusted entity screen with Custom trust policy selected

Далее введите следующее в пользовательской политике доверия, чтобы разрешить доступ главному субъекту AWS OpenAI.

  • Главным субъектом является субъект AWS компании OpenAI: arn:aws:iam::790389265272:role/EnterpriseKeyManagement.

  • Укажите, какой ExternalId OpenAI должен передавать в процессе AssumeRole.

    • Для ChatGPT или API используйте ID организации (org-xxx), связанный с вашей рабочей областью: https://platform.api.openai.org/settings/organization/general.

    • Для API можно указать конкретный ID проекта API для большей детализации.

{
    "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>,
                     ]
                }
            }
        }
    ]
}

Далее на этапе «Добавьте разрешения» найдите название политики IAM, которую вы создали на предыдущем этапе. Нажмите на флажок рядом с названием политики, затем нажмите «Далее».

AWS IAM Add permissions page filtered to customer managed KMS policies with test-allow-kms-access selected

Наконец, в разделе «Имя, проверка и создание» выберите любое название роли.

4. Примените любые дополнительные ограничения в соответствии с вашими собственными методами обеспечения безопасности

Выше приведена минимально необходимая информация, которая требуется OpenAI для настройки EKM. Вы можете применять дополнительные политики управления ключами или ограничения в соответствии с вашими внутренними практиками обеспечения безопасности, при условии, что OpenAI сможет выполнять операции шифрования и дешифрования в вашей KMS. При вызове вами конечной точки регистрации ключа в OpenAI (см. ниже) мы проверим ваши настройки.

После выполнения инструкций выше

ChatGPT Enterprise

Свяжитесь с вашим контактным лицом в OpenAI и поделитесь следующими параметрами:

  • "role_arn": "arn:aws:iam::<YOUR_AWS_ACCOUNT_NUMBER>:role/<YOUR_ROLE>"

    • Роль ARN, которую OpenAI будет использовать в вашем облаке.

  • "kms_arn": "arn:aws:kms:<REGION>:<YOUR_AWS_ACCOUNT_NUMBER>:key/<UUID>"

    • ARN системы управления ключами для главного ключа, которым вы управляете.

Мы включим EKM для вашей организации/рабочей области ChatGPT.

API

Регистрация собственного внешнего ключа в OpenAI

Следуйте инструкциям в этом руководстве по API: «Внешние ключи в API управления».

  1. Сначала зарегистрируйте свой внешний ключ на уровне организации OpenAI: в результате будет создан ID внешнего ключа.

  2. На этом этапе мы проверим, что введенные вами данные корректны и что мы сможем пройти аутентификацию в вашей KMS.

  3. Пока что система 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 Config",
  "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": "Some Project",

   "external_key_id": "extkey_xxxx"
}'

Была ли эта статья полезной?