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

OpenAI / GCP EKM 整合指示

逐步指示,說明如何配置 GCP 並啟用 EKM

更新日期:10 minutes ago

概覽

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

Diagram of OpenAI GCP EKM integration flow using STS token exchange and KMS encrypt or decrypt requests

步驟

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。

  1. 前往 IAM & 管理員 -> 工作負載身分聯合 ,然後按一下建立集區

GCP IAM & Admin with Workload Identity Federation selected
  1. 建立身分集區步驟中,為集區名稱輸入任意內容。

  1. 將供應商新增至集區步驟中:

  1. 在「選擇供應商」中,選擇 OpenID Connect (OIDC)

  2. 供應商名稱輸入任意內容。

  3. 簽發者 (URL) 部分,輸入 https://accounts.google.com

  4. 受眾部分

  1. 選擇允許的受眾

  2. 輸入 OpenAI 在向您傳遞 token 時應指明的受眾。

  1. 對於 ChatGPT 或 API:您可以填入 OpenAI API 組織 IDorg-xxx

  2. 對於 API:您可以填入特定的 API 專案 ID,以提高精細度。

GCP Workload Identity Provider edit page with Allowed audiences selected and Audience 1 entered
  1. 屬性對應部分

  1. google.subject,輸入 assertion.sub

Google Cloud attribute mapping with Google 1 google.subject mapped to OIDC 1 assertion.sub
  1. 屬性條件部分

  1. 現在,您應會在 https://console.cloud.google.com/iam-admin/workload-identity-pools 頁面中看到列出的工作負載身分集區工作負載身分供應商

  1. 工作負載身分集區 ID

GCP Workload Identity Pools page highlighting the provider ID value needed for OpenAI EKM setup
  1. 工作負載身分供應商 ID

GCP Workload Identity Provider edit page with the provider ID field highlighted

2. 確保 KMS 已啟用

前往 https://console.developers.google.com/apis/api/cloudkms.googleapis.com/overview 以啟用 KMS。您不需要在識別 OpenAI 聯合身分的同一個 GCP 專案中建立 KMS;不過,如果專案不同,至少必須在兩個專案中啟用 KMS 產品。

3. 建立新的 KMS 金鑰

  1. 前往安全性 -> 資料保護 > 金鑰管理

  2. 概覽分頁下,按一下建立金鑰環

  1. 為您的金鑰環選擇任意名稱

  2. 在用途和演算法中,選擇對稱式加密/解密

GCP Key Management Overview page with the Create Key Ring button highlighted
  1. 建立金鑰環後,它應會列在金鑰環分頁中。按一下該金鑰環。

  2. 在金鑰環詳細資料中,按一下建立金鑰

  1. 為您的金鑰選擇任意名稱

4. 為 KMS 上的加密/解密操作建立受限角色

  1. 前往 IAM & 管理員 -> 角色 -> 建立角色

  2. 為角色標題和 ID 輸入任意內容

  3. 按一下「新增權限」,然後新增以下項目

  1. cloudkms.cryptoKeyVersions.useToDecrypt

  2. cloudkms.cryptoKeyVersions.useToEncrypt

5. 將 OpenAI 的聯合身分指派給受限 KMS 角色,以進行加密/解密操作

  1. 前往 安全性 -> 資料保護 > 金鑰管理

  2. 按一下您的金鑰環名稱,然後按一下您的金鑰名稱,以前往金鑰詳細資料頁面。

  1. 按一下權限分頁,然後按一下授予存取權按鈕

Google Cloud KMS key details page with Permissions tab open and Grant Access highlighted
  1. 將 OpenAI 聯合身分指派給您先前建立的自訂角色

  1. 新增主體部分,輸入 principal://iam.googleapis.com/projects/<YOUR_GCP_PROJECT_NUMBER>/locations/global/workloadIdentityPools/<YOUR_GCP_WORKLOAD_IDENTITY_POOL>/subject/105900137572174660365

  1. 指派角色部分,選擇您在上一步為有限 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"

}'

這篇文章對你有幫助嗎?