概覽
Enterprise Key Management (EKM)讓你可在 OpenAI 使用由你自家外部 Key Management System (KMS)管理的金鑰,為客戶內容加密,適用於 ChatGPT Enterprise 及 API。
OpenAI 支援在 AWS KMS、Google Cloud(GCP)及 Azure Key Vault 的外部帳戶中使用自攜金鑰(BYOK)加密。
目前,EKM 只限適用於擁有指定 OpenAI 客戶代表的 Enterprise 及 Edu 工作區。
OpenAI EKM 加密如何運作
頂層流程
我們會為你的雲端供應商產生一個資料加密金鑰(DEK)。
你的雲端 KMS 會管理一個主金鑰加密金鑰(KEK),可儲存在你的雲端內或外部。實作方式由你決定。
我們會要求你的雲端加密 DEK,以取得已加密 DEK(eDEK)。如果你的 KEK 儲存在外部,你的雲端只會額外跳轉到外部儲存位置,這一步對 OpenAI 不透明。
加密
加密時,你的資料會使用 DEK 加密,而 eDEK 會作為檔案的中繼資料儲存。

解密
解密時,我們會要求你的雲端 KMS 將 eDEK 解密為 DEK,然後我們會使用 DEK 解密資料。

主要術語
Data Encryption Key (DEK) - 用來加密你資料的金鑰。
Encrypted Data Encryption Key (eDEK) - 由你的 KMS 產生的已加密 DEK
Key Encryption Key (KEK) - 由你管理的主金鑰,用於將 DEK 加密為 eDEK,以及將 eDEK 解密為 DEK。此金鑰會一直存放於 OpenAI 系統之外。
實作的高層要求
在你的雲端供應商環境中
在你的雲端 KMS (Azure、AWS 或 GCP)中建立新金鑰
建立具 Encrypt/Decrypt 權限的自訂、受限政策
為 OpenAI 建立 trust policy (AWS)、workload identity (GCP)或 service principal (Azure)
向 OpenAI 指派具受限政策的角色,以存取你的 KMS
在 OpenAI 平台中
ChatGPT Enterprise
請建立一個沙盒 ChatGPT 工作區作測試用途。
API
請在你的 OpenAI 控制台中建立一個將套用加密的新專案。
供應商特定功能
對 AWS 而言,OpenAI 會:
使用 ExternalID 呼叫 AssumeRole
對 GCP 而言,OpenAI 會:
從 OpenAI GCP 帳戶呼叫你的 STS endpoint
使用 GCP 存取 token 在你的 KMS 上呼叫 encrypt/decrypt。
對 Azure 而言,OpenAI 會:
為你的 Azure 租戶保管庫請求存取 token
使用該存取 token 在你的 Key Vault 上呼叫 encrypt/decrypt。
你需要從 OpenAI 取得的資料
驗證
你需要識別 OpenAI 用於 AWS 和 GCP 的聯合身分 token。至於 Azure,你需要識別 OpenAI 應用程式註冊的 application id。
驗證參數摘要
| OpenAI AWS principal | arn:aws:iam::790389265272:role/EnterpriseKeyManagement |
| OpenAI GCP 服務帳戶 ID | 105900137572174660365 |
| OpenAI Azure 應用程式 ID | 20a14814-5ab7-4612-a671-1382b412bf93 |
按你的雲端供應商而定,實作時所需資料
如使用 AWS,你必須設定可識別以下項目的 trust policy:
OpenAI 的 principal(帳戶號碼 + 角色)
作為你的 OpenAI 專案 ID 的 ExternalID
如使用 GCP,你必須設定可識別以下項目的 workload identity:
OpenAI 的服務帳戶 ID
作為你的 OpenAI 專案 ID 的 audience
如使用 Azure,你必須在 Azure 租戶中為 OpenAI 的應用程式註冊建立一個 service principal
請為 OpenAI 的 application client id 建立一個:20a14814-5ab7-4612-a671-1382b412bf9
你可透過向 https://graph.microsoft.com/v1.0/servicePrincipals 端點發出請求來完成。
授權
你需要建立一項政策,容許 OpenAI 的身分以受限方式存取你的 KMS。
| AWS | GCP | Azure |
| kms:Decryptkms:Encrypt | cloudkms.cryptoKeyVersions.useToDecryptcloudkms.cryptoKeyVersions.useToEncrypt | Microsoft.KeyVault/vaults/keys/encrypt/actionMicrosoft.KeyVault/vaults/keys/decrypt/action |
其他
在 Azure 中,金鑰類型(key encryption algorithm)請選擇 RSA,而不是 EC。
OpenAI 需要你提供的資料
請按照此文件中的指示,向 OpenAI 註冊你的 KMS。以下是你需要提供的參數摘要。
與驗證相關
AWS
IAM Role ARN - 供 OpenAI 承擔的角色(例:arn:aws:iam::123456789:role/role-name)
ExternalID - 你的 OpenAI 組織 ID
GCP
Workload Identity Project Number(例:123456789)
Workload Identity Pool ID
Workload Identity Provider ID
Allowed audience: 你的 OpenAI 組織 ID
Azure
Tenant ID
| AWS | GCP | Azure | |
| 與驗證相關 | Tenant ID | ||
| 與 KMS 相關 | KMS ARN -(例:arn:aws:kms:REGION:ACCOUNT_NUMBER:key:KEY_UUID) | KMS Project ID(例:adjective-noun-12345)KMS key ring nameKMS key nameKMS key location(例:us-east1) | Vault URI (例:https://your-vault-name.vault.azure.net/)Key Name |
完成向 OpenAI 註冊 KMS 後,請繼續按照文件中的指示,在 API 專案上啟用你的 EKM 設定。請建立一個新的 OpenAI API 專案作測試用途。
供應商專用實作指南
如需逐步指引,請參閱下方相應連結。請注意,這些內容聚焦於與 OpenAI 整合的要求,並非旨在作為你的完整環境之全面指南
啟用 EKM 後不支援的功能
在此初始版本中,如啟用 EKM,以下功能將不可用:
具同步功能的 Apps
尚未正式推出的功能(即任何仍處於 beta/alpha 的功能)
