Acceso a los registros de auditoría de Azure AD B2CAccessing Azure AD B2C audit logs

Azure Active Directory B2C (Azure AD B2C) emite registros de auditoría que contienen información sobre los recursos de B2C, los tokens emitidos y el acceso de administrador.Azure Active Directory B2C (Azure AD B2C) emits audit logs containing activity information about B2C resources, tokens issued, and administrator access. En este artículo se proporciona un breve resumen de la información disponible en los registros de auditoría e instrucciones sobre cómo acceder a estos datos del inquilino de Azure AD B2C.This article provides a brief overview of the information available in audit logs and instructions on how to access this data for your Azure AD B2C tenant.

Los eventos de registro de auditoría solo se conservan durante siete días.Audit log events are only retained for seven days. Si necesita un periodo de retención mayor, planee la descarga y el almacenamiento de los registros mediante alguno de los métodos que se muestran a continuación.Plan to download and store your logs using one of the methods shown below if you require a longer retention period.

Nota

No puede ver inicios de sesión de usuario para aplicaciones individuales de Azure AD B2C en la sección Usuarios de la página Azure Active Directory o Azure AD B2C en Azure Portal.You can't see user sign-ins for individual Azure AD B2C applications under the Users section of the Azure Active Directory or Azure AD B2C pages in the Azure portal. Los eventos de inicio de sesión muestran la actividad del usuario, pero no pueden correlacionarse de nuevo con la aplicación B2C en que el usuario inició sesión.The sign-in events there show user activity, but can't be correlated back to the B2C application that the user signed in to. Debe usar los registros de auditoría para ello, como se explica en este artículo.You must use the audit logs for that, as explained further in this article.

Información general sobre las actividades disponibles en la categoría B2C de los registros de auditoríaOverview of activities available in the B2C category of audit logs

La categoría B2C de los registros de auditoría contiene los siguientes tipos de actividades:The B2C category in audit logs contains the following types of activities:

Tipo de actividadActivity type DescripciónDescription
AuthorizationAuthorization Actividades relacionadas con la autorización de un usuario para acceder a los recursos de B2C (por ejemplo, un administrador que accede a una lista de directivas de B2C).Activities concerning the authorization of a user to access B2C resources (for example, an administrator accessing a list of B2C policies).
DirectorioDirectory Actividades relacionadas con los atributos de directorio que se recuperan cuando un administrador inicia sesión con Azure Portal.Activities related to directory attributes retrieved when an administrator signs in using the Azure portal.
ApplicationApplication Operaciones de creación, lectura, actualización y eliminación (CRUD) en aplicaciones B2C.Create, read, update, and delete (CRUD) operations on B2C applications.
ClaveKey Operaciones CRUD en claves almacenadas en un contenedor de claves B2C.CRUD operations on keys stored in a B2C key container.
ResourceResource Operaciones CRUD en recursos B2C.CRUD operations on B2C resources. Por ejemplo, directivas y proveedores de identidades.For example, policies and identity providers.
AuthenticationAuthentication Validación de credenciales de usuario y emisión de tokens.Validation of user credentials and token issuance.

Para las actividades CRUD de objeto de usuario, vea la categoría Core Directory.For user object CRUD activities, refer to the Core Directory category.

Actividad de ejemploExample activity

En esta imagen de ejemplo de Azure Portal se muestran los datos capturados cuando un usuario inicia sesión con un proveedor de identidades externo, en este caso, Facebook:This example image from the Azure portal shows the data captured when a user signs in with an external identity provider, in this case, Facebook:

Ejemplo de la página Detalles de la actividad del Registro de auditoría de Azure Portal

El panel de detalles de actividad contiene la siguiente información pertinente:The activity details panel contains the following relevant information:

SecciónSection CampoField DescripciónDescription
ActividadActivity NombreName Qué actividad tuvo lugar.Which activity took place. Por ejemplo, Emitir un valor de id_token a la aplicación, que finaliza el inicio de sesión efectivo del usuario.For example, Issue an id_token to the application, which concludes the actual user sign-in.
Iniciado por (actor)Initiated By (Actor) ObjectIdObjectId El identificador de objeto de la aplicación B2C en que el usuario está iniciando sesión.The Object ID of the B2C application that the user is signing in to. Este identificador no es visible en Azure Portal, pero es accesible a través de Microsoft Graph API.This identifier is not visible in the Azure portal, but is accessible via the Microsoft Graph API.
Iniciado por (actor)Initiated By (Actor) SpnSpn El identificador de aplicación de la aplicación B2C en que el usuario está iniciando sesión.The Application ID of the B2C application that the user is signing in to.
DestinosTarget(s) ObjectIdObjectId El identificador de objeto del usuario que está iniciando sesión.The Object ID of the user that is signing in.
Detalles adicionalesAdditional Details TenantIdTenantId El identificador de inquilino del inquilino de Azure AD B2C.The Tenant ID of the Azure AD B2C tenant.
Detalles adicionalesAdditional Details PolicyIdPolicyId El identificador de directiva del flujo de usuario (directiva) que se usa para iniciar la sesión del usuario.The Policy ID of the user flow (policy) being used to sign the user in.
Detalles adicionalesAdditional Details ApplicationIdApplicationId El identificador de aplicación de la aplicación B2C en que el usuario está iniciando sesión.The Application ID of the B2C application that the user is signing in to.

