Обращение к журналам аудита Azure AD B2C
Azure Active Directory B2C (Azure AD B2C) создает журналы аудита, содержащие сведения о действиях для ресурсов B2C, выданных токенах и доступе с правами администратора. Эта статья содержит краткий обзор данных, предоставляемых через журналы аудита, и инструкции о том, как получить доступ к этим данным для клиента Azure AD B2C.
События в журналах аудита хранятся всего семь дней. Если требуется более длительный срок хранения, спланируйте скачивание и хранение журналов с помощью одного из описанных ниже методов.
Примечание
Входы пользователей для отдельных Azure AD приложений B2C не отображаются в разделе Пользователи страниц идентификатора Microsoft Entra или Azure AD B2C в портал Azure. События входа там отражают действия пользователей, но их нельзя связать с конкретным приложением B2C, в которое пользователь вошел. Для этого необходимо использовать журналы аудита, как описано далее в этой статье.
Общие сведения о действиях, доступных в категории B2C для журналов аудита
Категория B2C в журналах аудита содержит следующие типы действий:
тип действия; | Описание |
---|---|
Авторизация | Действия, касающиеся авторизации пользователя для доступа к ресурсам B2C (например, доступ администратора к списку политик B2C). |
Каталог | Действия, связанные с атрибутами каталога, полученными при входе администратора через портал Azure. |
Приложение | Операции создания, чтения, обновления и удаления (CRUD) для приложений B2C. |
Ключ | Операции CRUD для ключей, которые хранятся в контейнере ключей B2C. |
Ресурс | Операции CRUD для ресурсов B2C (например, политик и поставщиков удостоверений). |
Аутентификация | Проверка учетных данных пользователя и выдача токенов. |
Сведения о действиях CRUD для объектов пользователя см. в категории основного каталога.
Пример действия
На этом изображении с портала Azure показаны данные, регистрируемые при входе пользователя с помощью внешнего поставщика удостоверений (в данном случае — Facebook):
Панель сведений об активности содержит указанные ниже важные данные.
Section | Поле | Описание |
---|---|---|
Действие | Имя | Какое действие выполнялось. Например, выдача приложению маркера id_token, что фактически завершает вход пользователя. |
"Кем инициировано (субъект)". | ObjectId | Идентификатор объекта приложения B2C, в которое входит пользователь. Этот идентификатор не отображается на портале Azure, но доступен через API Microsoft Graph. |
"Кем инициировано (субъект)". | Имя субъекта-службы | Идентификатор приложения B2C, в которое входит пользователь. |
"Целевые объекты"; | ObjectId | Идентификатор объекта пользователя, который выполняет вход. |
Дополнительные сведения | TenantId | Идентификатор клиента Azure AD B2C. |
Дополнительные сведения | PolicyId | Идентификатор политики потока пользователя (политики), используемого для входа. |
Дополнительные сведения | ApplicationId | Идентификатор приложения B2C, в которое входит пользователь. |
Просмотр журналов аудита на портале Azure
Портал Azure позволяет получить доступ к событиям журнала аудита в клиенте Azure AD B2C.
- Войдите на портал Azure.
- Перейдите в каталог клиента Azure AD B2C, а затем выберите Azure AD B2C.
- В разделе Действия в меню слева выберите Журналы аудита.
Отобразится список событий действий, зарегистрированных за последние семь дней.
Доступно несколько вариантов фильтрации, в том числе перечисленные ниже.
- Тип ресурса действия: фильтрация по типам действий, отображаемым в таблице в разделе Обзор доступных действий.
- Дата: фильтрация отображаемых действий по диапазону дат.
Если выбрать в списке определенную строку, отобразятся подробные сведения о действии для данного события.
Чтобы скачать список событий действий в виде файла с разделителями-запятыми (CSV), выберите Скачать.
Получение журналов аудита с помощью API отчетов Microsoft Entra
Журналы аудита публикуются в том же конвейере, что и другие действия для идентификатора Microsoft Entra, поэтому к них можно получить доступ через API отчетов Microsoft Entra. Дополнительные сведения см. в статье Начало работы с API отчетов Microsoft Entra.
Включение доступа к API отчетов
Чтобы разрешить доступ на основе скриптов или приложений к API отчетов Microsoft Entra, вам потребуется приложение, зарегистрированное в клиенте Azure AD B2C со следующими разрешениями API. Можно включить эти разрешения для существующей регистрации приложения в клиенте B2C или создать новую регистрацию специально для автоматизации обработки журналов аудита.
- Microsoft Graph > Разрешения приложения > AuditLog > AuditLog.Read.All
Чтобы зарегистрировать приложение с необходимыми разрешениями, выполните действия, описанные в следующей статье:
Управление Azure AD B2C с помощью Microsoft Graph
В разделе со скриптом PowerShell далее в этой статье приведены примеры того, как после регистрации приложения с соответствующими разрешениями получить доступ к событиям действий с помощью скрипта.
Доступ к API
Чтобы скачать события журналов аудита Azure AD B2C через API, нужно отфильтровать журналы по категории B2C
. Чтобы выполнить фильтрацию filter
по категориям, используйте параметр строки запроса при вызове конечной точки API отчетов Microsoft Entra.
https://graph.microsoft.com/v1.0/auditLogs/directoryAudits?$filter=loggedByService eq 'B2C' and activityDateTime gt 2019-09-10T02:28:17Z
Сценарий PowerShell
В следующем скрипте PowerShell показан пример запроса к API отчетов Microsoft Entra. После запроса к API события из журнала выводятся в стандартный поток вывода, а затем выходные данные JSON записываются в файл.
Можно попробовать запустить этот скрипт с помощью Azure Cloud Shell. Обязательно добавьте в него свой идентификатор приложения, секрет клиента и имя клиента Azure AD B2C.
# This script requires an application registration that's granted Microsoft Graph API permission
# https://learn.microsoft.com/azure/active-directory-b2c/microsoft-graph-get-started
# Constants
$ClientID = "your-client-application-id-here" # Insert your application's client ID, a GUID
$ClientSecret = "your-client-application-secret-here" # Insert your application's client secret value
$tenantdomain = "your-b2c-tenant.onmicrosoft.com" # Insert your Azure AD B2C tenant domain name
$loginURL = "https://login.microsoftonline.com"
$resource = "https://graph.microsoft.com" # Microsoft Graph API resource URI
$7daysago = "{0:s}" -f (get-date).AddDays(-7) + "Z" # Use 'AddMinutes(-5)' to decrement minutes, for example
Write-Output "Searching for events starting $7daysago"
# Create HTTP header, get an OAuth2 access token based on client id, secret and tenant domain
$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
# Parse audit report items, save output to file(s): auditX.json, where X = 0 through n for number of nextLink pages
if ($oauth.access_token -ne $null) {
$i=0
$headerParams = @{'Authorization'="$($oauth.token_type) $($oauth.access_token)"}
$url = "https://graph.microsoft.com/v1.0/auditLogs/directoryAudits?`$filter=loggedByService eq 'B2C' and activityDateTime gt " + $7daysago
# loop through each query page (1 through n)
Do {
# display each event on the console window
Write-Output "Fetching data using Uri: $url"
$myReport = (Invoke-WebRequest -UseBasicParsing -Headers $headerParams -Uri $url)
foreach ($event in ($myReport.Content | ConvertFrom-Json).value) {
Write-Output ($event | ConvertTo-Json)
}
# save the query page to an output file
Write-Output "Save the output to a file audit$i.json"
$myReport.Content | Out-File -FilePath audit$i.json -Force
$url = ($myReport.Content | ConvertFrom-Json).'@odata.nextLink'
$i = $i+1
} while($url -ne $null)
} else {
Write-Host "ERROR: No Access Token"
}
Ниже показано представление JSON для события действия, рассмотренного ранее в этой статье:
{
"id": "B2C_DQO3J_4984536",
"category": "Authentication",
"correlationId": "00000000-0000-0000-0000-000000000000",
"result": "success",
"resultReason": "N/A",
"activityDisplayName": "Issue an id_token to the application",
"activityDateTime": "2019-09-14T18:13:17.0618117Z",
"loggedByService": "B2C",
"operationType": "",
"initiatedBy": {
"user": null,
"app": {
"appId": "00000000-0000-0000-0000-000000000000",
"displayName": null,
"servicePrincipalId": null,
"servicePrincipalName": "00000000-0000-0000-0000-000000000000"
}
},
"targetResources": [
{
"id": "00000000-0000-0000-0000-000000000000",
"displayName": null,
"type": "User",
"userPrincipalName": null,
"groupType": null,
"modifiedProperties": []
}
],
"additionalDetails": [
{
"key": "TenantId",
"value": "test.onmicrosoft.com"
},
{
"key": "PolicyId",
"value": "B2C_1A_signup_signin"
},
{
"key": "ApplicationId",
"value": "00000000-0000-0000-0000-000000000000"
},
{
"key": "Client",
"value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36"
},
{
"key": "IdentityProviderName",
"value": "facebook"
},
{
"key": "IdentityProviderApplicationId",
"value": "0000000000000000"
},
{
"key": "ClientIpAddress",
"value": "127.0.0.1"
}
]
}
Дальнейшие действия
Можно автоматизировать другие задачи администрирования, например организовать управление учетными записями пользователей Azure AD B2C с помощью Microsoft Graph.