概覽
企業金鑰管理 (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_ID2. 建立服務主體 - 以下要求的 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/Key/encrypt/action
Microsoft.KeyVault/vaults/keys/decrypt/action
Microsoft.KeyVault/vaults/keys/read

3. 建立金鑰保存庫 + 金鑰
如果你還沒有,請在剛才建立自訂角色的相同訂閱中建立新的金鑰保存庫
在該金鑰保存庫中,建立新的金鑰:
前往「金鑰保存庫 -> 物件 -> 金鑰」,然後按一下「產生/匯入」
在「選項」下選擇產生

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

如果你無法檢視或建立金鑰,請確認你具有 Key Vault Administrator 角色。即使你具有擁有者角色,這仍是必要動作。將指派為以下角色:
前往金鑰保管庫->存取控制 (IAM)
按一下「新增」→「新增角色指派」

4. 為 OpenAI 服務主體 + 新的自訂 KMS + 新金鑰建立角色指派。
前往金鑰保管庫 -> 物件 -> 金鑰,然後按一下你所建立的金鑰資料列
前往你剛才點選的金鑰的存取控制 (IAM) (不是你的金鑰保管庫)。
在 + 新增 下拉式功能表中,選取新增角色指派

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

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

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"
}'