你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
适用范围:
Azure CLI ml 扩展 v2(最新版)
Python SDK azure-ai-ml v2(最新版)
联机终结点中的机密注入有助于安全地在部署中使用 API 密钥和其他机密,而无需在代码中公开它们。 本文内容:
- 为什么机密注入对于安全部署很重要
- 如何使用托管标识检索机密
- 机密注入功能如何简化该过程
最后,你将了解哪种方法最适合你的方案。
联机终结点上下文中的机密注入是从机密存储中检索机密(例如 API 密钥),并将其注入到联机部署中运行的用户容器的过程。 运行评分脚本或通过 BYOC(自带容器)部署方法引入的推理堆栈的推理服务器通过环境变量安全地访问机密。
重要说明
此功能目前处于公开预览状态。 此预览版在提供时没有附带服务级别协议,我们不建议将其用于生产工作负荷。 某些功能可能不受支持或者受限。
有关详细信息,请参阅 Microsoft Azure 预览版补充使用条款。
问题陈述
创建联机部署时,可能需要使用部署中的机密访问外部服务。 其中一些外部服务包括Microsoft Azure OpenAI 服务、Foundry Tools 和 Azure AI 内容安全。
若要使用机密,需要一种方法安全地将其传递给部署中运行的用户容器。 请勿在部署定义中包含机密,因为这种做法公开部署定义中的机密。
更好的方法是将机密存储在机密存储中,然后从部署中安全地检索机密。 但是,此方法提出了自己的挑战:部署应如何向机密存储进行身份验证以检索机密。 由于联机部署使用 终结点标识(即 托管标识)来运行用户容器,因此可以使用 Azure RBAC 来控制终结点标识的权限,并允许终结点从机密存储中检索机密。 使用此方法需要完成以下任务:
- 将正确的角色分配给终结点标识,以便它可以从机密存储中读取机密。
- 为部署实现评分逻辑,以便它使用终结点的托管标识从机密存储中检索机密。
虽然使用托管标识的这种方法是检索和注入机密的安全方法,但通过机密注入功能的机密注入进一步简化了检索工作区连接和密钥保管库的机密的过程。
与终结点关联的托管标识
联机部署使用与终结点关联的托管标识运行用户容器。 此托管标识称为终结点标识,是支持Azure RBAC的Microsoft Entra ID。 因此,可以将 Azure 角色分配给标识,以控制执行操作所需的权限。 该终结点标识可以是系统分配的标识 (SAI),也可以是用户分配的标识 (UAI)。 您决定在创建终结点时使用哪种类型的标识。
- 对于系统分配的标识,在创建终结点时系统会自动创建该标识,并自动分配具有基本权限(例如 Azure 容器注册表拉取权限和存储 Blob 数据读取者权限)的角色。
- 对于用户分配的标识,用户首先需要创建该标识,然后在创建终结点时将其与终结点相关联。 用户还负责根据需要向 UAI 分配适当的角色。
有关使用终结点的托管标识的详细信息,请参阅如何使用托管标识从终结点访问资源,以及使用托管标识与外部服务交互的示例。
终结点标识的角色分配
机密存储需要以下角色:
- 对于存储在工作区下工作区连接中的机密:
Workspace Connections提供列表机密 API(预览版),该 API 要求调用 API 的标识具有分配给该标识的Azure Machine Learning Workspace Connection Secrets Reader角色(或等效角色)。 - 对于存储在外部 Microsoft Azure Key Vault 中的机密:Key Vault 提供了获取机密版本 API,该 API 要求调用 API 的标识具有分配给该标识的
Key Vault Secrets User角色(或等效角色)。
实现机密注入
从机密存储中检索机密(如 API 密钥)后,可以通过两种方式将机密注入到联机部署中运行的用户容器中:
- 使用托管标识自行注入机密 - 实现最大控制和灵活性
- 使用机密注入功能注入机密 - 使用简化的无代码方法
选择最符合安全要求和开发工作流的方法。
这两种方法涉及两个步骤:
- 使用终结点标识从机密存储中检索机密。
- 将机密注入到用户容器中。
使用托管标识进行机密注入
在您的部署定义中,使用端点标识从密钥库调用 API。 可以在评分脚本或 BYOC 容器中运行的 shell 脚本中实现此逻辑。 有关使用托管标识实现机密注入的详细信息,请参阅 有关使用托管标识与外部服务交互的示例。
通过机密注入功能进行机密注入
若要使用机密注入功能,请将要从工作区连接或 Key Vault 引用的机密映射到部署定义中的环境变量。 此方法不需要在评分脚本或 BYOC 容器中运行的 shell 脚本中编写任何代码。 要将工作区连接或 Key Vault 中的机密映射到环境变量,必须满足以下条件:
- 在创建终结点期间,如果定义联机终结点以强制访问默认机密存储(当前工作区下的工作区连接),则创建终结点下部署的用户标识必须有权从工作区连接读取机密。
- 部署使用的终结点标识必须有权从工作区连接或 Key Vault 中读取机密,如部署定义中所引用。
注意
- 如果已成功使用 SAI 创建终结点并设置标志以强制访问默认机密存储,则终结点会自动具有工作区连接的权限。
- 如果终结点使用 UAI,或者未设置标志来强制访问默认机密存储,则终结点标识可能没有工作区连接的权限。 在这种情况下,需要手动将工作区连接的角色分配给终结点标识。
- 终结点标识不会自动接收外部密钥保管库的权限。 如果正在使用 Key Vault 作为机密存储,需要将 Key Vault 的角色手动分配给终结点标识。
有关使用机密注入的详细信息,请参阅使用机密注入(预览版)将机器学习模型部署到联机终结点。
后续步骤
了解机密注入概念后,请了解如何实现它:
- 使用机密注入进行部署 (预览版) - 在部署中实现机密注入的分步指南
- 托管联机终结点的身份验证 - 了解终结点的身份验证选项
- 联机终结点概述 - 了解联机终结点的基础知识
准备好开始了吗? 按照 部署指南执行。