先决条件
本文档假定你已经按照以下指南之一向 OpenAI 注册了外部 KMS 密钥:
关键术语
密钥轮换和密钥撤销用途不同。请根据你的使用场景选择正确的操作。
密钥轮换:为加密新数据生成新的加密材料,同时允许解密使用旧密钥加密的旧数据
密钥轮换不会影响对 OpenAI 数据的访问
密钥撤销:撤销对使用旧密钥加密的所有数据的访问权限。
密钥撤销会撤销对 OpenAI 数据的访问
如何验证你的 KMS 密钥正在被使用
你的云服务商应提供日志:
AWS - https://docs.aws.amazon.com/kms/latest/developerguide/security-logging-monitoring.html
Azure - https://learn.microsoft.com/en-us/azure/key-vault/general/howto-logging
如何轮换密钥
你可以设置自动密钥轮换
AWS - https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html
GCP - https://cloud.google.com/kms/docs/rotate-key#automatic
Azure - https://learn.microsoft.com/en-us/azure/key-vault/keys/how-to-configure-key-rotation
测试:此项更改不会影响你对 OpenAI 数据的访问
如何撤销你的密钥
有多种方法可以撤销 OpenAI 对你密钥的访问权限,即通过以下任一方式中断身份验证流程:
如果你撤销 OpenAI 角色对 KMS 密钥的访问权限
如果你移除 KMS 密钥上的加密/解密权限
如果你使用的是 AWS 密钥别名(不推荐)并切换底层 KMS ARN。此操作有时会被误认为是密钥轮换,但实际上是密钥撤销,因此除非你确定需要,否则不建议这样做。
如果你请求 OpenAI 更新用于你 ChatGPT Enterprise 工作空间的 KMS ARN
如需验证密钥撤销:
等待 1 小时,让 OpenAI 端的所有缓存条目过期,然后测试撤销
如果你使用的是 ChatGPT Enterprise:你将无法读取之前的对话记录,对话搜索不会显示之前对话的结果,也无法访问之前的自定义 GPT。
如果你使用的是 API,你将无法下载之前的批处理文件、使用之前微调的模型,也无法引用之前使用 Responses API 生成的响应。
如果你使用的是 API,你还可以立即测试密钥撤销是否已被 OpenAI 处理,并将在 1 小时内生效
创建一个管理员 API 密钥(非普通 API 密钥)
调用以下命令获取与你的工作空间或项目关联的 OpenAI 外部密钥 ID(extkey_xxx): curl -X GET -H "Authorization: Bearer $ADMIN_API_KEY" https://api.openai.com/v1/organization/external_keys
现在调用以下命令:curl -X POST -H "Authorization: Bearer $ADMIN_API_KEY" "https://api.openai.com/v1/organization/external_keys/extkey_xxx/validate"
密钥撤销的最佳实践
如果你使用的是 API
请归档那些你已使其数据不可访问的 API 项目。然后,设置一个新的 KMS 密钥,并创建一个关联新 KMS 密钥的新 API 项目。
注意:你不能更换已执行密钥撤销的旧 API 项目所关联的 KMS 密钥。你必须归档旧项目。已执行密钥撤销的项目不应继续使用。通过 API 可以非常轻松地创建新项目,因此请使用该功能。
如果你使用的是 ChatGPT Enterprise
在执行密钥撤销后,请联系 OpenAI 支持团队。
我们将与你合作创建一个新的工作空间。我们不会通过将旧工作空间更新为使用新的 KMS 密钥来复用该工作空间。这是因为,当密钥撤销按设计生效时,使用已撤销密钥加密的旧数据将无法访问。
