概覽
企業金鑰管理 (EKM) 可讓 OpenAI 使用您控制的主要金鑰加密資料。為了讓 OpenAI 在您的 Key Vault 上呼叫加密/解密操作,我們需要獲授予存取權。本文說明如何設定您的 Azure 帳戶,讓 OpenAI 可擔任具有 Key Vault 權限的角色。

步驟
1. 在您的帳戶中為 OpenAI 建立服務主體
取得存取 token
az account get-access-token --resource https://graph.microsoft.com
--tenant YOUR_TENANT_ID建立服務主體 — 以下要求中的 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 存取權限
前往 訂用帳戶 -> 存取控制 (IAM)
在 + 新增 下拉式選單中,選擇新增自訂角色
前往 JSON 分頁,按一下「編輯」,並加入以下內容:
任何角色名稱均可;請記住您選擇的名稱
在 dataActions 中加入以下權限:
Microsoft.KeyVault/vaults/keys/encrypt/actionMicrosoft.KeyVault/vaults/keys/decrypt/actionMicrosoft.KeyVault/vaults/keys/read

3. 建立 Key Vault + 金鑰
如果您尚未有 Key Vault,請在剛建立自訂角色的同一訂用帳戶中建立一個新的 Key Vault。
在該 Key Vault 中建立新的金鑰:
前往 Key Vault -> 物件 -> 金鑰,然後按一下「產生/匯入」
在「選項」下選擇 產生

選擇 RSA 作為加密演算法。
您可以選擇任何 RSA 金鑰大小
提供符合以下格式的金鑰名稱:
<org-xxx>--<any_name>,其中org-xxx是您的 OpenAI 組織 ID,可在 https://platform.openai.com/settings/organization/general 找到

如果您無法檢視或建立金鑰,請確保您具有 Key Vault Administrator 角色。即使您擁有 Owner 角色,也需要此角色。若要獲指派此角色:
前往 Key Vault -> 存取控制 (IAM)
按一下 新增 -> 新增角色指派

4. 為 OpenAI 服務主體 + 新的自訂 KMS + 新金鑰建立角色指派
前往 Key Vault -> 物件 -> 金鑰,然後按一下您建立的金鑰所在列
前往您剛剛按下的金鑰的 存取控制 (IAM)(不是您的 Key Vault)。
在 + 新增 下拉式選單中,選擇新增角色指派

在角色分頁中,選擇您剛建立的自訂角色名稱。

在成員分頁中:
按一下「+ 選取成員」
在搜尋列輸入 「ekm -」,然後應會載入您在步驟 1 建立的 OpenAI 服務主體

5. 按照您自己的安全實務套用任何其他限制
以上是 OpenAI 設定 EKM 所需的最低資訊。只要 OpenAI 能夠在您的 KMS 上呼叫加密和解密操作,您可按照自己的內部安全實務套用其他金鑰政策或限制。當您呼叫下文所述的 OpenAI 金鑰註冊端點時,我們會驗證您的設定。
完成上述步驟後
ChatGPT Enterprise
請聯絡您的 OpenAI 聯絡人並分享以下資料:
"tenant_id": "<YOUR_AZURE_TENANT_UUID>"
"vault_uri": "https://<YOUR_KEYVAULT_NAME>.vault.azure.net/"
"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 參考中的指示操作:Management API 中的外部金鑰
首先,在 OpenAI 組織層級註冊您的外部金鑰,這會產生格式為 extkey_xxx 的外部金鑰 ID
在此步驟中,我們會驗證您的輸入有效,並且我們可向您的 KMS 進行驗證。
這尚不會將 EKM 加入您的 OpenAI 專案。
# This generates an external key ID of the form 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)
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"
}'