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

步驟
1. 為 OpenAI 建立一組聯合身份
OpenAI 將從 OpenAI 擁有的 GCP 帳戶簽發一個身分 Token,看起來會像這樣。
azp 和 sub 是 OpenAI 在 GCP 中的服務帳戶 ID
Aud 是你的 OpenAI 組織 ID。你也可以選擇其他對象,例如你的 OpenAI 專案 ID;請參閱下方說明
{
"aud": "org-xxxx",
"azp": "105900137572174660365",
"exp": 1747876928,
"iat": 1747873328,
"iss": "https://accounts.google.com",
"sub": "105900137572174660365"
}此步驟會識別該身分 Token 所提出的宣告,並讓 GCP STS 在提供該身分 Token 時核發存取 Token。
前往「IAM 與管理員」>「工作負載身份聯盟」,然後點擊「建立集區」

在步驟建立身分集區 中,於集區名稱 輸入任何名稱即可。
在將提供者新增至集區步驟中:
在「選取提供者」中,選取 OpenID Connect (OIDC)
在提供者名稱 輸入任何內容。
在發行者 (URL) 區段中,輸入 https://accounts.google.com
在受眾區段
選取允許的受眾
輸入 OpenAI 在我們傳給你 Token 時應指示的受眾。
若為 ChatGPT 或 API:你可以填入 OpenAI API 組織 ID (org-xxx)
對於 API:你可以填入特定的 API 專案 id,以便更精確地區分。

在屬性對應區段
對於 google.subject,請輸入 assertion.sub

在屬性條件區段
現在,你應該能夠看到你的「工作負載身份集區」與「工作負載身份提供者」有被列在 https://console.cloud.google.com/iam-admin/workload-identity-pools 的頁面中
工作負載身分集區 ID

工作負載身分驗證提供者 ID

2. 確認已啟用 KMS
前往 https://console.developers.google.com/apis/api/cloudkms.googleapis.com/overview 以啟用 KMS。你不需要在識別 OpenAI 聯合身份的同一個 GCP 專案中建立 KMS;但如果是不同專案的話,那麼你就必須要在兩個專案中都啟用 KMS 產品才行。
3. 建立全新的 KMS 金鑰
前往安全性 -> 資料保護 -> 金鑰管理
在概觀分頁下,按一下建立金鑰圈
為金鑰圈選擇任何名稱
對於用途或是演算法,請選取「對稱式加密/解密」

建立金鑰圈後,它應會列在金鑰圈分頁。按一下金鑰圈。
在金鑰圈詳細資料中,按一下建立金鑰
為金鑰選擇名稱
4. 建立供 KMS 上加密/解密作業使用的受限角色
前往 IAM 與管理員 -> 角色 -> 建立角色
在職位/職稱和 ID 欄位中輸入任何內容
按一下「新增權限」,然後新增下列內容
Cloudkm.cryptoKeyVersion.useToDecrypt
Cloudkms.cryptoKeyVersion.useToEncrypt
5. 指派 OpenAI 的聯合身份給受限的 KMS 角色,以藉此執行加密/解密作業
前往安全性 -> 資料保護 -> 金鑰管理
按一下你的金鑰圈名稱,再按一下金鑰名稱,即可進入金鑰詳細資料頁面。
點擊「權限」分頁,然後再點擊「授予存取權限」的按鈕

將 OpenAI 聯合身分指派給你先前建立的自訂角色
在新增主體區段,輸入 principal://iam.googleapis.com/projects/<YOUR_GCP_PROJECT_NUMBER>/locations/global/workloadIdentityPools/<YOUR_GCP_WORKLOAD_IDENTITY_POOL>/subject/105900137572174660365
在指派角色區段,選取你在上一個步驟建立、具有有限 EKM 權限的自訂角色
6. 根據你的安全做法,採取其他限制措施。
以上為 OpenAI 設定 EKM 所需的 最低必要資訊。只要 OpenAI 能夠在你的 KMS 上呼叫 encrypt 和 decrypt 作業,你即可依據自身內部安全做法,自由套用額外的金鑰原則或限制。當你使用 OpenAI 呼叫如下所述的金鑰註冊端點時,我們將驗證你的設定。
完成上述步驟後
ChatGPT Enterprise
請聯絡你的 OpenAI 聯絡人,並分享以下內容:
"workload_identity_project_number": "123456789012",
"workload_identity_pool_id": "openai-azure",
"workload_identity_provider_id": "openai-ekm-service-role",
"kms_project_id": "adjective-noun-12345",
"kms_key_name": "openai-kms-key",
"kms_key_ring_name": "openai-kms-key-ring",
"kms_key_location": "us-east1"
金鑰管理系統主金鑰所在的區域
我們將為你的 ChatGPT 組織/工作區啟用 EKM。
API
向 OpenAI 註冊你的外部金鑰
敬請依照此 API 參考文件「管理 API 中的外部金鑰」中的指示說明來進行操作
首先,在 OpenAI 組織等級註冊你的外部金鑰,系統將產生一組外部金鑰 ID。
這個步驟將藉由確認是否能向你的 KMS 進行驗證,來驗證你在 GCP 上的設定。
這還不會將 EKM 新增至你的 OpenAI 專案。
curl -X POST \
-H "Content-type: application/json" \
-H "Authorization: Bearer $TOKEN" \
"https://api.openai.com/v1/organization/external_keys"\
-d '{
"type": "gcp",
"name": "GCP EKM Config",
"workload_identity_project_number": "123456789012",
"workload_identity_pool_id": "openai-azure",
"workload_identity_provider_id": "openai-ekm-service-role",
"audience": <your org id or project id>,
"kms_project_id": "adjective-noun-12345",
"kms_key_name": "openai-kms-key",
"kms_key_ring_name": "openai-kms-key-ring",
"kms_key_location": "us-east1"
}'接著,建立與外部金鑰相關聯的 OpenAI 專案。完成此動作後,EKM 將在你的專案中啟用。
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"
}'