Поиск по сайту:

Экспорт пользователей с ролью администратора в Microsoft 365


Отслеживание пользователей с административными правами в Microsoft 365 важно для обеспечения того, чтобы ни один пользователь не имел больше разрешений, чем это необходимо. Что я часто наблюдаю, так это то, что когда пользователю нужен доступ к Центру администрирования Microsoft 365, права глобального администратора предоставляются слишком легко.

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

В этой статье я покажу вам три метода, как вы можете просмотреть и экспортировать всех пользователей с админской ролью в Microsoft 365.

Метод 1 - Использование Центра администрирования

Мы можем посмотреть назначение ролей в Центре администрирования Microsoft 365 в разделе Роли > Назначение ролей. Единственная проблема в том, что вам нужно будет открыть каждую отдельную роль, чтобы увидеть, какие пользователи имеют назначенные роли.

Тем не менее, мы можем экспортировать список пользователей с назначенными им ролями из центра администрирования. Это, безусловно, самый простой способ быстро просмотреть все назначения. Следуйте приведенным ниже шагам, чтобы открыть страницу назначения ролей в центре администрирования, или используйте эту прямую ссылку.

  1. Откройте Центр администрирования M365
  2. Расширить роли и открыть назначение ролей
  3. Нажмите на Экспортировать списки администраторов

Метод 2 - Использование Microsoft Entra

Мы также можем просматривать и управлять ролями и администраторами в Microsoft Entra, конечно. Так же, как в центре администрирования, мы можем загрузить список всех назначений:

  1. Откройте Microsoft Entra
  2. Под Идентичность разверните Роли и администраторы
  3. Открыть Роли и администраторы
  4. Нажмите на Скачать задание

Метод 3 - Использование PowerShell

Другой способ просмотреть всех пользователей с ролью администратора в вашем арендаторе — это использование PowerShell. Преимущество PowerShell заключается в том, что вы можете изменять результаты в соответствии с вашими потребностями. Например, если вы хотите также перечислить отдел менеджера пользователей в результатах.

Ниже представленный скрипт является простой версией, которая позволяет вам дальше адаптировать его под ваши нужды. Мы будем использовать Microsoft Graph и разрешения RoleManagement.Read.Directory и User.Read.All.

Сначала мы получим все доступные роли, а затем посмотрим, какие пользователи имеют назначенную роль. Результаты сортируются по пользователям, чтобы вы могли легко увидеть, когда у пользователя несколько ролей.

param (
    [Parameter(
        Mandatory = $false,
        HelpMessage = "Get only users with an admin role"
      )]
    [switch]$usersOnly = $true,

    [Parameter(
        Mandatory = $false,
        HelpMessage = "Enter path to save the CSV file"
      )]
      [string]$path = ".\Users-with-admin-role-$((Get-Date -format "MMM-dd-yyyy").ToString()).csv"
)

Check if MS Graph module is installed
if (Get-InstalledModule Microsoft.Graph) {
    # Connect to MS Graph
    Connect-MgGraph -Scopes "RoleManagement.Read.Directory", "User.Read.All" -NoWelcome
}else{
    Write-Host "Microsoft Graph module not found - please install it" -ForegroundColor Black -BackgroundColor Yellow
    exit
}

Initialize an array to store the results
$results = @()

Get all directory roles and Loop through each role
Get-MgDirectoryRole | ForEach {

    # Get members of the current role
    $members = Get-MgDirectoryRoleMember -DirectoryRoleId $_.Id
    
    # Process each member
    foreach ($member in $members) {

        # Only process user objects (skip groups or service principals)
        if ($usersOnly -and ($member.AdditionalProperties.'@odata.type' -ne '#microsoft.graph.user')) {
            continue
        }
        # Get detailed user information including sign-in activity
        $user = Get-MgUser -UserId $member.Id -Property "Id,UserPrincipalName,DisplayName,AccountEnabled"
    
        # Create new entry for each user-role combination
        $results += [PSCustomObject]@{
            DisplayName = $user.DisplayName
            Role = $_.DisplayName
            AccountEnabled = $user.AccountEnabled
            UserPrincipalName = $user.UserPrincipalName
        }
    }
}

Export results to CSV
$results | Sort-Object UserPrincipalName, Role | Out-GridView # Export-Csv -Path $path -NoTypeInformation -Encoding Utf8

Вы можете получить полный скрипт здесь из моего репозитория на GitHub.

Заключение

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

Если у вас есть вопросы, просто оставьте комментарий ниже.