Accès aux journaux d’audit Azure AD B2C

Azure Active Directory B2C (Azure AD B2C) produit des journaux d’audit contenant des informations sur les activités liées aux ressources, aux jetons émis et à l’accès administrateur B2C. Cet article fournit une rapide vue d’ensemble des informations disponibles dans les journaux d’audit, ainsi que des instructions pour accéder à ces données pour votre locataire Azure AD B2C.

Les événements des journaux d’audit sont uniquement conservés pendant sept jours. Envisagez de télécharger et stocker vos journaux d’activité en utilisant l’une des méthodes indiquées ci-dessous si vous avez besoin d’une période de rétention plus longue.

Notes

Vous ne voyez pas de connexions utilisateur pour les applications Azure AD B2C individuelles dans la section Utilisateurs des pages Microsoft Entra ID ou Azure AD B2C dans le Portail Azure. Les événements de connexion affichent l’activité de l’utilisateur, mais ne peuvent pas être corrélés avec l’application B2C à laquelle l’utilisateur s’est connecté. Pour cela, vous devez utiliser les journaux d’audit, comme expliqué dans cet article.

Vue d’ensemble des activités disponibles dans la catégorie B2C des journaux d’audit

La catégorie B2C des journaux d’audit contient les types d’activités suivants :

Type d’activité Description
Autorisation Activités relatives à l’autorisation d’un utilisateur d’accéder à des ressources B2C (par exemple, un administrateur qui accède à la liste des stratégies B2C).
Répertoire Activités relatives aux attributs d’annuaire récupérés quand un administrateur se connecte en utilisant le Portail Microsoft Azure.
Application Opérations de création, lecture, mise à jour et suppression (CRUD) sur les applications B2C.
Clé Opérations CRUD sur les clés stockées dans le conteneur de clé B2C.
Ressource Opérations CRUD sur les ressources B2C. Par exemple, les stratégies et les fournisseurs d’identité.
Authentification Validation des informations d’identification des utilisateurs et de l’émission des jetons.

Pour les activités CRUD des objets utilisateur, reportez-vous à la catégorie Annuaire principal.

Exemple d’activité

Cet exemple d’image du portail Azure montre les données capturées lorsqu’un utilisateur se connecte avec un fournisseur d’identité externe, dans ce cas, Facebook :

Exemple de page Détails de l’activité du journal d’audit du Portail Microsoft Azure

Le volet des détails de l’activité contient les informations pertinentes suivantes :

Section Champ Description
Activité Nom Activité qui a eu lieu. Par exemple, Émettre un id_token pour l’application, qui conclut la connexion d’utilisateur réelle.
Initié par (intervenant) ObjectId ID d’objet de l’application B2C à laquelle l’utilisateur se connecte. Cet identificateur n’est pas visible dans le portail Azure, mais il est accessible via l’API Microsoft Graph.
Initié par (intervenant) Nom de principal de service ID d’Application de l’application B2C à laquelle l’utilisateur se connecte.
Cible(s) ObjectId ID d’objet de l’utilisateur qui se connecte.
Informations supplémentaires TenantId ID de locataire du locataire Azure AD B2C.
Informations supplémentaires PolicyId ID de stratégie du flux d’utilisateur (stratégie) utilisé pour la connexion de l’utilisateur.
Informations supplémentaires ApplicationId ID d’Application de l’application B2C à laquelle l’utilisateur se connecte.

Afficher des journaux d’audit dans le portail Azure

Le portail Azure permet d’accéder aux événements du journal d’audit dans votre locataire Azure AD B2C.

  1. Connectez-vous au portail Azure.
  2. Basculez vers le répertoire qui contient votre locataire Azure AD B2C, puis accédez à Azure AD B2C.
  3. Sous Activités dans le menu de gauche, sélectionnez Journaux d’audit.

Une liste des événements d’activité journalisés au cours des sept derniers jours s’affiche.

Exemple de filtre avec deux événements d’activité dans le portail Azure

Plusieurs options de filtrage sont disponibles, notamment :

Si vous sélectionnez une ligne dans la liste, les détails de l’activité de l’événement s’affichent.

Pour télécharger la liste des événements d’activité dans un fichier de valeurs séparées par des virgules (CSV), sélectionnez Télécharger.

Obtenir des journaux d’audit avec l’API de création de rapports Microsoft Entra

Les journaux d'audit sont publiés sur le même pipeline que les autres activités pour Microsoft Entra ID, afin qu'ils soient accessibles via l'API de reporting Microsoft Entra. Pour plus d’informations, consultez Démarrez avec l’API de reporting Microsoft Entra.

Activer l’accès à l’API de rapports

Pour autoriser l’accès basé sur un script ou une application à l’API de création de rapports Microsoft Entra, vous avez besoin d’une application inscrite dans votre locataire Azure AD B2C avec les autorisations d’API suivantes. Vous pouvez activer ces autorisations sur une inscription d’application existante au sein de votre locataire B2C, ou en créer une autre spécifiquement pour une utilisation avec l’automatisation des journaux d’audit.

  • Microsoft Graph > Autorisations d’application > AuditLog > AuditLog.Read.All

Suivez les étapes de l’article suivant pour inscrire une application avec les autorisations requises :

Gérer Azure AD B2C avec Microsoft Graph

Après avoir inscrit une application avec les autorisations appropriées, voir la section Script PowerShell plus loin dans cet article pour obtenir un exemple de la façon dont vous pouvez obtenir des événements d’activité à l’aide d’un script.

Accéder à l’API

Pour télécharger les événements du journal d’audit Azure AD B2C via l’API, filtrez les journaux avec la catégorie B2C. Pour filtrer par catégorie, utilisez le paramètre de chaîne de requête filter lors de l’appel du point de terminaison de l’API de création de rapports Microsoft Entra.

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

Script PowerShell

Le script PowerShell suivant montre un exemple d’interrogation de l’API de création de rapports Microsoft Entra. Après l’interrogation de l’API, le script imprime les événements journalisés dans la sortie standard, puis écrit la sortie JSON dans un fichier.

Vous pouvez essayer ce script dans Azure Cloud Shell. Veillez à le mettre à jour avec votre ID d’application, votre clé secrète client et le nom de votre abonné 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"
}

Voici la représentation JSON de l’exemple d’événement d’activité illustré plus haut dans l’article :

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

Étapes suivantes

Vous pouvez automatiser d’autres tâches d’administration, par exemple, gérer les comptes d’utilisateurs Azure AD B2C avec Microsoft Graph.