概覽
企業金鑰管理 (EKM) 可讓 OpenAI 使用由你控制的主金鑰來加密資料。本文件說明如何設定你的 AWS 帳戶,以授予 OpenAI 對你 KMS 的有限權限。

步驟
1. 建立新的 KMS 金鑰
前往 KMS -> 客戶管理的金鑰,然後按一下「建立金鑰」
選取對稱式加密演算法
建立金鑰後,請記下其 ARN。支援的格式包括 arn:aws:kms:<region>:<account_number>:key/<uuid>, ...:key/mrk-*, 或 ...:alias/<alias_name>

2. 為 KMS 金鑰建立自訂原則,以限制存取權限
前往 IAM -> 原則,然後按一下「建立原則」
在指定權限步驟中,選取 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. 建立一個可供 OpenAI 扮演的 IAM 角色,並將其指派給對你的 KMS 具有限制存取權限的政策。
OpenAI 將從其擁有的 AWS 帳戶中呼叫 AssumeRole。此步驟確認 OpenAI 的 AWS 主體可以扮演受限角色,以存取你的 KMS。
前往 IAM -> 角色,然後按一下「建立角色」
在選取受信任主體步驟中,選取自訂信任原則

在自訂信任原則中輸入以下內容,以允許存取 OpenAI 的 AWS 主體。
該主體是 OpenAI 的 AWS 主體 - arn:aws:iam::790389265272:role/EnterpriseKeyManagement
指定在 AssumeRole 流程中,OpenAI 應傳入哪個 ExternalId。
若使用 ChatGPT 或 API,你可以使用與你工作區相關聯的 組織 ID (org-xxx):https://platform.api.openai.org/settings/organization/general
如果是 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 原則名稱。按一下原則名稱旁的核取方塊,然後按一下「下一步」。

在名稱、檢閱及建立區段中,選取任一個角色名稱。
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 中的外部金鑰中的指示
首先,請在 OpenAI 組織等級註冊外部金鑰,這會產生外部金鑰 ID。
在這個步驟中,我們會驗證你的輸入是否有效,並確認我們可以成功驗證你的 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 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"
}'