Visualización de registros de auditoría en Azure PortalView audit logs in the Azure portal

Azure Portal proporciona acceso a los eventos de registro de auditoría en su inquilino de Azure AD B2C.The Azure portal provides access to the audit log events in your Azure AD B2C tenant.

  1. Inicie sesión en el Portal de AzureSign in to the Azure portal
  2. Cambie al directorio que contiene el inquilino de Azure AD B2C y, a continuación, vaya a Azure AD B2C.Switch to the directory that contains your Azure AD B2C tenant, and then browse to Azure AD B2C.
  3. En Actividades en el menú de la izquierda, seleccione Registros de auditoría.Under Activities in the left menu, select Audit logs.

Se muestra una lista de los eventos de actividad registrados en los últimos siete días.A list of activity events logged over the last seven days is displayed.

Filtro de ejemplo con dos eventos de actividad en Azure Portal

Hay varias opciones de filtrado disponibles, entre las que se incluyen:Several filtering options are available, including:

Si selecciona una fila de la lista, se mostrarán los detalles de la actividad para el evento.If you select a row in the list, the activity details for the event are displayed.

Para descargar la lista de eventos de actividad en un archivo de valores separados por comas (CSV), seleccione Descargar.To download the list of activity events in a comma-separated values (CSV) file, select Download.

Obtención de registros de auditoría con la API de generación de informes de Azure ADGet audit logs with the Azure AD reporting API

Los registros de auditoría se publican en la misma canalización que otras actividades de Azure Active Directory, por lo que son accesibles a través de la API de informes de Azure Active Directory.Audit logs are published to the same pipeline as other activities for Azure Active Directory, so they can be accessed through the Azure Active Directory reporting API. Para más información, consulte Introducción a la API de generación de informes de Azure Active Directory.For more information, see Get started with the Azure Active Directory reporting API.

Habilitación del acceso a la API de generación de informesEnable reporting API access

Para permitir el acceso basado en script o en aplicaciones a la API de generación de informes de Azure AD, necesita una aplicación registrada en su inquilino de Azure AD B2C con los permisos de API siguientes.To allow script- or application-based access to the Azure AD reporting API, you need an application registered in your Azure AD B2C tenant with the following API permissions. Puede habilitar estos permisos en un registro de aplicación existente dentro del inquilino de B2C, o bien crear uno nuevo específicamente para usarlo con la automatización de los registros de auditoría.You can enable these permissions on an existing application registration within your B2C tenant, or create a new one specifically for use with audit log automation.

  • Microsoft Graph > Permisos de aplicación > AuditLog > AuditLog.Read.AllMicrosoft Graph > Application permissions > AuditLog > AuditLog.Read.All

Siga los pasos del siguiente artículo para registrar una aplicación con los permisos necesarios:Follow the steps in the following article to register an application with the required permissions:

Administrar Azure AD B2C con Microsoft GraphManage Azure AD B2C with Microsoft Graph

Después de registrar una aplicación con los permisos adecuados, consulte la sección de scripts de PowerShell que aparece más adelante en este artículo para ver un ejemplo de cómo puede obtener eventos de actividad con un script.After you've registered an application with the appropriate permissions, see the PowerShell script section later in this article for an example of how you can get activity events with a script.

Acceso a la APIAccess the API

Para descargar los eventos de registro de auditoría de Azure AD B2C a través de la API, filtre los registros en la categoría B2C.To download Azure AD B2C audit log events via the API, filter the logs on the B2C category. Para filtrar por categoría, use el parámetro de cadena de consulta filter al llamar al punto de conexión de la API de generación de informes de Azure AD.To filter by category, use the filter query string parameter when you call the Azure AD reporting API endpoint.

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

Script de PowerShellPowerShell script

En el script de PowerShell siguiente se muestra un ejemplo de cómo consultar la API de generación de informes de Azure AD.The following PowerShell script shows an example of how to query the Azure AD reporting API. Después de consultar la API, se imprimen los eventos registrados en la salida estándar y, a continuación, se escribe la salida JSON en un archivo.After querying the API, it prints the logged events to standard output, then writes the JSON output to a file.

Puede probar este script en Azure Cloud Shell.You can try this script in the Azure Cloud Shell. Asegúrese de actualizarlo con el identificador de la aplicación, el secreto de cliente y el nombre de su inquilino de Azure AD B2C.Be sure to update it with your application ID, client secret, and the name of your Azure AD B2C tenant.

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

Esta es la representación JSON del evento de actividad de ejemplo que se mostró anteriormente en el artículo:Here's the JSON representation of the example activity event shown earlier in the 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"
        }
    ]
}

Pasos siguientesNext steps

Puede automatizar otras tareas de administración, por ejemplo, administrar cuentas de usuario de Azure AD B2C con Microsoft Graph.You can automate other administration tasks, for example, manage Azure AD B2C user accounts with Microsoft Graph.