OpenAI
此頁面由機器翻譯。查看原文英文文章。

透過 OpenAI 和 AWS 設定 EKM

了解如何佈建 AWS 資源並啟用企業金鑰管理(EKM)。

更新日期:3 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. 建立供 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。

    • 如使用 ChatGPT 或 API,請使用與工作區關聯的組織 ID(org-xxx),可在組織設定中查看。

    • 如使用 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>"
]
}
}
}
]
}

接着,在新增權限步驟中,搜尋你在上一步建立的 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>"

    • 你所管理的主金鑰的金鑰管理系統 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"
}'

這篇文章對你有幫助嗎?