Невозможно получить правильные данные, используя Azure Журналы Aduit, используя Graph API через Powershell - PullRequest
0 голосов
/ 24 февраля 2020

Я пытался извлечь Azure Аудит журналов с помощью Microsoft Graph . Я использую Powershell, чтобы сделать эту гайку, я не могу заставить работать фильтрацию.

Например, этот URL возвращает множество более старых данных, чем дата, указанная в фильтре. https://graph.microsoft.com/v1.0/auditLogs/directoryAudits?\$filter=activityDateTime ge 2020-02-24T18:39:36Z

Вот мой код

$ClientID = "yyyyyy" 
$ClientSecret = "xxxxxxxxx" 
$loginURL       = "https://login.microsoftonline.com" 
$tenantdomain   = "xxx.onmicrosoft.com" 
$resource       = "https://graph.microsoft.com" 

$Date = Get-Date
$UTC = $Date.ToUniversalTime();
$UTC
$Time = "{0:s}" -f $UTC.AddMinutes(-5) + "Z"
$Time

$body       = 
@{grant_type="client_credentials";resource=$resource;client_id=$ClientID;client_secret=$ClientSecret}
$oauth      = Invoke-RestMethod -Method Post -Uri $loginURL/$tenantdomain/oauth2/token?api- 
version=1.0 -Body $body
$headerParams = @{'Authorization'="$($oauth.token_type) $($oauth.access_token)"}
$url = 'https://graph.microsoft.com/v1.0/auditLogs/directoryAudits?\`$filter=activityDateTime ge ' + 
$Time

$Data = Invoke-WebRequest -UseBasicParsing -Headers $headerParams -Uri $url
$DataFromJson = $Data.Content | ConvertFrom-Json
$ValueFromJason = $DataFromJson.value
$AllAuditData += $ValueFromJason

# Output
$Time
2020-02-24T18:39:36Z

$short = $AllAuditData | Sort-Object activityDateTime
$short[1].activityDateTime
2020-02-24T17:52:09.9673372Z  # Old data as comparison to $Time
$short[-1].activityDateTime
2020-02-24T18:44:15.1283452Z

1 Ответ

0 голосов
/ 26 февраля 2020

Согласно моему тесту, мы можем использовать следующий скрипт

$ClientID = "yyyyyy" 
$ClientSecret = "xxxxxxxxx" 
$loginURL       = "https://login.microsoftonline.com" 
$tenantdomain   = "xxx.onmicrosoft.com" 
$resource       = "https://graph.microsoft.com" 
$body       = 
@{grant_type="client_credentials";resource=$resource;client_id=$ClientID;client_secret=$ClientSecret}
$oauth      = Invoke-RestMethod -Method Post -Uri $loginURL/$tenantdomain/oauth2/token?api- 
version=1.0 -Body $body

$Date = Get-Date
$UTC = $Date.ToUniversalTime();
$Time = "{0:s}" -f $UTC.AddMinutes(-5) + "Z"
$Time


$url= "https://graph.microsoft.com/beta/auditLogs/directoryAudits?`$filter=activityDateTime gt " + $Time
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add("Authorization", "$($oauth.token_type) $($oauth.access_token)")
$AllAuditData=@()
$response = Invoke-RestMethod $url -Method 'GET' -Headers $headers 
$AllAuditData += $response.value


$short = $AllAuditData | Sort-Object activityDateTime
$short[1].activityDateTime

$short[-1].activityDateTime

enter image description here


Обновление

Согласно В моем исследовании мы можем использовать команду Azure AD PowerShell *1025* для фильтрации журналов аудита. Для получения более подробной информации, пожалуйста, обратитесь к https://docs.microsoft.com/en-us/azure/active-directory/reports-monitoring/reference-powershell-reporting.

Например

Install-module AzureADPreview

Connect-AzureAD 
$result=Get-AzureADAuditDirectoryLogs -Filter "activityDisplayName eq 'Update user'"
$result | Select-Object ActivityDisplayName

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...