概覽
企業金鑰管理 (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 輸入任意內容
按一下「新增權限」,然後新增以下項目
cloudkms.cryptoKeyVersions.useToDecrypt
cloudkms.cryptoKeyVersions.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 呼叫加密和解密操作,您可以按照自己的內部安全實務套用其他金鑰政策或限制。當您呼叫下方所述的 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 設定",
"workload_identity_project_number": "123456789012",
"workload_identity_pool_id": "openai-azure",
"workload_identity_provider_id": "openai-ekm-service-role",
"audience": <你的組織 ID 或專案 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": "某個專案",
"external_key_id": "extkey_xxxx"
}'