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

Есть два способа получить информацию о приложениях — через объект Service Principal (SPN), который создается для почти всех приложений при регистрации или через командлет Get-AzureADApplication. Первый способ использует командлет Get-AzureADServicePrincipal.

Обратите внимание, что эти два командлета используются разные ObjectID: Get-AzureADServicePrincipal использует ObjectID принципиала, а Get-AzureADApplication — сам объект приложения.

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

Напомню, что есть приложения SAML SSO (тег WindowsAzureActiveDirectoryCustomSingleSignOnApplication), WebApp/Web API (тег WindowsAzureActiveDirectoryIntegratedApp), Native Apps (тег WindowsAzureActiveDirectoryIntegratedApp) и Azure Application Proxy регистрации (WindowsAzureActiveDirectoryOnPremApp). Однако, некоторые типы приложений могут иметь несколько тегов сразу.

Пример получения WebApps и Native Apps:

$modernapps = Get-AzureADServicePrincipal -Top 1000 | where-object {$_.Tags -Contains "WindowsAzureActiveDirectoryIntegratedApp" -and $_.Tags -notcontains "WindowsAzureActiveDirectoryCustomSingleSignOnApplication" -and $_.Tags -notcontains "WindowsAzureActiveDirectoryOnPremApp"}

$webapps = @()
$native = @()

foreach ($i in $modernapps) {
    $appid = $i.appid
    if ( $(Get-AzureADApplication -Filter "appid eq '$appid'" | select -ExpandProperty PublicClient) -eq $false) {
        $webapps += $i
    }
    else {
        $native += $i
    }
}

Теперь получим количество приложении SSO, использующих SAML.

(Get-AzureADServicePrincipal -All:$True | where-object {$_.Tags -Contains "WindowsAzureActiveDirectoryCustomSingleSignOnApplication"}).count

И публикации Azure Application Proxy:

(Get-AzureADServicePrincipal -All:$True | where-object {$_.Tags -Contains "WindowsAzureActiveDirectoryOnPremApp"}).count

Теперь давайте получим список пользователь и AD групп, которые заасайнены на SAML приложения. Вместе с этим создадим кастомный объект, который будет в сбееб содержать полезную информацию о приложении, такую как URL, роли, AppID, срок истечения сертификата. для вывода объекта в Excel будем использовать дополнительный модуль ImportExcel.

$ssoapps = Get-AzureADServicePrincipal -All:$True | where {$_.Tags -contains "WindowsAzureActiveDirectoryCustomSingleSignOnApplication"}  | sort DisplayName

foreach ($app in $ssoapps) {
    $dispname = $app.DisplayName
    "*** Processing: " + $dispname
    $appobj = Get-AzureADApplication -Filter "AppID eq '$($app.AppID)'"
    $Groupclaims = $appobj.GroupMembershipClaims
    $IdentifierUris = ($appobj.IdentifierUris -join "; ")
    $replyuris = ($appobj.ReplyUrls -join "; ")
    $samlurls = ($appobj.SamlMetadataUrl -join "; ")
    $keys = $app.PasswordCredentials.EndDate
    $approles = ($app.Approles.DisplayName -join "; ")

    try {
        $assignments = (Get-AzureADServiceAppRoleAssignment -ObjectId $app.ObjectId | select -ExpandProperty PrincipalDisplayName) -join "; "
    }
    catch {
        $assignments = ""   
    }

    $exportobj = [PSCustomObject][Ordered]@{
        DisplayName   = $dispname
        AppID = $app.AppID
        ObjectID = $appobj.ObjectID
        "Certificate expiration" = $keys
        "App roles" = $approles
        "Users and Groups" = $assignments
        "Metadata URL" = $samlurls
        "Identifier URLs" = $IdentifierUris
        "Reply URLs" = $replyuris

    }
    $exportobj | Export-Excel -Path "c:\temp\AAD Inventory.xlsx" -WorksheetName "SAML SSO" -Append -TitleBold -AutoSize
}

Насколько полезен этот пост?

Кликните на звезду, чтобы оценить!

Средний рейтинг 0 / 5. Количество голосов: 0

Еще нет голосов. Будь первым!

Поделиться:

Написано автором Александр Д.