Azure 资源的托管标识功能消除了在代码中管理凭据的必要。 可以使用它们获取应用程序的 Microsoft Entra 令牌。 应用程序可以在访问支持 Microsoft Entra 身份验证的资源时使用该令牌。 Azure 管理标识,因此用户不必管理。
有两种类型的托管标识:系统分配和用户分配的托管标识。 系统分配的托管标识的生命周期与创建它们的资源相关联。 此标识仅限于一种资源,你可使用 Azure 基于角色的访问控制 (Azure RBAC) 来授予托管标识的访问权限。 而用户分配的托管标识可用于多个资源。
本文介绍如何使用 PowerShell 创建、列出、删除或向用户分配的托管标识分配角色。 我们使用 Azure 虚拟机(AzureVM)作为可以向其分配用户分配托管标识的示例资源。
先决条件
- 如果不熟悉 Azure 资源的托管标识,请查阅概述部分。 请务必了解系统分配的托管标识与用户分配的托管标识之间的差异。
- 如果没有 Azure 帐户,请在继续前注册免费帐户。
- 若要运行示例脚本,有两个选项:
- 使用 Azure Cloud Shell,你可使用代码块右上角的“试用”按钮打开它。
- 如下一节所述,使用 Azure PowerShell 在本地运行脚本。
在本地配置 Azure PowerShell
若要在本文中本地使用 Azure PowerShell 而不是使用 Cloud Shell,请执行以下操作:
安装最新版本的 Azure PowerShell(如果尚未安装)。
登录到 Azure。
Connect-AzAccount-
Install-Module -Name PowerShellGet -AllowPrerelease在下一步运行此命令后,可能需要
Exit退出当前 PowerShell 会话。 安装
Az.ManagedServiceIdentity模块的预发布版本,以执行本文中用户分配的托管标识操作。Install-Module -Name Az.ManagedServiceIdentity -AllowPrerelease
创建用户分配的托管标识
若要创建用户分配的托管标识,你的帐户需要托管标识参与者角色分配。
若要创建用户分配的托管标识,请使用
New-AzUserAssignedIdentity命令。ResourceGroupName参数指定创建了用户分配的托管标识的资源组。-Name参数指定其名称。将
<RESOURCE GROUP>和<USER ASSIGNED IDENTITY NAME>参数值替换为自己的值。重要
创建用户分配的托管标识时,名称必须以字母或数字开头,并且可能包含字母数字字符、连字符 (-) 和下划线 (_) 的组合。 要使虚拟机或虚拟机规模集的分配正常工作,该名称限制为 24 个字符。 有关详细信息,请参阅 FAQ 和已知问题。
New-AzUserAssignedIdentity -ResourceGroupName <RESOURCEGROUP> -Name <USER ASSIGNED IDENTITY NAME>
列出用户分配的托管标识
若要列出或读取用户分配的托管标识,你的帐户需要托管标识操作员或托管标识参与者角色分配。
若要列出用户分配的托管标识,请使用
Get-AzUserAssignedIdentity命令。-ResourceGroupName参数指定创建了用户分配托管标识的资源组。将
<RESOURCE GROUP>值替换为自己的值。Get-AzUserAssignedIdentity -ResourceGroupName <RESOURCE GROUP>在响应中,用户分配的托管标识为
"Microsoft.ManagedIdentity/userAssignedIdentities"键返回Type值。Type :Microsoft.ManagedIdentity/userAssignedIdentities
删除用户分配的托管标识
若要删除用户分配的托管标识,你的帐户需要托管标识参与者角色分配。
若要删除用户分配的托管标识,请使用
Remove-AzUserAssignedIdentity命令。-ResourceGroupName参数指定从中已创建用户分配标识的资源组。-Name参数指定其名称。将
<RESOURCE GROUP>和<USER ASSIGNED IDENTITY NAME>参数值替换为自己的值。Remove-AzUserAssignedIdentity -ResourceGroupName <RESOURCE GROUP> -Name <USER ASSIGNED IDENTITY NAME>删除用户分配的托管标识不会从将其分配到的任何资源中删除引用。 标识分配必须单独移除。
后续步骤
有关 Azure 资源的 Azure PowerShell 托管标识命令的完整列表和详细信息,请参阅 Az.ManagedServiceIdentity。