Сообщите обо всех владельцах приложений в Microsoft Entra с помощью PowerShell


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

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

В этом посте я покажу вам, как использовать Microsoft Graph PowerShell для создания отчета о владельцах приложений в вашем клиенте.

Требования

Для этого сценария необходимо установить следующие модули Microsoft Graph PowerShell:

  • Microsoft.Graph.Authentication
  • Microsoft.Graph.Beta.Applications

Инструкции см. в моем сообщении: Как установить модуль Microsoft Graph PowerShell.

Вам также потребуется учетная запись глобального администратора, чтобы предоставить разрешение Application.Read.All для встроенного приложения Инструменты командной строки Microsoft Graph.

Используйте скрипт отчета владельцев приложений

Приведенный ниже сценарий сначала получит все регистрации приложений в вашем клиенте с помощью командлета Get-MgBetaApplication с переключателем -All.

Затем он отправит пакетные запросы, содержащие 20 запросов, чтобы быстро собрать владельцев приложений из каждого приложения.

Затем выполняется цикл с данными, кэшированными локально в переменных, для создания отчета, который можно экспортировать.

Затем отчет экспортируется в указанное место. Обязательно измените последнюю строку для экспорта отчета в нужное место.

Этот скрипт также можно скачать с моего GitHub.

#Connect to Microsoft Graph
Connect-MgGraph -Scopes Application.Read.All

#Get all applications
$AllApps = Get-MgBetaApplication -All 

#Initialise array 
$Report = @()

#Send batch requests to get application owners
for($i=0;$i -lt $AllApps.count;$i+=20){
    $batch = @{}
    $batch['requests'] = ($AllApps[$i..($i+19)] | select @{n='id';e={$_.id}},@{n='method';e={'GET'}},`
		@{n='url';e={"/applications/$($_.id)/owners"}})
    $response = invoke-mggraphrequest -Method POST -URI "https://graph.microsoft.com/v1.0/`$batch" -body ($batch | convertto-json) -OutputType PSObject -ResponseHeadersVariable string
    $Report += $response.responses
}

#Create a new array list
$owners = [System.Collections.Generic.List[Object]]::new()

#Loop through locally caches items and add to array list
Foreach ($app in $report) {
     $owner = $app.body.value.userprincipalname -join ", "
     $obj = [PSCustomObject][ordered]@{
        "Application" = ($allapps | Where {$_.id -eq $app.id} | Select DisplayName).displayname
        "Owners" = $owner
    }
    $owners.Add($obj)
}

#Export to CSV
$owners | Export-CSV -Path C:\temp\Appowners5.csv -NoTypeInformation

Краткое содержание

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