Compartir a través de

联机终结点的身份验证和授权

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

本文介绍 Azure 机器学习联机终结点上下文中标识和权限的概念。 本文讨论支持基于角色的访问控制和权限的 Microsoft Entra ID。 Microsoft Entra ID 称为用户标识终结点标识,具体取决于其用途。

  • 用户标识是一个可以创建终结点及其部署,或者与终结点或工作区交互的 Microsoft Entra ID。 用户标识会向终结点、部署或工作区发出请求。 用户标识需要适当的权限才能对终结点或工作区执行控制平面数据平面操作。

  • 终结点标识是一个用于在部署中运行用户容器的 Microsoft Entra ID。 用户容器将终结点标识用于部署。 终结点标识还需要适当权限,以便用户容器根据需要与资源交互。 例如,终结点标识需要适当的权限才能从 Azure 容器注册表拉取映像,或与其他 Azure 服务交互。

用户标识和终结点标识具有单独的权限要求。 有关管理标识和权限的详细信息,请参阅如何对联机终结点的客户端进行身份验证

重要

仅托管联机终结点支持 Microsoft Entra ID aad_token 身份验证。 对于 Kubernetes 联机终结点,可以使用密钥或 Azure 机器学习 aml_token

用于授权的权限和范围

Azure 基于角色的访问控制 (RBAC) 允许定义和分配在特定范围具有一组允许的和/或拒绝的操作角色。 可以根据业务需求自定义这些角色和范围。 以下示例作为起点,可以根据需要进行扩展。

