OpenAI

OpenAI 企业密钥管理(EKM)概述

了解 EKM 的工作原理、支持的提供商,以及如何开始使用

更新于:13 days ago

概览

借助企业密钥管理 (EKM),你可以使用自有外部密钥管理系统 (KMS) 管理的密钥,对存储在 OpenAI 中的客户内容进行加密。该功能适用于 ChatGPT Enterprise 和 API。

OpenAI 支持通过 AWS KMSGoogle Cloud (GCP) 和 Azure Key Vault 中的外部账户实现自带密钥 (BYOK) 加密。目前,EKM 实施仅适用于配有专属 OpenAI 客户代表的 Enterprise 和 Edu 工作空间。

OpenAI EKM 加密的工作原理

总体流程

  1. 我们会为你的云服务提供商生成一个数据加密密钥 (DEK)

  2. 你的云 KMS 管理一个主密钥加密密钥 (KEK),该密钥可存储在你的云环境中,也可存储在外部。具体实施方式由你决定。

  3. 我们请求你的云服务对 DEK 进行加密,以获得已加密的 DEK (eDEK)。若 KEK 存储在外部,你的云服务只会额外访问一次你的外部存储,此步骤对 OpenAI 不可见。

加密

加密时,你的数据会使用 DEK 加密,而 eDEK 会作为元数据存储在文件中。

EKM encryption flow where OpenAI requests a DEK from your KMS, encrypts data, and stores encrypted data with eDEK

解密

解密时,我们会请求你的云 KMS 将 eDEK 解密为 DEK,并使用 DEK 解密数据。

EKM decryption flow where OpenAI requests a DEK from your KMS to decrypt encrypted data for download

关键术语

  • 数据加密密钥 (DEK) — 用于加密你的数据的密钥。

  • 已加密的数据加密密钥 (eDEK) — 由你的 KMS 生成的已加密 DEK

  • 密钥加密密钥 (KEK) — 由你管理的主密钥,用于将 DEK 加密为 eDEK,以及将 eDEK 解密为 DEK。此密钥始终位于 OpenAI 系统之外。

实施总体要求

在你的云服务商中

  1. 在你的云 KMS (Azure、AWS 或 GCP)中创建新密钥

  2. 针对该 KMS 创建一项自定义受限策略,并授予 Encrypt/Decrypt 权限

  3. 为 OpenAI 创建信任策略 (AWS)、工作负载身份 (GCP) 或服务主体 (Azure)

  4. 为 OpenAI 分配一个具有受限策略的角色,以访问你的 KMS

在 OpenAI 平台中

ChatGPT Enterprise

创建一个用于测试的 ChatGPT 沙盒工作空间。

API

在你的 OpenAI 控制台中,创建一个将应用加密的新项目。

提供商特定功能

对于 AWS,OpenAI 将:

  • 使用 ExternalID 调用 AssumeRole

对于 GCP,OpenAI 将:

  • 从 OpenAI GCP 账号调用你的 STS 端点

  • 使用 GCP 访问令牌调用你的 KMS 的 encrypt/decrypt 操作。

对于 Azure,OpenAI 将:

  • 为你的 Azure 租户中的保管库请求访问令牌

  • 使用该访问令牌调用你的 Key Vault 的 encrypt/decrypt 操作。

你需要从 OpenAI 获取的信息

身份验证

你需要配置以识别 OpenAI 面向 AWS 和 GCP 的联合身份令牌。对于 Azure,你需要识别 OpenAI 用于其应用注册的应用 ID。

身份验证参数概要

OpenAI AWS 主体arn:aws:iam::790389265272:role/EnterpriseKeyManagement
OpenAI GCP 服务账号 ID105900137572174660365
OpenAI Azure 应用 ID20a14814-5ab7-4612-a671-1382b412bf93

根据你的云服务提供商,实施过程中需要提供的信息如下

  • 对于 AWS,你需要设置一项可识别以下信息的信任策略

    • OpenAI 的主体(包含账号和角色)

    • 你的 OpenAI 项目 ID(即 ExternalID)

  • 对于 GCP,你需要设置一个可识别以下信息的工作负载身份

    • OpenAI 的服务账号 ID

    • 你的 OpenAI 项目 ID(即受众)

  • 对于 Azure,你需要在租户中为 OpenAI 的应用注册项创建一个服务主体

授权

你需要创建一项策略,允许 OpenAI 的身份对你的 KMS 进行有限访问。

AWSGCPAzure
kms:Decryptkms:Encryptcloudkms.cryptoKeyVersions.useToDecryptcloudkms.cryptoKeyVersions.useToEncryptMicrosoft.KeyVault/vaults/keys/encrypt/actionMicrosoft.KeyVault/vaults/keys/decrypt/action

其他

在 Azure 中,对于“密钥类型(密钥加密算法)”,请选择 RSA 而非 EC。

OpenAI 需要你提供的信息

请按照本文档中的说明,向 OpenAI 注册你的 KMS。以下是你需要提供的参数摘要。

  1. 身份验证相关

    1. AWS

      1. IAM 角色 ARN — 供 OpenAI 代入的角色(示例:arn:aws:iam::123456789:role/role-name)

      2. ExternalID — 你的 OpenAI 组织 ID

    2. GCP

      1. 工作负载身份项目编号(示例:123456789)

      2. 工作负载身份池 ID

      3. 工作负载身份提供方 ID

      4. 允许的受众:你的 OpenAI 组织 ID

    3. Azure

      1. 租户 ID

AWSGCPAzure
身份验证相关租户 ID
KMS 相关KMS ARN —(示例:arn:aws:kms:REGION:ACCOUNT_NUMBER:key:KEY_UUID)KMS 项目 ID(示例:adjective-noun-12345)KMS 密钥环名称KMS 密钥名称KMS 密钥位置(示例:us-east1)保管库 URI(示例:https://your-vault-name.vault.azure.net/)密钥名称

向 OpenAI 注册 KMS 后,请继续按照文档说明,在 API 项目中启用你的 EKM 配置。请创建一个新的 OpenAI API 项目用于测试。

各提供商的实施指南

如需分步指导,请参阅下方对应链接。请注意,这些内容主要聚焦于与 OpenAI 的集成要求,并不旨在作为涵盖你完整环境的全面指南

启用 EKM 后不支持的功能

在此初始版本中,如果启用 EKM,以下功能将不可用:

  • 支持同步的应用

  • 非正式发布的功能(即仍处于测试版/alpha 版的任何功能)

这篇文章对你有帮助吗?