本文介绍如何授予 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 入门。
如需在本地运行 CLI 参考命令,请安装 Azure CLI。 如果在 Windows 或 macOS 上运行,请考虑在 Docker 容器中运行 Azure CLI。 有关详细信息,请参阅如何在 Docker 容器中运行 Azure CLI。
如果使用的是本地安装,请使用 az login 命令登录到 Azure CLI。 若要完成身份验证过程,请遵循终端中显示的步骤。 有关其他登录选项,请参阅 使用 Azure CLI 向 Azure 进行身份验证。
出现提示时,请在首次使用时安装 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 资源托管标识。