为托管标识分配对 Azure 资源或其他资源的访问权限

Azure 资源的托管标识是 Microsoft Entra ID 的一项功能。 支持 Azure 资源的托管标识的每个 Azure 服务都受其自己的时间线限制。 在开始之前,请务必查看资源的托管标识的可用性状态以及已知问题

本文介绍如何授予 Azure 虚拟机 (VM) 托管标识对 Azure 存储帐户的访问权限。 为 Azure 资源配置托管标识后,便可以授予该托管标识对其他资源的访问权限,这一点与安全主体一样。

先决条件

在 Azure 门户中使用 Azure RBAC 为托管标识分配对其他资源的访问权限

提示

本文中的步骤可能因开始使用的门户而略有不同。

重要

以下概述步骤显示如何使用 Azure RBAC 授予对服务的访问权限。 查看有关如何授予访问权限的特定服务文档 - 例如,查看 Azure 数据资源管理器获取说明。 某些 Azure 服务正处于在数据平面上采用 Azure RBAC 的过程中。

  1. 使用与配置托管标识的 Azure 订阅关联的帐户登录 Azure 门户

  2. 转到要对其修改访问控制的相应资源。 在此示例中,你将授予 Azure 虚拟机 (VM) 对存储帐户的访问权限,然后可以导航到该存储帐户。

  3. 选择“访问控制 (IAM)”。

  4. 选择“添加”>“添加角色分配”,打开“添加角色分配”页面 。

  5. 选择角色和托管标识。 有关详细步骤,请参阅使用 Azure 门户分配 Azure 角色

    用于添加角色分配的页面的屏幕截图。

在 CLI 中使用 Azure RBAC 为托管标识分配对其他资源的访问权限

  1. 在此示例中,你将授予 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)
    
  2. 获取服务主体 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。
  1. 在 Azure 资源上启用托管标识,如 Azure VM

  2. 授予 Azure 虚拟机 (VM) 访问存储帐户的权限。

    1. 使用 Get-AzVM 获取名为 myVM 的 VM 的服务主体,该 VM 是在启用托管标识时创建的。
    2. 使用 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>"
    

后续步骤