Condividi tramite


Accesso ai log di controllo di Azure AD B2C

Azure Active Directory B2C (Azure AD B2C) genera log di controllo contenenti informazioni sulle attività relative ad accesso amministrativo, token rilasciati e risorse B2C. Questo articolo fornisce una breve panoramica delle informazioni disponibili nei log di controllo e istruzioni su come accedere a questi dati per il tenant di Azure AD B2C.

Gli eventi del log di controllo vengono conservati solo per sette giorni. Se è necessario conservarli per un periodo più lungo, pianificare il download e l'archiviazione dei log con uno dei metodi illustrati sotto.

Nota

Non è possibile visualizzare gli accessi utente per le singole applicazioni Azure AD B2C nella sezione Utenti delle pagine ID Microsoft Entra o Azure AD B2C nel portale di Azure. Gli eventi di accesso mostrano l'attività dell'utente, ma non possono essere correlati all'applicazione B2C a cui l'utente ha eseguito l'accesso. È necessario usare i log di controllo per tale operazione, come illustrato più avanti in questo articolo.

Panoramica delle attività disponibili nella categoria B2C dei log di controllo

La categoria B2C nei log di controllo contiene i tipi di attività seguenti:

Tipo di attività Descrizione
Autorizzazione Attività relative all'autorizzazione di un utente per accedere alle risorse B2C, ad esempio un amministratore che accede a un elenco di criteri B2C.
Directory Attività correlate agli attributi della directory recuperate quando un amministratore accede usando il portale di Azure.
Applicazioni Operazioni di creazione, lettura, aggiornamento ed eliminazione (CRUD) nelle applicazioni B2C.
Chiave Operazioni CRUD sulle chiavi archiviate in un contenitore di chiavi B2C.
Risorsa Operazioni CRUD sulle risorse B2C. Ad esempio, criteri e provider di identità.
Autenticazione Convalida delle credenziali utente e del rilascio di token.

Per le attività CRUD sugli oggetti utente, vedere la categoria Directory principale.

Attività di esempio

Questa immagine di esempio del portale di Azure mostra i dati acquisiti quando un utente accede con un provider di identità esterno, in questo caso Facebook:

Esempio di pagina Dettagli attività log di controllo in portale di Azure

Il pannello dei dettagli dell'attività contiene le informazioni pertinenti seguenti:

Sezione Campo Descrizione
Attività Nome Quale attività ha avuto luogo. Ad esempio, eseguire un id_token all'applicazione, che conclude l'accesso utente effettivo.
Azione avviata da (attore) ObjectId ID oggetto dell'applicazione B2C a cui l'utente accede. Questo identificatore non è visibile nella portale di Azure, ma è accessibile tramite microsoft API Graph.
Azione avviata da (attore) Spn ID applicazione dell'applicazione B2C a cui l'utente accede.
Destinazione/i ObjectId ID oggetto dell'utente che esegue l'accesso.
Altri dettagli TenantId ID tenant del tenant di Azure AD B2C.
Altri dettagli PolicyId ID criterio del flusso utente (criterio) usato per accedere all'utente.
Altri dettagli ApplicationId ID applicazione dell'applicazione B2C a cui l'utente accede.

Visualizzare i log di controllo nel portale di Azure

Il portale di Azure fornisce l'accesso agli eventi del log di controllo nel tenant di Azure AD B2C.

  1. Accedere al portale di Azure.
  2. Passare alla directory che contiene il tenant di Azure AD B2C e quindi passare ad Azure AD B2C.
  3. In Attività nel menu a sinistra selezionare Log di controllo.

Viene visualizzato un elenco di eventi di attività registrati negli ultimi sette giorni.

Filtro di esempio con due eventi di attività in portale di Azure

Sono disponibili diverse opzioni di filtro, tra cui:

  • Tipo di risorsa attività : filtrare in base ai tipi di attività visualizzati nella tabella nella sezione Panoramica delle attività disponibili .
  • Data : consente di filtrare l'intervallo di date delle attività visualizzate.

Se si seleziona una riga nell'elenco, vengono visualizzati i dettagli dell'attività per l'evento.

Per scaricare l'elenco degli eventi di attività in un file con valori delimitati da virgole (CSV), selezionare Scarica.

Ottenere i log di controllo con l'API di creazione di report Microsoft Entra

I log di controllo vengono pubblicati nella stessa pipeline di altre attività per Microsoft Entra ID, quindi è possibile accedervi tramite l'API di creazione di report Microsoft Entra. Per altre informazioni, vedere Introduzione all'API di creazione di report di Microsoft Entra.

Abilitare l'accesso all'API per la creazione di report

Per consentire l'accesso basato su script o applicazioni all'API di creazione di report di Microsoft Entra, è necessaria un'applicazione registrata nel tenant di Azure AD B2C con le autorizzazioni API seguenti. È possibile abilitare queste autorizzazioni per una registrazione dell'applicazione esistente all'interno del tenant B2C oppure crearne una nuova specifica per l'uso con l'automazione dei log di controllo.

  • Autorizzazioni > dell'applicazione Microsoft Graph > AuditLog.Read.All >

Seguire la procedura descritta nell'articolo seguente per registrare un'applicazione con le autorizzazioni necessarie:

Gestire Azure AD B2C con Microsoft Graph

Dopo aver registrato un'applicazione con le autorizzazioni appropriate, vedere la sezione Script di PowerShell più avanti in questo articolo per un esempio di come ottenere eventi di attività con uno script.

Accedere all'API

Per scaricare gli eventi del log di controllo di Azure AD B2C tramite l'API, filtrare i log nella B2C categoria. Per filtrare in base alla categoria, usare il filter parametro della stringa di query quando si chiama l'endpoint dell'API di creazione di report Microsoft Entra.

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

Script PowerShell

Lo script di PowerShell seguente illustra un esempio di come eseguire query sull'API di creazione di report Microsoft Entra. Dopo aver eseguito una query sull'API, stampa gli eventi registrati nell'output standard, quindi scrive l'output JSON in un file.

È possibile provare questo script nel Cloud Shell di Azure. Assicurarsi di aggiornarlo con l'ID applicazione, il segreto client e il nome del tenant di 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"
}

Ecco la rappresentazione JSON dell'evento di attività di esempio illustrato in precedenza nell'articolo:

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

Passaggi successivi

È possibile automatizzare altre attività di amministrazione, ad esempio gestire gli account utente di Azure AD B2C con Microsoft Graph.