首页 > 解决方案 > 获取 Azure AD 主体的所有角色分配

问题描述

我有一个包含多个订阅和资源的 Azure 环境。我的要求是有一个功能,如果我传递用户名或 SPN 名称,它会为我提供该用户/spn 有权访问的所有 azure 资源(从管理组到 azure 资源)以及它是什么访问权限(阅读器/数据阅读器ETC)。

主要问题是 - 我也想要 PIM 角色分配。有没有办法得到它?

探索的选项

  1. https://docs.microsoft.com/en-us/rest/api/authorization/role-assignments但这给出了每个范围的角色分配。我想要每个用户/spn
  2. https://docs.microsoft.com/en-us/azure/role-based-access-control/role-assignments-list-portal它不包括 PIM 分配,并且只为每个订阅提供分配
  3. Azure Resource Graph Explorer - 这根本不包括角色分配

除了遍历 50 个订阅,获取每个作用域的角色分配,然后比较对象 id,还有什么更好的方法吗?

标签: azureazure-active-directoryrbac

解决方案


您可以使用以下 Powershell 脚本在多个订阅中获取服务主体名称的角色分配。

Connect-AzAccount
$tenantID = "yourTenantID"
$spn = "serviceprincipalname"
$user= Get-AzADUser -UserPrincipalName $spn
$subscriptions = Get-AzSubscription -TenantId $tenantID
#$subscriptions.Id
foreach ($subscription in $subscriptions) {
$set = Set-AzContext -Subscription $subscription
$set
$roleassignment= Get-AzRoleAssignment -ObjectId $user.Id
$roleassignment
}

输出:

在此处输入图像描述

参考:

安装 Azure Az PowerShell 模块 | 微软文档


推荐阅读