Uzyskiwanie dostępu do dzienników inspekcji usługi Azure AD B2C
Usługa Azure Active Directory B2C (Azure AD B2C) emituje dzienniki inspekcji zawierające informacje o aktywności dotyczące zasobów B2C, wystawionych tokenów i dostępu administratora. Ten artykuł zawiera krótkie omówienie informacji dostępnych w dziennikach inspekcji i instrukcje dotyczące uzyskiwania dostępu do tych danych dla dzierżawy usługi Azure AD B2C.
Zdarzenia dziennika inspekcji są zachowywane tylko przez siedem dni. Zaplanuj pobieranie i przechowywanie dzienników przy użyciu jednej z metod przedstawionych poniżej, jeśli potrzebujesz dłuższego okresu przechowywania.
Uwaga
Logowania użytkowników dla poszczególnych aplikacji Azure AD B2C nie są widoczne w sekcji Użytkownicy identyfikatora Microsoft Entra lub Azure AD stron B2C w Azure Portal. Zdarzenia logowania pokazują aktywność użytkownika, ale nie można ich skorelować z aplikacją B2C zalogowaną przez użytkownika. W tym artykule należy użyć dzienników inspekcji, zgodnie z opisem w tym artykule.
Omówienie działań dostępnych w kategorii B2C dzienników inspekcji
Kategoria B2C w dziennikach inspekcji zawiera następujące typy działań:
Typ działania | Opis |
---|---|
Autoryzacja | Działania dotyczące autoryzacji użytkownika w celu uzyskania dostępu do zasobów B2C (na przykład administratora, który uzyskuje dostęp do listy zasad B2C). |
Directory | Działania związane z atrybutami katalogu pobierane, gdy administrator loguje się przy użyciu Azure Portal. |
Aplikacja | Tworzenie, odczytywanie, aktualizowanie i usuwanie operacji (CRUD) w aplikacjach B2C. |
Klucz | Operacje CRUD na kluczach przechowywanych w kontenerze kluczy B2C. |
Zasób | Operacje CRUD na zasobach B2C. Na przykład zasady i dostawcy tożsamości. |
Authentication | Walidacja poświadczeń użytkownika i wystawiania tokenów. |
W przypadku działań CRUD obiektu użytkownika zapoznaj się z kategorią Katalog podstawowy .
Przykładowe działanie
Ten przykładowy obraz z Azure Portal przedstawia dane przechwycone, gdy użytkownik loguje się za pomocą zewnętrznego dostawcy tożsamości, w tym przypadku Facebook:
Panel szczegółów działania zawiera następujące istotne informacje:
Sekcja | Pole | Opis |
---|---|---|
Działanie | Nazwa | Które działanie miało miejsce. Na przykład problem z id_token do aplikacji, który kończy rzeczywiste logowanie użytkownika. |
Zainicjowane przez (aktor) | ObjectId | Identyfikator obiektu aplikacji B2C, do której loguje się użytkownik. Ten identyfikator nie jest widoczny w Azure Portal, ale jest dostępny za pośrednictwem interfejs Graph API firmy Microsoft. |
Zainicjowane przez (aktor) | Spn | Identyfikator aplikacji B2C, do której loguje się użytkownik. |
Elementy docelowe | ObjectId | Identyfikator obiektu zalogowanego użytkownika. |
Dodatkowe szczegóły | TenantId | Identyfikator dzierżawy dzierżawy usługi Azure AD B2C. |
Dodatkowe szczegóły | PolicyId | Identyfikator zasad przepływu użytkownika (zasad) używany do logowania użytkownika. |
Dodatkowe szczegóły | ApplicationId | Identyfikator aplikacji B2C, do której loguje się użytkownik. |
Wyświetlanie dzienników inspekcji w Azure Portal
Azure Portal zapewnia dostęp do zdarzeń dziennika inspekcji w dzierżawie usługi Azure AD B2C.
- Zaloguj się w witrynie Azure Portal.
- Przejdź do katalogu zawierającego dzierżawę usługi Azure AD B2C, a następnie przejdź do Azure AD B2C.
- W obszarze Działania w menu po lewej stronie wybierz pozycję Dzienniki inspekcji.
Zostanie wyświetlona lista zdarzeń aktywności zarejestrowanych w ciągu ostatnich siedmiu dni.
Dostępnych jest kilka opcji filtrowania, w tym:
- Typ zasobu działania — filtruj według typów działań przedstawionych w tabeli w sekcji Przegląd dostępnych działań .
- Date — filtruj zakres dat wyświetlanych działań.
Jeśli wybierzesz wiersz na liście, zostaną wyświetlone szczegóły działania zdarzenia.
Aby pobrać listę zdarzeń działań w pliku wartości rozdzielanych przecinkami (CSV), wybierz pozycję Pobierz.
Uzyskiwanie dzienników inspekcji za pomocą interfejsu API raportowania Microsoft Entra
Dzienniki inspekcji są publikowane w tym samym potoku co inne działania dotyczące identyfikatora Microsoft Entra, aby można było uzyskać do nich dostęp za pośrednictwem interfejsu API raportowania Microsoft Entra. Aby uzyskać więcej informacji, zobacz Wprowadzenie do interfejsu API raportowania Microsoft Entra.
Włączanie dostępu do interfejsu API raportowania
Aby zezwolić na dostęp oparty na skryptach lub aplikacjach do interfejsu API raportowania Microsoft Entra, potrzebna jest aplikacja zarejestrowana w dzierżawie usługi Azure AD B2C z następującymi uprawnieniami interfejsu API. Te uprawnienia można włączyć w istniejącej rejestracji aplikacji w ramach dzierżawy B2C lub utworzyć nową, która jest przeznaczona do użycia z automatyzacją dzienników inspekcji.
- Uprawnienia > aplikacji programu Microsoft Graph > AuditLog.Read.All >
Wykonaj kroki opisane w poniższym artykule, aby zarejestrować aplikację z wymaganymi uprawnieniami:
Zarządzanie usługą Azure AD B2C za pomocą programu Microsoft Graph
Po zarejestrowaniu aplikacji z odpowiednimi uprawnieniami zapoznaj się z sekcją skryptu programu PowerShell w dalszej części tego artykułu, aby zapoznać się z przykładem sposobu uzyskiwania zdarzeń działań za pomocą skryptu.
Dostęp do interfejsu API
Aby pobrać Azure AD zdarzenia dziennika inspekcji B2C za pośrednictwem interfejsu API, przefiltruj dzienniki w B2C
kategorii. Aby filtrować według kategorii, użyj parametru filter
ciągu zapytania podczas wywoływania punktu końcowego interfejsu API raportowania Microsoft Entra.
https://graph.microsoft.com/v1.0/auditLogs/directoryAudits?$filter=loggedByService eq 'B2C' and activityDateTime gt 2019-09-10T02:28:17Z
Skrypt programu PowerShell
Poniższy skrypt programu PowerShell przedstawia przykład wykonywania zapytań dotyczących interfejsu API raportowania Microsoft Entra. Po wykonaniu zapytania względem interfejsu API wyświetla zarejestrowane zdarzenia do standardowych danych wyjściowych, a następnie zapisuje dane wyjściowe JSON w pliku.
Ten skrypt można wypróbować w usłudze Azure Cloud Shell. Pamiętaj, aby zaktualizować ją przy użyciu identyfikatora aplikacji, klucza tajnego klienta i nazwy dzierżawy usługi 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"
}
Oto reprezentacja JSON przykładowego zdarzenia działania pokazanego wcześniej w artykule:
{
"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"
}
]
}
Następne kroki
Możesz zautomatyzować inne zadania administracyjne, na przykład zarządzać kontami użytkowników usługi Azure AD B2C przy użyciu programu Microsoft Graph.