powershell - 导出所有订阅 RBAC,重点关注 Azure AD 组并解析分配的用户
问题描述
使用 RBAC 导出所有订阅但专注于 AAD 组和解决用户成员身份的最佳方式是什么?我似乎迷失在 if 语句中。
Get-AzSubscription |
foreach-object {
Write-Verbose -Message "Changing to Subscription $($_.Name)" -Verbose
Set-AzContext -TenantId $_.TenantId -SubscriptionId $_.Id -Force
$Name = $_.Name
$TenantId = $_.TenantId
$SubId = $_.SubscriptionId
Get-AzRoleAssignment -IncludeClassicAdministrators | Select-Object RoleDefinitionName,DisplayName,SignInName,ObjectType,Scope,
@{name="TenantId";expression = {$TenantId}},@{name="SubscriptionName";expression = {$Name}},@{name="SubscriptionId";expression = {$SubId}
}
if(Get-AzRoleAssignment.ObjectType -eq "Group")
{
Get-AzADGroup -ObjectId.Id | Select-Object DisplayName,SignInName,ObjectType,Scope | foreach-object { Get-AzADUser | Select-Object UserPrincipalName,ObjectType,Id
}
}
else { continue }
}
-OutVariable ra
$ra | Export-Csv -Path .\Export-SubAzRolesGroups-$Name.csv -NoTypeInformation
}
解决方案
最简单/最快的方法可能是使用带有 az 模块的 powershell,编写一个小脚本,获取该帐户有权访问的所有订阅(希望使用某种租户范围的读取权限用户),然后获取每个订阅的所有角色分配, 并做任何你需要做的事情来获取组,并为每个组获取成员。将其全部写入文件。
您要查看的 powershell 命令是: get-azsubscription get-azroleassignment get-azadgroup get-azaduser
其他选项包括,您可以使用 azure 资源管理器 Rest API 或其他一些 azurerm 库来编写执行相同操作的应用程序。
希望这能让你开始。
更新
Get-AzSubscription |
foreach-object {
Write-Verbose -Message "Changing to Subscription $($_.Name)" -Verbose
Set-AzContext -TenantId $_.TenantId -SubscriptionId $_.Id -Force
$Name = $_.Name
$TenantId = $_.TenantId
$SubId = $_.SubscriptionId
Get-AzRoleAssignment -IncludeClassicAdministrators | Select-Object RoleDefinitionName,DisplayName,SignInName,ObjectId,ObjectType,Scope,
@{name="TenantId";expression = {$TenantId}},@{name="SubscriptionName";expression = {$Name}},@{name="SubscriptionId";expression = {$SubId}} |
foreach-object{ if($_.ObjectType -eq "Group")
{
$_ | ft
$group = Get-AzADGroup -ObjectId $_.ObjectId
$group | Select-Object DisplayName,SignInName,ObjectType,Scope | ft
$group | Get-azadgroupmember | Select-Object UserPrincipalName,ObjectType,Id | ft
}
else { $_ | ft}
}
} -OutVariable ra
$ra | out-file .\Export-SubAzRolesGroups-$Name.csv
推荐阅读
- c# - 如何获取数组中具有固定数量标志的所有组合
- numpy - np.array([args.width, args.width]) 和 np.zeros(5) 的语法
- python-3.x - 结果使用 neupy 得到 NaN
- python - 使用 Python 在 Selenium 中模拟鼠标移动
- vba - 在 Excel VBA 代码中键入未匹配错误
- angular - 如何在 Angular 中为动态组件注入提供者?
- ios - 带有委托参考的 Swift 默认参数值
- javascript - Html-css 响应式滑动反馈表
- javascript - HTML 页面上带有文本的交互式形状
- python - 确定列表中具有重复项的缺失数字