OpenAI

OpenAI / AWS EKM 整合說明

佈建 AWS 並啟用 EKM 的逐步說明

更新日期:3 hours 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. 建立一個可供 OpenAI 扮演的 IAM 角色,並將其指派給對你的 KMS 具有限制存取權限的政策。

OpenAI 將從其擁有的 AWS 帳戶中呼叫 AssumeRole。此步驟確認 OpenAI 的 AWS 主體可以扮演受限角色,以存取你的 KMS。

  1. 前往 IAM -> 角色,然後按一下「建立角色」

  2. 選取受信任主體步驟中,選取自訂信任原則

    AWS IAM Select trusted entity screen with Custom trust policy selected
  3. 在自訂信任原則中輸入以下內容,以允許存取 OpenAI 的 AWS 主體。

    1. 該主體是 OpenAI 的 AWS 主體 - arn:aws:iam::790389265272:role/EnterpriseKeyManagement

    2. 指定在 AssumeRole 流程中,OpenAI 應傳入哪個 ExternalId

      1. 若使用 ChatGPT 或 API,你可以使用與你工作區相關聯的 組織 ID (org-xxx)https://platform.api.openai.org/settings/organization/general

      2. 如果是 API,可以填入特定的 API 專案 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>,
                             ]
                        }
                    }
                }
            ]
        }
  4. 新增權限步驟中,搜尋你在前一個步驟建立的 IAM 原則名稱。按一下原則名稱旁的核取方塊,然後按一下「下一步」。

    AWS IAM Add permissions page filtered to customer managed KMS policies with test-allow-kms-access selected
  5. 名稱、檢閱及建立區段中,選取任一個角色名稱。

4. 根據你的安全做法,採取額外的限制措施。

以上為 OpenAI 設定 EKM 所需的最低必要資訊。只要 OpenAI 能夠在你的 KMS 上呼叫 encrypt 和 decrypt 作業,你即可依據自身內部安全實務,自由套用額外的金鑰原則或限制。當你使用 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>"

    • 你管理的主金鑰的金鑰管理系統 ARN

我們將為 ChatGPT 組織/工作區啟用 EKM。

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>
    }'
  4. 接著,建立與外部金鑰相關聯的 OpenAI 專案。完成此操作後,EKM 將在你的專案中啟用。

  5. 此 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"
    }'

這篇文章有幫助嗎?