我是Azure管理员。
我想知道是否有一种简单的方法来显示Azure中的用户列表以及他们具有哪些订阅,用户组和资源的角色分配?
基本上,我想要一个人在任何事情上拥有的所有角色分配的列表。
相反,我会接受订阅中每个资源组和资源的列表,并列出它们上的角色分配。
听起来不是一个大问题吗?
最简单的方法是什么?
-李
答案 0 :(得分:0)
如评论中所述,您可以直接在门户中对其进行检查。在门户中导航至资源/资源组/订阅-> Access control (IAM)
-> Role assignments
,您可以使用所需的参数进行过滤。
或者您可以使用Azure Powershell Get-AzRoleAssignment
或REST API
,这取决于您的要求。
示例:
1。您具有用户的ObjectId列表,可以使用以下脚本。
[string[]]$ids = "5c2cf3xxx99e895","44b8xxxx0cd8","b2a9xxxxc34e"
foreach($id in $ids){
Get-AzRoleAssignment -ObjectId $id
}
2。您具有用户的SignInName。
[string[]]$names = "xxxx@xxxxx.onmicrosoft.com","xxxx@xxxxx.onmicrosoft.com","xxxx@xxxxx.onmicrosoft.com"
foreach($name in $names){
Get-AzRoleAssignment -SignInName $name
}
注意: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