Azure AD B2C denetim günlüklerine erişme

Azure Active Directory B2C (Azure AD B2C), B2C kaynakları, verilen belirteçler ve yönetici erişimi hakkındaki etkinlik bilgilerini içeren denetim günlüklerini yayar. Bu makalede, denetim günlüklerinde sağlanan bilgilere ve Azure AD B2C kiracınız için bu verilere erişme yönergelerine kısa bir genel bakış sağlanır.

Denetim günlüğü olayları yalnızca yedi gün boyunca saklanır. Daha uzun bir saklama süresine ihtiyacınız varsa, aşağıda gösterilen yöntemlerden birini kullanarak günlüklerinizi indirmeyi ve depolamayı planlayın.

Not

Azure portal Microsoft Entra Kimliği veya Azure AD B2C sayfalarının Kullanıcılar bölümünde tek tek Azure ADB2C uygulamaları için kullanıcı oturum açma bilgilerini göremezsiniz. Oradaki oturum açma olayları kullanıcı etkinliğini gösterir, ancak kullanıcının oturum açtığı B2C uygulamasıyla ilişkilendirilemiyor. Bu makalede daha ayrıntılı olarak açıklandığı gibi, bunun için denetim günlüklerini kullanmanız gerekir.

Denetim günlüklerinin B2C kategorisindeki etkinliklere genel bakış

Denetim günlüklerindeki B2C kategorisi aşağıdaki etkinlik türlerini içerir:

Etkinlik türü Description
Yetkilendirme Kullanıcının B2C kaynaklarına erişme yetkisiyle ilgili etkinlikler (örneğin, B2C ilkeleri listesine erişen bir yönetici).
Directory Yönetici Azure portal kullanarak oturum açtığında alınan dizin öznitelikleriyle ilgili etkinlikler.
Uygulama B2C uygulamalarında oluşturma, okuma, güncelleştirme ve silme (CRUD) işlemleri.
Anahtar B2C anahtar kapsayıcısında depolanan anahtarlarda CRUD işlemleri.
Kaynak B2C kaynaklarında CRUD işlemleri. Örneğin, ilkeler ve kimlik sağlayıcıları.
Kimlik Doğrulaması Kullanıcı kimlik bilgilerinin ve belirteç vermenin doğrulanması.

Kullanıcı nesnesi CRUD etkinlikleri için Çekirdek Dizin kategorisine bakın.

Örnek etkinlik

Azure portal bu örnek görüntüde, bir kullanıcı bir dış kimlik sağlayıcısıyla oturum açtığında yakalanan veriler (bu örnekte Facebook) gösterilir:

Azure portal'da Denetim Günlüğü Etkinlik Ayrıntıları sayfası örneği

Etkinlik ayrıntıları panelinde aşağıdaki ilgili bilgiler yer alır:

Section Alan Açıklama
Etkinlik Name Hangi etkinlik gerçekleşti? Örneğin, uygulamaya bir id_token ve bu da gerçek kullanıcı oturum açma işlemini sonlandırıyor.
Başlatan (Aktör) ObjectId Kullanıcının oturum açmakta olduğu B2C uygulamasının Nesne Kimliği . Bu tanımlayıcı Azure portal görünmez, ancak Microsoft Graph API üzerinden erişilebilir.
Başlatan (Aktör) Spn Kullanıcının oturum açmakta olduğu B2C uygulamasının Uygulama Kimliği .
Hedefler ObjectId Oturum açmakta olan kullanıcının Nesne Kimliği .
Ek ayrıntılar TenantId Azure AD B2C kiracısının Kiracı Kimliği.
Ek ayrıntılar PolicyId Kullanıcının oturum açması için kullanılan kullanıcı akışının (ilke) İlke Kimliği .
Ek ayrıntılar ApplicationID Kullanıcının oturum açmakta olduğu B2C uygulamasının Uygulama Kimliği .

denetim günlüklerini Azure portal görüntüleme

Azure portal, Azure AD B2C kiracınızdaki denetim günlüğü olaylarına erişim sağlar.

  1. Azure Portal’ında oturum açın.
  2. Azure AD B2C kiracınızı içeren dizine geçin ve Azure AD B2C'ye göz atın.
  3. Soldaki menüden Etkinlikler'in altında Denetim günlükleri'ni seçin.

Son yedi gün içinde günlüğe kaydedilen etkinlik olaylarının listesi görüntülenir.

Azure portal'de iki etkinlik olayı içeren örnek filtre

Aşağıdakiler de dahil olmak üzere çeşitli filtreleme seçenekleri mevcuttur:

Listeden bir satır seçerseniz, olayın etkinlik ayrıntıları görüntülenir.

Virgülle ayrılmış değerler (CSV) dosyasındaki etkinlik olaylarının listesini indirmek için İndir'i seçin.

Microsoft Entra raporlama API'siyle denetim günlüklerini alma

Denetim günlükleri, Microsoft Entra kimliğine yönelik diğer etkinliklerle aynı işlem hattında yayımlandığından, bunlara Microsoft Entra raporlama API'si üzerinden erişilebilir. Daha fazla bilgi için bkz. Microsoft Entra raporlama API'sini kullanmaya başlama.

Raporlama API'si erişimini etkinleştirme

Microsoft Entra raporlama API'sine betik veya uygulama tabanlı erişime izin vermek için, Azure AD B2C kiracınızda aşağıdaki API izinlerine sahip bir uygulamanın kayıtlı olması gerekir. B2C kiracınızdaki mevcut bir uygulama kaydında bu izinleri etkinleştirebilir veya özellikle denetim günlüğü otomasyonuyla kullanmak üzere yeni bir tane oluşturabilirsiniz.

  • Microsoft Graph > Uygulama izinleri > AuditLog > AuditLog.Read.All

Bir uygulamayı gerekli izinlerle kaydetmek için aşağıdaki makaledeki adımları izleyin:

Azure AD B2C’yi Microsoft Graph ile yönetme

Uygulamayı uygun izinlerle kaydettikten sonra, bir betikle etkinlik olaylarını nasıl alabileceğinize ilişkin bir örnek için bu makalenin devamındaki PowerShell betiği bölümüne bakın.

API'ye erişme

API aracılığıyla Azure AD B2C denetim günlüğü olaylarını indirmek için kategorideki günlükleri filtreleyinB2C. Kategoriye göre filtrelemek için, Microsoft Entra raporlama API'sinin uç noktasını çağırırken sorgu dizesi parametresini kullanınfilter.

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

PowerShell betiği

Aşağıdaki PowerShell betiğinde Microsoft Entra raporlama API'sinin nasıl sorgu yapılacağına ilişkin bir örnek gösterilmektedir. API'yi sorguladıktan sonra günlüğe kaydedilen olayları standart çıkışa yazdırır ve ardından JSON çıkışını bir dosyaya yazar.

Bu betiği Azure Cloud Shell deneyebilirsiniz. Uygulamayı uygulama kimliğiniz, istemci gizli diziniz ve Azure AD B2C kiracınızın adıyla güncelleştirdiğinden emin olun.

# 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"
}

Makalenin önceki bölümlerinde gösterilen örnek etkinlik olayının JSON gösterimi aşağıda verilmiştir:

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

Sonraki adımlar

Microsoft Graph ile Azure AD B2C kullanıcı hesaplarını yönetme gibi diğer yönetim görevlerini otomatikleştirebilirsiniz.