是否有任何 PowerShell 脚本或命令可以从 Azure 门户获取租户中所有用户访问角色的报告?



我正在准备报告,其中包含来自azure的所有用户访问级别租户。

是否有任何一个命令或脚本可以从Azure租户获得所有用户的访问级别?

您可以在PowerShellGraph API中执行此操作。这两种方法都在预览中(图形API调用在beta分支下(。

#Get the user
$userId = (Get-AzureADUser -Filter "userPrincipalName eq 'alice@contoso.com'").ObjectId
#Get direct role assignments to the user
$directRoles = (Get-AzureADMSRoleAssignment -Filter "principalId eq '$userId'").RoleDefinitionId

先决条件

  • AzureADPreview模块在使用PowerShell时
  • 使用PowerShell时的Microsoft.Graph模块
  • 使用Graph Explorer for Microsoft Graph API时的管理员同意

https://learn.microsoft.com/en-us/azure/active-directory/roles/list-role-assignments-users

这是一个小技巧:Azure的PS库与AD的PS库不同。您必须交叉信息。

  1. 您必须使用上面的命令从AD中获取所有用户,并保存为变量

    $allUsers=获取ADUsers-过滤器*

  2. 现在,您可以导航到租户的所有订阅、所有资源组和资源,每个订阅都可以获得IAM(用户的objectId(,并与变量$allUsers交叉以识别每个人。

样品不是最好的,但可能会对您有所帮助:

Connect-AzAccount
$listIAM = New-Object System.Collections.ArrayList
$listSubscriptions = Get-AzSubscription
foreach($subscription in $listSubscriptions){
Set-AzContext -SubscriptionId $subscription.SubscriptionId
# Now you have all roleAssignements for this subscription
$subscriptionIAM = Get-AzRoleAssignment -Scope /subscriptions/$subscription.SubscriptionId
$listIAM.Add($subscriptionIAM) | Out-Null

# Navigate into resource groups
$listResourceGroups = Get-AzResourceGroup
foreach($resourceGroup in $listResourceGroups){
$rgIAM = Get-AzRoleAssignment -ResourceGroupName $resourceGroup.ResourceGroupName
$listIAM.Add($rgIAM) | Out-Null
# Navigate into resources
$listResources = Get-AzResource -ResourceGroupName $resourceGroup
foreach($resource in $listResources){
$rIAM = Get-AzRoleAssignment -Scope $resouce.ResourceId
$listIAM.Add($rIAM) | Out-Null
}
}
}

相关内容

  • 没有找到相关文章

最新更新