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

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

2. 建立自訂政策,以限制對 KMS 金鑰的存取權
前往 IAM -> Policies,然後按一下「Create Policy」。
在指定權限步驟中,選擇 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 會從 OpenAI 擁有的 AWS 帳戶呼叫 AssumeRole。此步驟讓 OpenAI 的 AWS 主體可擔任受限制角色,以存取你的 KMS。
前往 IAM -> Roles,然後按一下建立角色。
在選擇受信任實體步驟中,選擇自訂信任政策。

接下來,在自訂信任政策中輸入以下內容,以允許存取 OpenAI 的 AWS 主體。
該主體是 OpenAI 的 AWS 主體:
arn:aws:iam::790389265272:role/EnterpriseKeyManagement。指定 OpenAI 在
AssumeRole程序中應傳遞哪個 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 上呼叫加密和解密操作,你便可按照自己的內部安全實務套用額外的金鑰政策或限制。當你透過下文所述的 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 設定",
"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": <你的 org id 或 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": "某個專案",
"external_key_id": "extkey_xxxx"
}'