对于用户标识:

  • 若要管理控制平面和数据平面操作,可以使用包括权限操作 Microsoft.MachineLearningServices/workspaces/onlineEndpoints/*/actions 的内置角色 AzureML 数据科学家
  • 若要控制特定终结点的操作,请使用范围 /subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/Microsoft.MachineLearningServices/workspaces/<workspaceName>/onlineEndpoints/<endpointName>
  • 若要控制工作区中所有终结点的操作,请使用范围 /subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/Microsoft.MachineLearningServices/workspaces/<workspaceName>

对于终结点标识,为了允许用户容器读取 Blob,内置角色存储 Blob 数据读者包括权限数据操作 Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read

有关管理对 Azure 机器学习工作区的授权的详细信息,请参阅管理对 Azure 机器学习的访问权限。 有关角色定义、范围和角色分配的详细信息,请参阅 Azure RBAC。 若要了解已分配角色的范围,请参阅了解 Azure RBAC 的范围

用户标识所需的权限

使用 Microsoft 帐户(例如,使用 az login)登录到 Azure 租户时,需完成 authn 用户身份验证步骤,此步骤将确定作为用户的标识。 若要在Azure 机器学习工作区下创建联机终结点,标识需要适当的权限,也称为授权或 authz。 用户标识需要适当的权限,才能执行控制平面数据平面操作。

控制平面操作

控制平面操作控制并更改联机终结点。 这些操作包括在联机终结点和联机部署上进行的创建、读取、更新和删除 (CRUD) 操作。 对于联机终结点和部署,执行控制平面操作的请求将转到 Azure 机器学习工作区。

控制平面操作的身份验证

对于控制平面操作,可以使用 Microsoft Entra 令牌向工作区对客户端进行身份验证。 根据用例,可以从多个身份验证工作流中进行选择以获取此令牌。 用户标识还需要分配适当的 Azure RBAC 角色,才能访问资源。

控制平面操作的授权

对于控制平面操作,用户标识需要分配适当的 Azure RBAC 角色,才能访问资源。 具体而言,对于联机终结点和部署上的 CRUD 操作,用户标识需要为以下操作分配角色:

操作 所需的 Azure RBAC 角色 范围
在联机终结点和部署上执行创建/更新操作。 所有者参与者或任何允许 Microsoft.MachineLearningServices/workspaces/onlineEndpoints/write 的角色 工作区
在联机终结点和部署上执行删除操作。 所有者参与者或任何允许 Microsoft.MachineLearningServices/workspaces/onlineEndpoints/delete 的角色 工作区
通过 Azure 机器学习工作室在联机终结点和部署上执行创建/更新/删除操作 所有者参与者或任何允许 Microsoft.Resources/deployments/write 的角色 包含工作区的资源组
在联机终结点和部署上执行读取操作。 所有者参与者或任何允许 Microsoft.MachineLearningServices/workspaces/onlineEndpoints/read 的角色 工作区
从工作区提取用于调用托管和 Kubernetes 联机终结点的 Azure 机器学习令牌 (aml_token)。 所有者参与者或任何允许 Microsoft.MachineLearningServices/workspaces/onlineEndpoints/token/action 的角色 终结点
从工作区提取用于调用(托管和 Kubernetes)联机终结点的密钥。 所有者参与者或任何允许 Microsoft.MachineLearningServices/workspaces/onlineEndpoints/listKeys/action 的角色 终结点
重新生成托管和 Kubernetes 联机终结点的密钥。 所有者参与者或任何允许 Microsoft.MachineLearningServices/workspaces/onlineEndpoints/regenerateKeys/action 的角色 终结点
提取用于调用托管联机终结点的 Microsoft Entra aad_token 不需要角色 不适用*

* 登录后,可以直接从 Microsoft Entra ID 提取 Microsoft Entra aad_token,以便操作无需对工作区具有 Azure RBAC 权限。

用户标识强制访问默认机密存储区的权限

如果使用机密注入功能,并在创建终结点时设置标志以强制访问默认机密存储区,则用户标识必须有权限从工作区连接读取机密。

该终结点标识可以是系统分配的标识 (SAI),也可以是用户分配的标识 (UAI)。 使用 SAI 创建终结点并设置了强制访问默认机密存储区的标志时,则在创建终结点和部署时,用户标识必须有权限从工作区连接读取机密。 此限制可确保只有具有读取机密权限的用户标识才能授予终结点标识读取机密的权限。

如果用户标识无权限从工作区连接读取机密,但尝试使用 SAI 创建终结点或部署,而该终结点的标志设置为强制访问默认机密存储区,则会拒绝终结点或部署创建。

如果使用 UAI 创建终结点,或终结点使用 SAI,未设置强制访问默认机密存储区的标志,则用户标识不需要能够从工作区连接读取机密,即可创建终结点或部署。 在这种情况下,终结点标识不会自动被授予读取机密的权限,但仍可以通过分配适当的角色来手动授予终结点标识此权限。

无论角色分配是自动还是手动,如果在终结点或部署定义中使用机密引用映射了环境变量,则仍会触发机密检索和注入。 机密注入功能使用终结点标识来执行机密检索和注入。 有关机密注入的详细信息,请参阅“联机终结点中的机密注入”。

数据平面操作

数据平面操作不会更改联机终结点,但使用与终结点交互的数据。 数据平面操作的一个示例是向联机终结点发送评分请求并从中获取响应。 对于联机终结点和部署,执行数据平面操作的请求将转到终结点的评分 URI。

数据平面操作的身份验证

对于数据平面操作,可以从以下方法中进行选择来对客户端进行身份验证,以将请求发送到终结点的评分 URI:

  • 密钥
  • Azure 机器学习 aml_token
  • Microsoft Entra aad_token

有关如何验证客户端身份以执行数据平面操作的详细信息,请参阅如何验证联机终结点客户端的身份

数据平面操作的授权

对于数据平面操作,用户标识需要适当的 Azure RBAC 角色才能允许访问资源,前提是将终结点设置为使用 Microsoft Entra aad_token。 对于联机终结点和部署上的数据平面操作,用户标识需要分配具有以下操作的角色:

操作 所需的 Azure RBAC 角色 范围
使用 key 或 Azure 机器学习 aml_token 调用联机终结点。 不需要角色。 不适用
使用 Microsoft Entra aad_token 调用托管联机终结点。 所有者参与者或任何允许 Microsoft.MachineLearningServices/workspaces/onlineEndpoints/score/action 的角色 终结点
使用 Microsoft Entra aad_token 调用 Kubernetes 联机终结点。 Kubernetes 联机终结点不支持使用 Microsoft Entra 令牌进行数据平面操作。 不适用

终结点标识所需的权限

联机部署使用终结点标识(即与终结点关联的托管标识)运行用户容器。 终结点标识是支持 Azure RBAC 的 Microsoft Entra ID。 因此,可以将 Azure 角色分配给终结点标识,以控制执行操作所需的权限。 此终结点标识可以是 SAI 或 UAI。 可以在创建终结点时决定是使用 SAI 还是 UAI。

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

终结点标识的自动角色分配

如果终结点标识是 SAI,方便起见,则会向终结点标识分配以下角色。

角色 说明 自动角色分配的条件
AcrPull 允许终结点标识从与工作区关联的 Azure 容器注册表拉取映像 终结点标识是 SAI。
存储 Blob 数据读者 允许终结点标识从工作区的默认数据存储读取 Blob 终结点标识是 SAI。
AzureML 指标编写器(预览版) 允许终结点标识将指标写入工作区 终结点标识是 SAI。
Azure 机器学习工作区连接机密读者 允许终结点标识从工作区连接读取机密 终结点标识是 SAI,并且终结点创建具有强制访问默认机密存储区的标志。 创建终结点的用户标识还有权限从工作区连接读取机密。
  • 如果终结点标识为 SAI,并且未设置强制标志,或者用户标识没有读取机密的权限,则 Azure 机器学习工作区连接机密读者角色没有自动角色分配。 有关详细信息,请参阅“如何使用机密注入部署联机终结点”。
  • 如果终结点标识为 UAI,则 Azure 机器学习工作区连接机密读者角色没有自动角色分配。 在这种情况下,需要根据需要手动将角色分配给终结点标识。

若要详细了解 Azure 机器学习工作区连接机密读者角色,请参阅向标识分配权限