Aceder aos registos de auditoria do Azure AD B2C

O Azure Active Directory B2C (AAD B2C) emite registos de auditoria que contêm informações de atividade sobre recursos do B2C, tokens emitidos e acesso do administrador. Este artigo fornece uma breve descrição geral das informações disponíveis nos registos de auditoria e instruções sobre como aceder a estes dados para o seu inquilino Azure AD B2C.

Os eventos de registo de auditoria só são retidos durante sete dias. Planeie transferir e armazenar os registos com um dos métodos apresentados abaixo se precisar de um período de retenção mais longo.

Nota

Não pode ver inícios de sessão de utilizador para aplicações B2C Azure AD individuais na secção Utilizadores do ID do Microsoft Entra ou Azure AD páginas B2C no portal do Azure. Os eventos de início de sessão mostram a atividade do utilizador, mas não podem ser correlacionados com a aplicação B2C na qual o utilizador iniciou sessão. Tem de utilizar os registos de auditoria para tal, conforme explicado neste artigo.

Descrição geral das atividades disponíveis na categoria B2C dos registos de auditoria

A categoria B2C nos registos de auditoria contém os seguintes tipos de atividades:

Tipo de atividade Description
Autorização Atividades relacionadas com a autorização de um utilizador para aceder aos recursos B2C (por exemplo, um administrador que acede a uma lista de políticas B2C).
Diretório Atividades relacionadas com atributos de diretório obtidos quando um administrador inicia sessão com o portal do Azure.
Aplicação Crie, leia, atualize e elimine operações (CRUD) em aplicações B2C.
Chave Operações CRUD em chaves armazenadas num contentor de chaves B2C.
Recurso Operações CRUD em recursos B2C. Por exemplo, políticas e fornecedores de identidade.
Autenticação Validação de credenciais de utilizador e emissão de tokens.

Para atividades CRUD de objeto de utilizador, veja a categoria Diretório Principal .

Atividade de exemplo

Esta imagem de exemplo do portal do Azure mostra os dados capturados quando um utilizador inicia sessão com um fornecedor de identidade externo, neste caso, o Facebook:

Exemplo da página Detalhes da Atividade do Registo de Auditoria no portal do Azure

O painel de detalhes da atividade contém as seguintes informações relevantes:

Section Campo Descrição
Atividade Name Que atividade ocorreu. Por exemplo, Emita uma id_token para a aplicação, que conclui o início de sessão do utilizador real.
Iniciado por (Ator) ObjectId O ID de Objeto da aplicação B2C na qual o utilizador está a iniciar sessão. Este identificador não está visível no portal do Azure, mas está acessível através do microsoft Graph API.
Iniciado por (Ator) Spn O ID da Aplicação da aplicação B2C na qual o utilizador está a iniciar sessão.
Destino(s) ObjectId O ID de Objeto do utilizador que está a iniciar sessão.
Detalhes Adicionais TenantId O ID de Inquilino do inquilino Azure AD B2C.
Detalhes Adicionais PolicyId O ID da Política do fluxo de utilizador (política) que está a ser utilizado para iniciar sessão do utilizador.
Detalhes Adicionais ApplicationID O ID da Aplicação da aplicação B2C na qual o utilizador está a iniciar sessão.

Ver registos de auditoria no portal do Azure

O portal do Azure fornece acesso aos eventos de registo de auditoria no inquilino do Azure AD B2C.

  1. Inicie sessão no portal do Azure.
  2. Mude para o diretório que contém a sua Azure AD inquilino B2C e, em seguida, navegue para Azure AD B2C.
  3. Em Atividades no menu esquerdo, selecione Registos de auditoria.

É apresentada uma lista de eventos de atividade registados nos últimos sete dias.

Filtro de exemplo com dois eventos de atividade no portal do Azure

Estão disponíveis várias opções de filtragem, incluindo:

Se selecionar uma linha na lista, os detalhes da atividade do evento são apresentados.

Para transferir a lista de eventos de atividade num ficheiro de valores separados por vírgulas (CSV), selecione Transferir.

Obter registos de auditoria com a API de relatórios de Microsoft Entra

Os registos de auditoria são publicados no mesmo pipeline que outras atividades para Microsoft Entra ID, para que possam ser acedidos através da API de relatórios de Microsoft Entra. Para obter mais informações, veja Introdução à API de relatórios de Microsoft Entra.

Ativar o acesso à API de relatórios

Para permitir o acesso baseado em scripts ou aplicações à API de relatórios de Microsoft Entra, precisa de uma aplicação registada no inquilino do Azure AD B2C com as seguintes permissões de API. Pode ativar estas permissões num registo de aplicação existente no seu inquilino B2C ou criar uma nova especificamente para utilização com a automatização do registo de auditoria.

  • Permissões > de Aplicação do Microsoft Graph > AuditLog > AuditLog.Read.All

Siga os passos no artigo seguinte para registar uma aplicação com as permissões necessárias:

Gerir o Azure AD B2C com o Microsoft Graph

Depois de registar uma aplicação com as permissões adequadas, veja a secção Script do PowerShell mais à frente neste artigo para obter um exemplo de como pode obter eventos de atividade com um script.

Aceder à API

Para transferir Azure AD eventos de registo de auditoria B2C através da API, filtre os registos na B2C categoria. Para filtrar por categoria, utilize o parâmetro da filter cadeia de consulta quando chamar o ponto final da API de relatórios de Microsoft Entra.

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

Script do PowerShell

O seguinte script do PowerShell mostra um exemplo de como consultar a API de relatórios de Microsoft Entra. Depois de consultar a API, imprime os eventos registados na saída padrão e, em seguida, escreve a saída JSON num ficheiro.

Pode experimentar este script na Cloud Shell do Azure. Certifique-se de que o atualiza com o ID da aplicação, o segredo do cliente e o nome do seu inquilino 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"
}

Eis a representação JSON do evento de atividade de exemplo mostrado anteriormente no artigo:

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

Passos seguintes

Pode automatizar outras tarefas de administração, por exemplo, gerir Azure AD contas de utilizador B2C com o Microsoft Graph.