联机终结点中的机密注入(预览版)

适用范围:Azure CLI ml 扩展 v2(最新版)Python SDK azure-ai-ml v2(最新版)

联机终结点上下文中的机密注入是从机密存储检索机密(例如 API 密钥),并将机密注入到联机部署内运行的用户容器中的过程。 机密最终通过环境变量进行安全访问,这些环境变量由运行评分脚本的推理服务器使用,或者由使用 BYOC(自带容器)部署方法的推理堆栈使用。

重要

此功能目前处于公开预览状态。 此预览版在提供时没有附带服务级别协议,我们不建议将其用于生产工作负荷。 某些功能可能不受支持或者受限。

有关详细信息,请参阅适用于 Azure 预览版的补充使用条款

问题陈述

创建联机部署时,可能需要使用部署中的机密访问外部服务。 其中一些外部服务包括 Azure AI 服务和 Azure AI 内容安全。

要使用机密,必须找到一种方法来安全地将其传递给部署内运行的用户容器。 不建议在部署定义中包含机密,因为这种做法会在部署定义中公开机密。

更好的方法是将机密存储在机密存储中,然后从部署中安全地检索机密。 但是,此方法提出了自己的挑战:部署应如何向机密存储进行身份验证以检索机密。 由于联机部署使用终结点标识托管标识)运行用户容器,因此可以使用Azure RBAC控制终结点标识的权限,并允许终结点从机密存储中检索机密。 使用此方法需要执行以下任务:

  • 将正确的角色分配给终结点标识,以便它可以从机密存储中读取机密。
  • 为部署实现评分逻辑,以便它使用终结点的托管标识从机密存储中检索机密。

虽然使用托管标识的这种方法是检索和注入机密的安全方法,但通过机密注入功能的机密注入进一步简化了检索工作区连接密钥保管库的机密的过程。

与终结点关联的托管标识

联机部署使用与终结点关联的托管标识运行用户容器。 此托管标识称为终结点标识,是支持Azure RBACMicrosoft Entra ID。 因此,可以将 Azure 角色分配给标识,以控制执行操作所需的权限。 该终结点标识可以是系统分配的标识 (SAI),也可以是用户分配的标识 (UAI)。 可以确定在创建终结点时要使用的此类标识中的哪一种。

  • 对于系统分配的标识,在创建终结点时系统会自动创建该标识,并自动分配具有基本权限(例如 Azure 容器注册表拉取权限和存储 Blob 数据读取者权限)的角色
  • 对于用户分配的标识,用户首先需要创建该标识,然后在创建终结点时将其与终结点相关联。 用户还负责根据需要向 UAI 分配适当的角色。

有关使用终结点的托管标识的详细信息,请参阅如何使用托管标识从终结点访问资源,以及使用托管标识与外部服务交互的示例。

终结点标识的角色分配

机密存储需要以下角色:

  • 对于存储在工作区下工作区连接中的机密Workspace Connections提供列表机密 API(预览版),该 API 要求调用 API 的标识具有分配给该标识的Azure Machine Learning Workspace Connection Secrets Reader角色(或等效角色)。
  • 对于存储在外部 Azure Key Vault 中的机密:Key Vault 提供了一个获取机密版本 API,该 API 要求调用该 API 的标识分配有 Key Vault Secrets User 角色(或等效角色)。

实现机密注入

从机密存储中检索 API 密钥等机密后,可通过两种方法将其注入到联机部署内运行的用户容器中:

  • 使用托管标识自行注入机密。
  • 使用机密注入功能注入机密。

这两种方法都涉及两个步骤:

  1. 首先,使用终结点标识从机密存储中检索机密。
  2. 其次,将机密注入到用户容器中。

使用托管标识进行机密注入

在部署定义中,需要使用终结点标识从机密存储中调用 API。 可以在评分脚本或 BYOC 容器中运行的 shell 脚本中实现此逻辑。 要使用托管标识实现机密注入,请参阅使用托管标识与外部服务交互的示例

通过机密注入功能进行机密注入

要使用机密注入功能,请在部署定义中将工作区连接或 Key Vault 中的机密(要引用)映射到环境变量。 此方法不需要在评分脚本或 BYOC 容器中运行的 shell 脚本中编写任何代码。 要将工作区连接或 Key Vault 中的机密映射到环境变量,必须满足以下条件:

  • 在创建终结点期间,如果定义了联机终结点以强制访问默认机密存储(当前工作区下的工作区连接),在终结点下创建部署的用户标识应有权从工作区连接中读取机密。
  • 部署使用的终结点标识应有权从工作区连接或 Key Vault 中读取机密,如部署定义中所引用。

注意

  • 如果使用 SAI 成功创建终结点,并且标志设置为强制访问默认机密存储,终结点会自动具有工作区连接的权限。
  • 如果终结点使用了 UAI,或者未设置用于强制访问默认机密存储的标志,终结点标识可能没有工作区连接的权限。 在这种情况下,需要手动将工作区连接的角色分配给终结点标识。
  • 终结点标识不会自动接收外部 Key Vault 的权限。 如果正在使用 Key Vault 作为机密存储,需要将 Key Vault 的角色手动分配给终结点标识。

有关使用机密注入的详细信息,请参阅使用机密注入(预览版)将机器学习模型部署到联机终结点