获取 Azure AD 主体的所有角色分配

cod*_*gal 6 rbac azure azure-active-directory

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

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

探索的选项

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

除了迭代 50 个订阅、获取每个范围的角色分配然后比较对象 ID 之外,还有其他更好的方法吗?

Ans*_*-MT 0

您可以使用以下 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
}
Run Code Online (Sandbox Code Playgroud)

输出:

在此输入图像描述

参考:

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

  • @codegal,1.以上内容适用于用户 SPN(服务主体名称)。要对 SP(服务主体)执行相同的操作,您可以获取 azuread 应用程序并匹配该应用程序的服务主体的对象 ID 并获取 PIM。2.不幸的是,如果没有迭代,就没有直接的方法来得到这个。 (2认同)