Существует ли какой-либо сценарий или команда PowerShell для получения отчета обо всех ролях доступа пользователя в tenant wise с портала Azure?

#azure #powershell #subscription

#azure #powershell #подписка

Вопрос:

Я готовлю отчет, в котором содержатся все пользователи уровня доступа tenant wise из azure.

существует ли какая-либо одна команда или сценарий для получения уровня доступа всех пользователей от клиента Azure?

Комментарии:

1. «Я готовлю отчет» … можете ли вы показать нам, что вы уже пробовали? Объясните, что сработало, что не сработало, и добавьте любые сообщения об ошибках к вашему вопросу.

Ответ №1:

Это небольшая хитрость: библиотека PS для Azure отличается от библиотеки PS для AD. Необходимо сопоставить информацию.

  1. Вы должны получить всех пользователей из своего AD, используя приведенную выше команду, и сохранить как переменную

    $ allUsers = Get-ADUsers -Filter *

  2. Теперь вы можете перейти ко всем подпискам в вашем клиенте, ко всем группам ресурсов и ресурсам и для каждой из них получить IAM (который пришел с идентификатором объекта пользователя) и пересечь с переменной $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
        }
    }
}
 

Ответ №2:

Вы можете сделать это либо в PowerShell, либо в Graph API. Оба метода находятся в предварительном просмотре (вызовы graph API находятся в бета-версии).

 #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
  • Майкрософт.Модуль Graph при использовании PowerShell
  • Согласие администратора при использовании Graph Explorer для Microsoft Graph API

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