Список приложений, даты создания, разрешений и настроек 2FA для Azure с PowerShell 5+ - PullRequest
0 голосов
/ 07 мая 2019

Я новичок в Azure и PowerShell.У меня есть некоторые базовые знания и опыта написания сценариев, но не в PowerShell.Цель: получить список приложений из Azure и всю доступную связанную информацию.Конкретно дата создания.Вывод в CSV .. Приложения, созданные за последние 60 дней

и https://docs.microsoft.com/en-us/powershell/module/azurerm.resources/get-azurermadapplication?view=azurermps-6.13.0, это мне вообще не нужно работать, но похоже на то, что я хочу.

$ClientID     = "XCXXXXXXXXXXXXXXXX"
$ClientSecret = "XCXXXXXXXXXXXXXXXX"
$tenantdomain = "XCXXXXXXXXXXXXXXXX"
$loginURL     = "XCXXXXXXXXXXXXXXXX"
$resource     = "https://graph.microsoft.com"
$path = "C:\Scripts\objects.csv"
$headers = "App Name,CreatedOn"

# body for the rest request to get an access token
$body = @{grant_type="client_credentials";resource=$resource;client_id=$ClientID;client_secret=$ClientSecret}

# get an access token
$oauth = Invoke-RestMethod -Method Post -Uri $loginURL/$tenantdomain/oauth2/token?api-version=1.0 -Body $body

# if we have an access token, then make the graph call
if ($oauth.access_token -ne $null) 

{

    $headerParams = @{'Authorization'="$($oauth.token_type) $($oauth.access_token)"}

    $url = "https://graph.microsoft.com/beta/applications?select=createddatetime,displayname"


    do {


        $response = Invoke-WebRequest -Uri $url -UseBasicParsing -Headers $headerParams -Method GET  -ContentType "application/json"
        if ($response.Content)
        {

1 Ответ

0 голосов
/ 08 мая 2019

Старая оболочка AzureRm powershell Get-AzureRmADApplication, о которой вы упомянули, по сути, называет API графа объявлений Azure, а в API графа объявлений Azure объект приложения *1003* не имеет требуемого свойства createddatetime. Кроме того, новые Az PowerShell Get-AzADApplication и Azure Ad PowerShell Get-AzureADApplication также вызывают API Azure Ad Graph, поэтому они не могут удовлетворить ваши требования.

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

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

Прежде чем получить токен доступа, убедитесь, что вы предоставили разрешение API-интерфейса Microsoft Graph для своего рекламного приложения. Перейдите к Azure Active Directory на портале -> App registrations -> найдите свое рекламное приложение -> API permissions -> Add a permission -> добавьте Application permission графа API Microsoft (разрешение может быть Application.ReadWrite.All, Directory.Read.All от наименее до наиболее привилегированных, см. List applications Permissions) -> Add permissions -> Наконец, не забудьте нажать кнопку Grant admin consent.

enter image description here

Мой образец (образец после получения токена доступа и использования его для вызова MS garph api):

$url = "https://graph.microsoft.com/beta/applications?select=createddatetime,displayname"
$accesstoken = "eyJ0eXAxxxxxxeHB1Y3FuQktJR2Nyx9Cg"
$header = @{
    'Authorization' = 'Bearer ' + $accesstoken
}

$response = Invoke-RestMethod –Uri $url –Headers $header –Method GET
$response.value | Export-Csv -Path "C:\Users\joyw\Desktop\testfile.csv" -NoTypeInformation

enter image description here

...