管理用户分配的托管标识
Azure 资源的托管标识无需在代码中管理凭据。 可以使用它们获取应用程序的 Microsoft Entra 令牌。 应用程序可以在访问支持 Microsoft Entra 身份验证的资源时使用该令牌。 Azure 管理标识,因此用户不必管理。
有两种类型的托管标识:系统分配和用户分配的托管标识。 系统分配的托管标识的生命周期与创建它们的资源相关联。 此标识仅限于一种资源,你可使用 Azure 基于角色的访问控制 (Azure RBAC) 来授予托管标识的访问权限。 而用户分配的托管标识可用于多个资源。 若要详细了解托管标识,请参阅什么是 Azure 资源的托管标识?。
本文介绍如何使用 Azure 门户创建、列出和删除用户分配的托管标识以及如何为其分配角色。
先决条件
- 如果不熟悉 Azure 资源的托管标识,请查阅概述部分。 请务必了解系统分配的托管标识与用户分配的托管标识之间的差异。
- 如果没有 Azure 帐户,请在继续前注册免费帐户。
创建用户分配的托管标识
提示
本文中的步骤可能因开始使用的门户而略有不同。
若要创建用户分配的托管标识,你的帐户需要托管标识参与者角色分配。
登录 Azure 门户。
在搜索框中输入“托管标识”。 在“服务”下选择“托管标识”。
选择“添加”,然后在“创建用户分配的托管标识”窗格中的以下框中输入值 :
- 订阅:选择要在其下创建用户分配的托管标识的订阅。
- 资源组:选择要在其中创建用户分配的托管标识的资源组,或选择“新建”来创建新资源组。
- 区域:选择用于部署用户分配的托管标识的区域,例如“美国西部”。
- 名称:这是用户分配的托管标识的名称,例如 UAI1。
重要
创建用户分配的托管标识时,名称必须以字母或数字开头,并且可能包含字母数字字符、连字符 (-) 和下划线 (_) 的组合。 要使虚拟机或虚拟机规模集的分配正常工作,该名称限制为 24 个字符。 有关详细信息,请参阅 FAQ 和已知问题。
选择“查看 + 创建”以查看更改。
选择“创建”。
列出用户分配的托管标识
若要列出或读取用户分配的托管标识,你的帐户需要具有托管标识操作员或托管标识参与者角色分配。
登录 Azure 门户。
在搜索框中输入“托管标识”。 在“服务”下选择“托管标识”。
这会返回一个列表,其中包含订阅中的用户分配的托管标识。 要查看用户分配的托管标识的详细信息,请选择其名称。
你现在可以查看有关托管标识的详细信息,如下图所示。
删除用户分配的托管标识
若要删除用户分配的托管标识,你的帐户需要托管标识参与者角色分配。
删除用户分配的标识不会将其从 VM 或其他已分配给的资源中删除。 要从 VM 中删除用户分配的标识,请参阅从 VM 中删除用户分配的托管标识。
登录 Azure 门户。
选择用户分配的托管标识,然后选择“删除”。
在确认框下,选择“是”。
管理用户分配的托管标识的访问权限
在某些环境中,管理员选择限制谁可以管理用户分配的托管标识。 管理员可以使用内置 RBAC 角色来实现此限制。 可以使用这些角色授予组织中用户或组对用户分配的托管标识的权限。
登录 Azure 门户。
在搜索框中输入“托管标识”。 在“服务”下选择“托管标识”。
这会返回一个列表,其中包含订阅中的用户分配的托管标识。 选择“要管理的用户分配托管标识”。
选择“访问控制 (IAM)”。
选择“添加角色分配”。
在“添加角色分配”窗格中,选择要分配的角色,然后选择“下一步”。
选择应向其分配角色的人。
注意
有关向托管标识分配角色的信息,请参阅使用 Azure 门户为托管标识分配资源访问权限
本文介绍如何使用 Azure CLI 创建、列出和删除用户分配的托管标识以及如何为其分配角色。
先决条件
- 如果不熟悉 Azure 资源的托管标识,请查阅概述部分。 请务必了解系统分配的托管标识与用户分配的托管标识之间的差异。
- 如果没有 Azure 帐户,请在继续前注册免费帐户。
在 Azure Cloud Shell 中使用 Bash 环境。 有关详细信息,请参阅 Azure Cloud Shell 中的 Bash 快速入门。
如需在本地运行 CLI 参考命令,请安装 Azure CLI。 如果在 Windows 或 macOS 上运行,请考虑在 Docker 容器中运行 Azure CLI。 有关详细信息,请参阅如何在 Docker 容器中运行 Azure CLI。
如果使用的是本地安装,请使用 az login 命令登录到 Azure CLI。 若要完成身份验证过程,请遵循终端中显示的步骤。 有关其他登录选项,请参阅使用 Azure CLI 登录。
出现提示时,请在首次使用时安装 Azure CLI 扩展。 有关扩展详细信息,请参阅使用 Azure CLI 的扩展。
运行 az version 以查找安装的版本和依赖库。 若要升级到最新版本,请运行 az upgrade。
重要
若要在通过 CLI 使用应用服务主体时修改用户权限,必须在 Azure Active Directory Graph API 中为服务主体提供更多权限,因为 CLI 的某些部分针对图形 API 执行 GET 请求。 否则,你可能最终会收到“权限不足,无法完成操作”消息。 若要执行此步骤,请进入 Microsoft Entra 中的“应用注册”,依次选择你的应用、“API 权限”,然后向下滚动并选择“Azure Active Directory Graph”。 从那里选择“应用程序权限”,然后添加适当的权限。
创建用户分配的托管标识
若要创建用户分配的托管标识,你的帐户需要托管标识参与者角色分配。
使用 az identity create 命令创建用户分配的托管标识。 -g
参数指定创建了用户分配的托管标识的资源组。 -n
参数指定其名称。 将 <RESOURCE GROUP>
和 <USER ASSIGNED IDENTITY NAME>
参数值替换为自己的值。
重要
创建用户分配的托管标识时,名称必须以字母或数字开头,并且可能包含字母数字字符、连字符 (-) 和下划线 (_) 的组合。 要使虚拟机或虚拟机规模集的分配正常工作,该名称限制为 24 个字符。 有关详细信息,请参阅 FAQ 和已知问题。
az identity create -g <RESOURCE GROUP> -n <USER ASSIGNED IDENTITY NAME>
列出用户分配的托管标识
若要列出或读取用户分配的托管标识,你的帐户需要托管标识操作员或托管标识参与者角色分配。
若要列出用户分配的托管标识,请使用 az identity list 命令。 将 <RESOURCE GROUP>
值替换为自己的值。
az identity list -g <RESOURCE GROUP>
在 JSON 响应中,用户分配的托管标识为 type
键返回 "Microsoft.ManagedIdentity/userAssignedIdentities"
值。
"type": "Microsoft.ManagedIdentity/userAssignedIdentities"
删除用户分配的托管标识
若要删除用户分配的托管标识,你的帐户需要托管标识参与者角色分配。
若要删除用户分配的托管标识,请使用 az identity delete 命令。 -n 参数指定其名称。 -g 参数指定创建了用户分配托管标识的资源组。 将 <USER ASSIGNED IDENTITY NAME>
和 <RESOURCE GROUP>
参数值替换为自己的值。
az identity delete -n <USER ASSIGNED IDENTITY NAME> -g <RESOURCE GROUP>
注意
删除用户分配的托管标识不会从将其分配到的任何资源中删除引用。 使用 az vm/vmss identity remove
命令从 VM 或虚拟机规模集中删除这些标识。
后续步骤
有关 Azure CLI 标识命令的完整列表,请参阅 az identity。
有关如何向 Azure VM 分配用户分配的托管标识的信息,请参阅使用 Azure CLI 在 Azure VM 上配置 Azure 资源的托管标识。
了解如何使用托管标识的工作负荷标识联合身份验证访问受 Microsoft Entra 保护的资源,而无需管理机密。
本文介绍如何使用 PowerShell 创建、列出和删除用户分配的托管标识以及如何为其分配角色。
先决条件
- 如果不熟悉 Azure 资源的托管标识,请查阅概述部分。 请务必了解系统分配的托管标识与用户分配的托管标识之间的差异。
- 如果没有 Azure 帐户,请在继续前注册免费帐户。
- 若要运行示例脚本,有两个选项:
- 使用 Azure Cloud Shell,你可使用代码块右上角的“试用”按钮打开它。
- 如下一节所述,使用 Azure PowerShell 在本地运行脚本。
本文将介绍如何使用 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-AzUserAssigned] 命令。 -ResourceGroupName
参数指定创建了用户分配托管标识的资源组。 将 <RESOURCE GROUP>
值替换为自己的值。
Get-AzUserAssignedIdentity -ResourceGroupName <RESOURCE GROUP>
在响应中,用户分配的托管标识为 Type
键返回 "Microsoft.ManagedIdentity/userAssignedIdentities"
值。
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。
了解如何使用托管标识的工作负荷标识联合身份验证访问受 Microsoft Entra 保护的资源,而无需管理机密。
本文将使用 Azure 资源管理器创建用户分配的托管标识。
先决条件
- 如果不熟悉 Azure 资源的托管标识,请查阅概述部分。 请务必了解系统分配的托管标识与用户分配的托管标识之间的差异。
- 如果没有 Azure 帐户,请在继续前注册免费帐户。
不能使用资源管理器模板来列出和删除用户分配的托管标识。 请参阅以下文章来创建和列出用户分配的托管标识:
模板创建和编辑
资源管理器模板有助于部署由 Azure 资源组定义的新资源或已修改资源。 有多种可用于执行模板编辑和部署的方法(包括本地方法和基于门户的方法)。 方法:
- 使用 Azure 市场中的自定义模板从头开始创建模板,或在现有常见模板或快速启动模板的基础之上操作。
- 通过导出模板从现有资源组派生。 可以从原始部署或部署当前状态导出它们。
- 使用本地 JSON 编辑器(例如 VS Code),然后使用 PowerShell 或 Azure CLI 进行上传和部署。
- 使用 Visual Studio Azure 资源组项目创建和部署模板。
创建用户分配的托管标识
若要创建用户分配的托管标识,你的帐户需要托管标识参与者角色分配。
若要创建用户分配的托管标识,请使用以下模板。 将 <USER ASSIGNED IDENTITY NAME>
值替换为自己的值。
重要
创建用户分配的托管标识时,名称必须以字母或数字开头,并且可能包含字母数字字符、连字符 (-) 和下划线 (_) 的组合。 要使虚拟机或虚拟机规模集的分配正常工作,该名称限制为 24 个字符。 有关详细信息,请参阅 FAQ 和已知问题。
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"resourceName": {
"type": "string",
"metadata": {
"description": "<USER ASSIGNED IDENTITY NAME>"
}
}
},
"resources": [
{
"type": "Microsoft.ManagedIdentity/userAssignedIdentities",
"name": "[parameters('resourceName')]",
"apiVersion": "2018-11-30",
"location": "[resourceGroup().location]"
}
],
"outputs": {
"identityName": {
"type": "string",
"value": "[parameters('resourceName')]"
}
}
}
后续步骤
若要使用资源管理器模板向 Azure VM 分配用户分配的托管标识,请参阅使用模板在 Azure VM 上配置 Azure 资源的托管标识。
了解如何使用托管标识的工作负荷标识联合身份验证访问受 Microsoft Entra 保护的资源,而无需管理机密。
本文将介绍如何使用 REST 创建、列出和删除用户分配的托管标识。
先决条件
- 如果不熟悉 Azure 资源的托管标识,请查阅概述部分。 请务必了解系统分配的托管标识与用户分配的托管标识之间的差异。
- 如果没有 Azure 帐户,请在继续前注册免费帐户。
- 可在云中或在本地运行本文中的所有命令:
- 若要在云中运行,请使用 Azure Cloud Shell。
- 若要在本地运行,请安装 curl 和 Azure CLI。
本文介绍如何使用 CURL 创建、列出和删除用户分配的托管标识以进行 REST API 调用。
获取持有者访问令牌
如果在本地运行,请通过 Azure CLI 登录到 Azure。
az login
使用 az account get-access-token 获取访问令牌。
az account get-access-token
创建用户分配的托管标识
若要创建用户分配的托管标识,你的帐户需要托管标识参与者角色分配。
重要
创建用户分配的托管标识时,名称必须以字母或数字开头,并且可能包含字母数字字符、连字符 (-) 和下划线 (_) 的组合。 要使虚拟机或虚拟机规模集的分配正常工作,该名称限制为 24 个字符。 有关详细信息,请参阅 FAQ 和已知问题。
curl 'https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroup
s/<RESOURCE GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<USER ASSIGNED IDENTITY NAME>?api-version=2015-08-31-preview' -X PUT -d '{"loc
ation": "<LOCATION>"}' -H "Content-Type: application/json" -H "Authorization: Bearer <ACCESS TOKEN>"
PUT https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroup
s/<RESOURCE GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<USER ASSIGNED IDENTITY NAME>?api-version=2015-08-31-preview HTTP/1.1
请求标头
请求标头 | 说明 |
---|---|
Content-Type | 必需。 设置为 application/json 。 |
授权 | 必需。 设置为有效的 Bearer 访问令牌。 |
请求正文
名称 | 说明 |
---|---|
位置 | 必需。 资源位置。 |
列出用户分配的托管标识
若要列出或读取用户分配的托管标识,你的帐户需要托管标识操作员或托管标识参与者角色分配。
curl 'https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities?api-version=2015-08-31-preview' -H "Authorization: Bearer <ACCESS TOKEN>"
GET https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities?api-version=2015-08-31-preview HTTP/1.1
请求标头 | 说明 |
---|---|
Content-Type | 必需。 设置为 application/json 。 |
授权 | 必需。 设置为有效的 Bearer 访问令牌。 |
删除用户分配的托管标识
若要删除用户分配的托管标识,你的帐户需要托管标识参与者角色分配。
注意
删除用户分配的托管标识不会从将其分配到的任何资源中删除引用。 要使用 CURL 从 VM 中删除用户分配的托管标识,请参阅从 Azure VM 中删除用户分配的标识。
curl 'https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroup
s/<RESOURCE GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<USER ASSIGNED IDENTITY NAME>?api-version=2015-08-31-preview' -X DELETE -H "Authorization: Bearer <ACCESS TOKEN>"
DELETE https://management.azure.com/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/TestRG/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<USER ASSIGNED IDENTITY NAME>?api-version=2015-08-31-preview HTTP/1.1
请求标头 | 说明 |
---|---|
Content-Type | 必需。 设置为 application/json 。 |
授权 | 必需。 设置为有效的 Bearer 访问令牌。 |
后续步骤
有关如何使用 CURL 向 Azure VM 或虚拟机规模集分配用户分配的托管标识的信息,请参阅:
了解如何使用托管标识的工作负荷标识联合身份验证访问受 Microsoft Entra 保护的资源,而无需管理机密。