OpenAI

OpenAI / AWS EKM 集成指南

配置 AWS 并启用 EKM 的分步指南

更新于:yesterday

概览

借助企业密钥管理 (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. 创建一个供 OpenAI 代入的 IAM 角色,并为其分配对 KMS 具有有限访问权限的策略

OpenAI 将从其自有的 AWS 账户中调用 AssumeRole。此步骤旨在确认 OpenAI 的 AWS 主体可以代入该受限角色,以访问你的 KMS。

  1. 前往 IAM -> 角色,然后点击“创建角色

  2. 选择受信实体步骤中,选择自定义信任策略

AWS IAM Select trusted entity screen with Custom trust policy selected

接下来,在自定义信任策略中输入以下内容,以允许 OpenAI 的 AWS 主体获得访问权限。

  • 此主体即 OpenAI 的 AWS 主体:arn:aws:iam::790389265272:role/EnterpriseKeyManagement

  • 指定 OpenAI 在执行 AssumeRole 过程中应传入的 ExternalId 。

{
    "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>"

    • OpenAI 将在你的云端代入的角色 ARN。

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

    • 你所管理的主密钥的 KMS ARN。

我们将为你的 ChatGPT 组织/工作空间启用 EKM。

API

向 OpenAI 注册你的外部密钥

请按照管理 API 中的外部密钥这篇 API 参考文档中的说明操作

  1. 首先,在 OpenAI 组织级别注册你的外部密钥,这将生成一个外部密钥 ID。

  2. 在此步骤中,我们将验证你提供的信息是否有效,以及我们能否通过身份验证访问你的 KMS。

  3. 此操作尚未在你的 OpenAI 项目中启用 EKM。

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"
}'

这篇文章对你有帮助吗?