如何在Azure中查看所有用户及其分配的角色的列表?

时间:2019-12-02 14:16:54

标签: azure

我是Azure管理员。

我想知道是否有一种简单的方法来显示Azure中的用户列表以及他们具有哪些订阅,用户组和资源的角色分配?

基本上,我想要一个人在任何事情上拥有的所有角色分配的列表。

相反,我会接受订阅中每个资源组和资源的列表,并列出它们上的角色分配。

听起来不是一个大问题吗?

最简单的方法是什么?

-李

2 个答案:

答案 0 :(得分:0)

如评论中所述,您可以直接在门户中对其进行检查。在门户中导航至资源/资源组/订阅-> Access control (IAM)-> Role assignments,您可以使用所需的参数进行过滤。

enter image description here

或者您可以使用Azure Powershell Get-AzRoleAssignmentREST API,这取决于您的要求。

示例

1。您具有用户的ObjectId列表,可以使用以下脚本。

[string[]]$ids = "5c2cf3xxx99e895","44b8xxxx0cd8","b2a9xxxxc34e"
foreach($id in $ids){
    Get-AzRoleAssignment -ObjectId $id
}

enter image description here

2。您具有用户的SignInName。

[string[]]$names = "xxxx@xxxxx.onmicrosoft.com","xxxx@xxxxx.onmicrosoft.com","xxxx@xxxxx.onmicrosoft.com"
foreach($name in $names){
    Get-AzRoleAssignment -SignInName $name
}

enter image description here

更新:

注意:Azure中的角色分配是可继承的,例如如果在subscription范围内为用户添加角色分配,则在resource group中列出角色分配时,还将列出用户的角色分配。资源组和组中资源的逻辑相同。

1。您具有用户的SignInName,想要获取预订中所有资源的角色分配。

[string[]]$names = "xxxx@xxxxx.onmicrosoft.com","xxxx@xxxxx.onmicrosoft.com","xxxx@xxxxx.onmicrosoft.com"
$rids = (Get-AzResource).ResourceId
foreach($rid in $rids){
    foreach($name in $names){
        Get-AzRoleAssignment -Scope $rid -SignInName $name 
    }   
}

2。您具有用户的SignInName,想要获取特定资源组中所有资源的角色分配。

[string[]]$names = "xxxx@xxxxx.onmicrosoft.com","xxxx@xxxxx.onmicrosoft.com","xxxx@xxxxx.onmicrosoft.com"
$rids = (Get-AzResource -ResourceGroupName <group-name>).ResourceId
foreach($rid in $rids){
    foreach($name in $names){
        Get-AzRoleAssignment -Scope $rid -SignInName $name 
    }   
}

3。您具有用户的SignInName,想要获取预订中所有资源组的角色分配。

[string[]]$names = "xxxx@xxxxx.onmicrosoft.com","xxxx@xxxxx.onmicrosoft.com","xxxx@xxxxx.onmicrosoft.com"
$gids = (Get-AzResourceGroup).ResourceId
foreach($gid in $gids){
    foreach($name in $names){
        Get-AzRoleAssignment -Scope $gid -SignInName $name 
    }   
}

答案 1 :(得分:0)


#!/bin/bash
    
    
subscriptions_list=($(az account list --all --query "[].id" -o table  | grep -vi "resul\|--"))
    
#echo "These subscriptions are linked to Azure Account: $subscriptions_list"
    

    
echo ""
    
echo "Below is the list of <USERS> with direct role assignments to subscriptions"
    
echo ""
    

    
# Listing "Users" with direct tole assignments to subscriptions
    

    
for subscription in "${subscriptions_list[@]}"; do
    
 echo "************************************************************************************"
    
 echo "Direct Role Assignments(s) for subscription id: $subscription"
    
 echo ""
    
 az role assignment list --subscription $subscription --query "[?principalType=='User'].{Role:roleDefinitionName,Email:principalName}" -o table
    
 echo ""
    
done