OpenAI

OpenAI / Azure EKM 整合說明

佈建 Azure 並啟用 EKM 的逐步說明

更新日期:2 hours ago

概覽

企業金鑰管理 (EKM) 可讓 OpenAI 使用由你控制的主金鑰來加密資料。為了讓 OpenAI 對你的 Key Vault 執行加密/解密作業,我們需要獲得存取權限。本文件說明如何設定你的 Azure 帳戶,讓 OpenAI 可以擔任具有 Key Vault 權限的角色。

Azure EKM flow where OpenAI EKM uses Microsoft Entra ID to access your Key Vault and master KEK

步驟

1. 在你的帳戶中為 OpenAI 建立服務主體。

  1. 取得存取 Token

az account get-access-token --resource https://graph.microsoft.com
--tenant YOUR_TENANT_ID

2. 建立服務主體 - 以下要求的 appId 是 OpenAI 的應用程式用戶端 ID。這會建立一個顯示名稱為「EKM - OpenAI Azure」的主體 - 請記住此名稱,以備後面的步驟使用。OpenAI / Azure EKM 整合說明 - 建立服務主體

curl -X POST https://graph.microsoft.com/v1.0/servicePrincipals\
-H "Authorization: Bearer $TOKEN_FROM_ABOVE" \
-H "Content-Type: application/json" \
–d '{"appId": "20a14814-5ab7-4612-a671-1382b412bf93"}'

2. 建立具有有限 KMS 存取權限的自訂角色

  1. 前往訂閱 -> 存取控制 (IAM)

  2. + 新增下拉式選單中,選取 新增自訂角色

  3. 前往 JSON 標籤,按一下「編輯」,然後新增以下內容

    1. 任何角色名稱,請記住你所選的名稱。

    2. dataActions 中的下列權限

      1. Microsoft.KeyVault/vaults/Key/encrypt/action

      2. Microsoft.KeyVault/vaults/keys/decrypt/action

      3. Microsoft.KeyVault/vaults/keys/read

        OpenAI / Azure EKM Integration Instructions Custom Role

3. 建立金鑰保存庫 + 金鑰

如果你還沒有,請在剛才建立自訂角色的相同訂閱中建立新的金鑰保存庫

在該金鑰保存庫中,建立新的金鑰:

  1. 前往「金鑰保存庫 -> 物件 -> 金鑰」,然後按一下「產生/匯入」

  2. 在「選項」下選擇產生

    Azure Key Vault Keys page with Generate/Import highlighted to add a key
  3. 選取 RSA 作為加密演算法。

  4. 你可以選取任何 RSA 金鑰大小

  5. 請提供符合以下格式的金鑰名稱:<org-xxx>--<any_name>,其中 org-xxx 是你的 OpenAI 組織 ID,你可以在 https://platform.openai.com/settings/organization/general 找到。

    Azure Key Vault key generation form with RSA selected and key name org-abcdefg--test-keyvault-key

如果你無法檢視或建立金鑰,請確認你具有 Key Vault Administrator 角色。即使你具有擁有者角色,這仍是必要動作。將指派為以下角色:

  1. 前往金鑰保管庫->存取控制 (IAM)

  2. 按一下「新增」→「新增角色指派」

    Azure Key Vault Access control (IAM) page with Add menu open to Add role assignment

4. 為 OpenAI 服務主體 + 新的自訂 KMS + 新金鑰建立角色指派

  1. 前往金鑰保管庫 -> 物件 -> 金鑰,然後按一下你所建立的金鑰資料列

  2. 前往你剛才點選的金鑰存取控制 (IAM) (不是你的金鑰保管庫)。

  3. + 新增 下拉式功能表中,選取新增角色指派

    Azure Key Vault Access control (IAM) page with Add menu open to Add role assignment
  4. 角色分頁中,選取你剛建立的自訂角色名稱。

    Azure role list filtered for openai- with the openai-azure-kms-role entry
  5. 成員分頁中:

    1. 按一下「+ 選取成員」

    2. 在搜尋列輸入「ekm -」,然後就會載入你在步驟 1 建立的 OpenAI 服務主體

      Azure role assignment Members step with EKM - OpenAI Azure Application selected as a member

5. 根據你的安全做法採取其他限制措施。

以上是 OpenAI 設定 EKM 所需的最低必要資訊。只要 OpenAI 能夠在你的 KMS 上呼叫 encrypt 和 decrypt 作業,你即可依據自身內部安全做法,自由套用額外的金鑰原則或限制。當你使用 OpenAI 呼叫如下所述的金鑰註冊端點時,我們將驗證你的設定。

完成上述步驟後

ChatGPT Enterprise

請聯絡你的 OpenAI 聯絡人,並分享以下內容:

  • "tenant_id": "<YOUR_AZURE_TENANT_UUID>"

    • 你的 Azure 租戶 UUID

  • "vault_uri": "https://<YOUR_KEYVAULT_NAME>.vault.azure.net/"

    • 你所管理的主要金鑰所在的 Azure 保存庫 URI

  • "key_name": "<YOUR_KEY_NAME>"

    • 你所管理的 Azure Key Vault 主金鑰名稱

    • 金鑰名稱的格式必須為 <org-xxx>--<any_name>,其中 org-xxx 是你的 OpenAI 組織 ID,你可以在 https://platform.openai.com/settings/organization/general 找到。

我們將為你的 ChatGPT 組織/工作區啟用 EKM。

API

向 OpenAI 註冊你的外部金鑰

請依照此 API 參考文件管理 API 中的外部金鑰中的指示

  • 首先,請在 OpenAI 組織等級註冊你的外部金鑰,這將產生格式為 extkey_xxx 的外部金鑰 ID。

  • 在這個步驟中,我們會驗證你的輸入是否有效,並確認我們可以成功驗證你的 KMS。

  • 這還不會將 EKM 新增至你的 OpenAI 專案。 

# 這會產生如下格式的外部金鑰 ID: extkey_xxx

curl -X POST \
-H "Content-type: application/json" \
-H "Authorization: Bearer $TOKEN" \
"https://api.openai.com/v1/organization/external_keys"\
-d '{
  "type": "azure",
  "name": "<ANY_FRIENDLY_NAME>",
  "tenant_id": "<YOUR_AZURE_TENANT_UUID>",
  "vault_uri": "https://<YOUR_KEYVAULT_NAME>.vault.azure.net/",
  "key_name": "<YOUR_KEY_NAME>"
}'
  • 接著,建立與外部金鑰相關聯的 OpenAI 專案。完成此動作後,EKM 將在你的專案中啟用。

  • 此 API 呼叫的回應本文將提供專案 ID (proj_xxx)

    OpenAI / Azure 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"
}'

這篇文章有幫助嗎?