为托管标识分配对 Azure 资源或其他资源的访问权限
Azure 资源的托管标识是 Microsoft Entra ID 的一项功能。 支持 Azure 资源的托管标识的每个 Azure 服务都受其自己的时间线限制。 在开始之前,请务必查看资源的托管标识的可用性状态以及已知问题。
本文介绍如何授予 Azure 虚拟机 (VM) 托管标识对 Azure 存储帐户的访问权限。 为 Azure 资源配置托管标识后,便可以授予该托管标识对其他资源的访问权限,这一点与安全主体一样。
先决条件
- 确保已在 Azure 资源(如 Azure 虚拟机或 Azure 虚拟机规模集)上启用托管标识。 有关 Azure 资源托管标识的详细信息,请参阅什么是 Azure 资源托管标识?。
- 查看系统分配的托管标识与用户分配的托管标识之间的差异。
- 如果没有 Azure 帐户,请在继续前注册免费帐户。
在 Azure 门户中使用 Azure RBAC 为托管标识分配对其他资源的访问权限
提示
本文中的步骤可能因开始使用的门户而略有不同。
重要
以下概述步骤显示如何使用 Azure RBAC 授予对服务的访问权限。 查看有关如何授予访问权限的特定服务文档 - 例如,查看 Azure 数据资源管理器获取说明。 某些 Azure 服务正处于在数据平面上采用 Azure RBAC 的过程中。
使用与配置托管标识的 Azure 订阅关联的帐户登录 Azure 门户。
转到要对其修改访问控制的相应资源。 在此示例中,你将授予 Azure 虚拟机 (VM) 对存储帐户的访问权限,然后可以导航到该存储帐户。
选择“访问控制 (IAM)”。
选择“添加”>“添加角色分配”,打开“添加角色分配”页面 。
选择角色和托管标识。 有关详细步骤,请参阅使用 Azure 门户分配 Azure 角色。
在 CLI 中使用 Azure RBAC 为托管标识分配对其他资源的访问权限
在 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。
在此示例中,你将授予 Azure 虚拟机 (VM) 对存储帐户的托管访问权限。 首先使用 az resource list 获取名为 myVM 的 VM 的服务主体:
spID=$(az resource list -n myVM --query [*].identity.principalId --out tsv)
对于 Azure 虚拟机 (VM) 规模集,使用的命令相同,但获取名为“DevTestVMSS”的 VM 规模集的服务主体:
spID=$(az resource list -n DevTestVMSS --query [*].identity.principalId --out tsv)
获取服务主体 ID 后,立即使用 az role assignment create 授予虚拟机或虚拟机规模集对“myStorageAcct”存储帐户的“读取者”访问权限:
az role assignment create --assignee $spID --role 'Reader' --scope /subscriptions/<mySubscriptionID>/resourceGroups/<myResourceGroup>/providers/Microsoft.Storage/storageAccounts/myStorageAcct
在 PowerShell 中使用 Azure RBAC 为托管标识分配对其他资源的访问权限
注意
建议使用 Azure Az PowerShell 模块与 Azure 交互。 请参阅安装 Azure PowerShell 以开始使用。 若要了解如何迁移到 Az PowerShell 模块,请参阅 将 Azure PowerShell 从 AzureRM 迁移到 Az。
若要在此示例中运行脚本,你有两个选项:
- 使用 Azure Cloud Shell,你可使用代码块右上角的“试用”按钮打开它。
- 通过安装最新版的 Azure PowerShell 在本地运行脚本,然后使用
Connect-AzAccount
登录到 Azure。
在 Azure 资源上启用托管标识,如 Azure VM。
授予 Azure 虚拟机 (VM) 访问存储帐户的权限。
- 使用 Get-AzVM 获取名为
myVM
的 VM 的服务主体,该 VM 是在启用托管标识时创建的。 - 使用 New-AzRoleAssignment 向 VM 提供对名为
myStorageAcct
的存储帐户的“读取者”访问权限:
$spID = (Get-AzVM -ResourceGroupName myRG -Name myVM).identity.principalid New-AzRoleAssignment -ObjectId $spID -RoleDefinitionName "Reader" -Scope "/subscriptions/<mySubscriptionID>/resourceGroups/<myResourceGroup>/providers/Microsoft.Storage/storageAccounts/<myStorageAcct>"
- 使用 Get-AzVM 获取名为
后续步骤
- 若要在 Azure 虚拟机上启用托管标识,请参阅配置 Azure 资源托管标识。
- 若要在 Azure 虚拟机规模集上启用托管标识,请参阅在虚拟机规模集上配置 Azure 资源托管标识。