Komma åt Azure AD B2C-granskningsloggar

Azure Active Directory B2C (Azure AD B2C) skickar spårningsloggar med aktivitetsinformation om B2C-resurser, utfärdade token och administratörsåtkomst. Den här artikeln innehåller en kort översikt över den information som är tillgänglig i granskningsloggar och instruktioner om hur du kommer åt dessa data för din Azure AD B2C-klientorganisation.

Granskningslogghändelser behålls bara i sju dagar. Planera att ladda ned och lagra loggarna med någon av metoderna som visas nedan om du behöver en längre kvarhållningsperiod.

Anteckning

Du kan inte se användarinloggningar för enskilda Azure AD B2C-program under avsnittet Användare i Microsoft Entra-ID eller Azure AD B2C-sidor i Azure Portal. Inloggningshändelserna där visar användaraktivitet, men kan inte korreleras tillbaka till B2C-programmet som användaren loggade in på. Du måste använda granskningsloggarna för detta, enligt beskrivningen i den här artikeln.

Översikt över aktiviteter som är tillgängliga i B2C-kategorin för granskningsloggar

B2C-kategorin i granskningsloggar innehåller följande typer av aktiviteter:

Aktivitetstyp Description
Auktorisering Aktiviteter som rör auktorisering av en användare för åtkomst till B2C-resurser (till exempel en administratör som har åtkomst till en lista över B2C-principer).
Katalog Aktiviteter relaterade till katalogattribut som hämtas när en administratör loggar in med hjälp av Azure Portal.
Program Skapa, läsa, uppdatera och ta bort åtgärder (CRUD) i B2C-program.
Nyckel CRUD-åtgärder på nycklar som lagras i en B2C-nyckelcontainer.
Resurs CRUD-åtgärder på B2C-resurser. Till exempel principer och identitetsprovidrar.
Autentisering Validering av användarautentiseringsuppgifter och tokenutfärdning.

För CRUD-aktiviteter för användarobjekt läser du kategorin Core Directory .

Exempelaktivitet

Den här exempelbilden från Azure Portal visar data som samlas in när en användare loggar in med en extern identitetsprovider, i det här fallet Facebook:

Exempel på sidan Granskningsloggaktivitetsinformation i Azure Portal

Panelen med aktivitetsinformation innehåller följande relevanta information:

Avsnitt Fält Beskrivning
Aktivitet Name Vilken aktivitet ägde rum. Till exempel Utfärda en id_token till programmet, som avslutar den faktiska användarinloggningen.
Initierad av (aktör) ObjectId Objekt-ID för B2C-programmet som användaren loggar in på. Den här identifieraren visas inte i Azure Portal, men är tillgänglig via Microsoft Graph API.
Initierad av (aktör) Spn Program-ID för B2C-programmet som användaren loggar in på.
Mål ObjectId Objekt-ID för användaren som loggar in.
Ytterligare information TenantId Klientorganisations-ID för Azure AD B2C-klientorganisation.
Ytterligare information PolicyId Princip-ID för användarflödet (principen) som används för att logga in användaren.
Ytterligare information ApplicationId Program-ID för B2C-programmet som användaren loggar in på.

Visa granskningsloggar i Azure Portal

Azure Portal ger åtkomst till granskningslogghändelserna i din Azure AD B2C-klientorganisation.

  1. Logga in på Azure-portalen.
  2. Växla till katalogen som innehåller din Azure AD B2C-klientorganisation och bläddra sedan till Azure AD B2C.
  3. Under Aktiviteter på den vänstra menyn väljer du Granskningsloggar.

En lista över aktivitetshändelser som loggats under de senaste sju dagarna visas.

Exempelfilter med två aktivitetshändelser i Azure Portal

Det finns flera filtreringsalternativ, bland annat:

Om du väljer en rad i listan visas aktivitetsinformationen för händelsen.

Om du vill ladda ned listan över aktivitetshändelser i en fil med kommaavgränsade värden (CSV) väljer du Ladda ned.

Hämta granskningsloggar med Microsoft Entra rapporterings-API:et

Granskningsloggar publiceras till samma pipeline som andra aktiviteter för Microsoft Entra-ID, så att de kan nås via Microsoft Entra rapporterings-API:et. Mer information finns i Komma igång med Microsoft Entra rapporterings-API:et.

Aktivera rapporterings-API-åtkomst

För att tillåta skript- eller programbaserad åtkomst till Microsoft Entra rapporterings-API:et behöver du ett program registrerat i din Azure AD B2C-klientorganisation med följande API-behörigheter. Du kan aktivera dessa behörigheter för en befintlig programregistrering i din B2C-klientorganisation eller skapa en ny som specifikt används med granskningsloggautomatisering.

  • Microsoft Graph-programbehörigheter >> AuditLog > AuditLog.Read.All

Följ stegen i följande artikel för att registrera ett program med de behörigheter som krävs:

Hantera Azure AD B2C med Microsoft Graph

När du har registrerat ett program med lämpliga behörigheter kan du läsa avsnittet PowerShell-skript senare i den här artikeln för ett exempel på hur du kan hämta aktivitetshändelser med ett skript.

Åtkomst till API:et

Om du vill ladda ned Azure AD B2C-granskningslogghändelser via API:et filtrerar du loggarna i B2C kategorin. Om du vill filtrera efter kategori använder du frågesträngsparametern filter när du anropar Microsoft Entra rapport-API-slutpunkten.

https://graph.microsoft.com/v1.0/auditLogs/directoryAudits?$filter=loggedByService eq 'B2C' and activityDateTime gt 2019-09-10T02:28:17Z

PowerShell-skript

Följande PowerShell-skript visar ett exempel på hur du frågar Microsoft Entra rapporterings-API:et. När du har frågat API:et skriver den ut de loggade händelserna till standardutdata och skriver sedan JSON-utdata till en fil.

Du kan prova det här skriptet i Azure Cloud Shell. Se till att uppdatera den med ditt program-ID, klienthemlighet och namnet på din Azure AD B2C-klientorganisation.

# This script requires an application registration that's granted Microsoft Graph API permission
# https://video2.skills-academy.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"
}

Här är JSON-representationen av exempelaktivitetshändelsen som visades tidigare i artikeln:

{
    "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"
        }
    ]
}

Nästa steg

Du kan automatisera andra administrationsuppgifter, till exempel hantera Azure AD B2C-användarkonton med Microsoft Graph.