正如评论中提到的,您可以直接在门户中查看。导航到门户中的资源/资源组/订阅 -> Access control (IAM) -> Role assignments,您可以使用所需的参数进行过滤。
或者您可以使用 Azure powershell Get-AzRoleAssignment 或 REST API,这取决于您的要求。
示例:
1.你有一个用户的ObjectIds列表,你可以使用如下脚本。
[string[]]$ids = "5c2cf3xxx99e895","44b8xxxx0cd8","b2a9xxxxc34e"
foreach($id in $ids){
Get-AzRoleAssignment -ObjectId $id
}
2.您拥有用户的登录名。
[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.你有用户的SignInNames,想获取订阅中所有资源的角色分配。
[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.您有用户的SignInNames,想要获取特定资源组中所有资源的角色分配。
[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.您有用户的SignInNames,想要获取订阅中所有资源组的角色分配。
[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
}
}