Delen via


Zelfstudie: Aangepaste rapporten in Azure Data Explorer met behulp van gegevens uit Microsoft Entra

In deze zelfstudie leert u hoe u aangepaste rapporten maakt in Azure Data Explorer (ADX) met behulp van gegevens uit Microsoft Entra ID en Microsoft Entra ID Governance-services. Deze zelfstudie vormt een aanvulling op andere rapportageopties, zoals Archive &-rapport met Azure Monitor en rechtenbeheer, dat is gericht op het exporteren van het auditlogboek naar Azure Monitor voor retentie en analyse. Ter vergelijking: het exporteren van Microsoft Entra ID-gegevens naar Azure Data Explorer biedt flexibiliteit voor het maken van aangepaste rapporten over Microsoft Entra-objecten, waaronder historische en verwijderde objecten. Daarnaast maakt het gebruik van Azure Data Explorer gegevensaggregatie vanuit aanvullende bronnen mogelijk, met enorme schaalbaarheid, flexibel schema en bewaarbeleid. Azure Data Explorer is met name handig wanneer u jarenlang toegangsgegevens moet bewaren, ad-hoconderzoeken moet uitvoeren of aangepaste query's moet uitvoeren op gebruikerstoegangsgegevens.

In dit artikel wordt uitgelegd hoe u configuratie-, gebruikers- en toegangsrechten weergeeft die zijn geëxporteerd uit Microsoft Entra, samen met gegevens die zijn geëxporteerd uit andere bronnen, zoals toepassingen met toegangsrechten in hun eigen SQL-databases. Vervolgens kunt u de Kusto Query Language (KQL) in Azure Data Explorer gebruiken om aangepaste rapporten te maken op basis van de vereisten van uw organisatie.

Gebruik de volgende stappen om deze rapporten te maken:

  1. Azure Data Explorer instellen in een Azure-abonnement of een gratis cluster maken.
  2. Gegevens extraheren uit Microsoft Entra ID met behulp van PowerShell-scripts en Microsoft Graph.
  3. tabellen maken en die gegevens importeren uit Microsoft Entra ID in Azure Data Explorer.
  4. gegevens extraheren uit Microsoft Entra ID Governance.
  5. Tabellen maken en die gegevens importeren uit Microsoft Entra ID-governance in Azure Data Explorer.
  6. Een aangepaste query maken met Kusto-querytaal.

Aan het einde van deze zelfstudie kunt u aangepaste weergaven ontwikkelen van de toegangsrechten en machtigingen van gebruikers. Deze weergaven omvatten verschillende toepassingen met behulp van door Microsoft ondersteunde hulpprogramma's. U kunt ook gegevens ophalen uit databases of toepassingen van derden om hierover te rapporteren.

Vereisten

Als u geen kennis hebt met Azure Data Explorer en de scenario's wilt leren die in dit artikel worden weergegeven, kunt u een gratis Azure Data Explorer-clusterverkrijgen. Voor productie ondersteund gebruik met een service level agreement voor Azure Data Explorer hebt u een Azure-abonnement nodig om een volledig Azure Data Explorer-cluster te hosten.

Bepaal welke gegevens u wilt opnemen in uw rapporten. De scripts in dit artikel bevatten voorbeelden met specifieke gegevens van gebruikers, groepen en toepassingen van Microsoft Entra. Deze voorbeelden zijn bedoeld om de typen rapporten te illustreren die u met deze benadering kunt genereren, maar uw specifieke rapportagebehoeften kunnen variëren en verschillende of aanvullende gegevens vereisen. U kunt beginnen met deze objecten en meer soorten Microsoft Entra-objecten in de loop van de tijd meenemen.

  • Dit artikel illustreert het ophalen van gegevens uit Microsoft Entra als een aangemelde gebruiker. Hiervoor moet u ervoor zorgen dat u over de vereiste roltoewijzingen beschikt om gegevens op te halen uit Microsoft Entra. U hebt de rollen met de juiste machtigingen nodig om het type Microsoft Entra-gegevens te exporteren waarmee u wilt werken.
    • Gebruikersgegevens: globale beheerder, beheerder met bevoorrechte rol, gebruikersbeheerder
    • Groepsgegevens: globale beheerder, beheerder met bevoorrechte rol, groepsbeheerder
    • Toepassingen/app-roltoewijzingen: globale beheerder, beheerder met bevoorrechte rol, toepassingsbeheerder, cloudtoepassingsbeheerder
  • Microsoft Graph PowerShell moet worden toegestaan voor het ophalen van Microsoft Entra-objecten via Microsoft Graph. Voor de voorbeelden in deze zelfstudie zijn de gedelegeerde machtigingen User.Read.All, Group.Read.All, Application.Read.All en Directory.Read.All vereist. Als u van plan bent om gegevens op te halen met automatisering zonder een aangemelde gebruiker, moet u in plaats daarvan akkoord gaan met de bijbehorende toepassingsmachtigingen. Raadpleeg de naslaginformatie over Microsoft Graph-machtigingen voor meer informatie. Als u Microsoft Graph PowerShell nog niet hebt toegestaan voor deze machtigingen, moet u een globale beheerder zijn om deze toestemmingsbewerking uit te voeren.
  • Deze zelfstudie illustreert geen aangepaste beveiligingskenmerken. Globale beheerder en andere beheerdersrollen bevatten standaard geen machtigingen voor het lezen van aangepaste beveiligingskenmerken van Microsoft Entra-gebruikers. Als u van plan bent om aangepaste beveiligingskenmerken op te halen, zijn mogelijk meer rollen en machtigingen vereist.
  • Zorg ervoor dat u schrijftoegang hebt tot de bestandssysteemmap op de computer waarop Microsoft Graph PowerShell is geïnstalleerd. Hier installeert u de vereiste Microsoft Graph PowerShell-modules en waar de geëxporteerde Microsoft Entra-gegevens worden opgeslagen.
  • Zorg ervoor dat u gemachtigd bent om gegevens op te halen uit andere gegevensbronnen buiten Microsoft Entra, als u die gegevens ook wilt opnemen in Azure Data Explorer.

1: Azure Data Explorer instellen

Als u Azure Data Explorer nog niet eerder hebt gebruikt, moet u dit eerst instellen. U kunt een gratis cluster maken zonder een Azure-abonnement of creditcard of een volledig cluster waarvoor een Azure-abonnement is vereist. Zie quickstart: Een Azure Data Explorer-cluster en -database maken om aan de slag te gaan.

2: Microsoft Entra ID-gegevens extraheren met PowerShell

In deze sectie u Microsoft Graph PowerShell-modules installeren en in PowerShell u verbinding maken met Microsoft Graph om Microsoft Entra ID-gegevens te extraheren.

De eerste keer dat uw organisatie deze modules voor dit scenario gebruikt, moet u de rol Globale beheerder hebben om Microsoft Graph PowerShell toestemming te geven voor gebruik in uw tenant. Volgende interacties kunnen een rol met lagere bevoegdheden gebruiken.

  1. Open PowerShell.
  2. Als u niet alle Microsoft Graph PowerShell-modules al hebt geïnstalleerd, installeert u de vereiste Microsoft Graph-modules. De volgende modules zijn vereist voor dit gedeelte van de zelfstudie: Microsoft.Graph.Authentication, Microsoft.Graph.Users, Microsoft.Graph.Groups, Microsoft.Graph.Applications, Microsoft.Graph.DirectoryObjects. Als u deze modules al hebt geïnstalleerd, gaat u verder met de volgende stap.
   $modules = @('Microsoft.Graph.Users', 'Microsoft.Graph.Groups', 'Microsoft.Graph.Applications', 'Microsoft.Graph.DirectoryObjects') 
   foreach ($module in $modules) { 
   Install-Module -Name $module -Scope CurrentUser -AllowClobber -Force
   } 
  1. Importeer de modules in de huidige PowerShell-sessie.
  $modules = @('Microsoft.Graph.Users', 'Microsoft.Graph.Groups', 'Microsoft.Graph.Applications', 'Microsoft.Graph.DirectoryObjects') 
  foreach ($module in $modules) { 
  Import-Module -Name $module 
  } 
  1. Maak verbinding met Microsoft Graph. Deze sectie van de zelfstudie illustreert het lezen van gebruikers, groepen en toepassingen en vereist daarom de User.Read.All, Group.Read.All, Application.Read.Allen Directory.Read.All autorisatiescopes. Zie Microsoft Graph-machtigingenvoor meer informatie over machtigingen.
  Connect-MgGraph -Scopes "User.Read.All", "Group.Read.All", "Application.Read.All", "Directory.Read.All" -ContextScope Process -NoWelcome

Met deze opdracht wordt u gevraagd u aan te melden met uw Microsoft Entra-referenties. Nadat u zich hebt aangemeld, moet u mogelijk toestemming geven voor de vereiste machtigingen als dit uw eerste keer is dat u verbinding maakt of als er nieuwe machtigingen vereist zijn.

PowerShell-query's voor het extraheren van Microsoft Entra ID-gegevens die nodig zijn voor het maken van aangepaste rapporten in Azure Data Explorer

Met de volgende query's worden Microsoft Entra ID-gegevens uit Microsoft Graph geëxtraheerd met behulp van PowerShell en worden de gegevens geëxporteerd naar JSON-bestanden die in Azure Data Explorer in de volgende sectie 3 worden geïmporteerd. Er kunnen meerdere scenario's zijn voor het genereren van rapporten met dit type gegevens, waaronder:

  • Een auditor wil een rapport zien waarin de groepsleden voor 10 groepen worden vermeld, georganiseerd door de afdeling van de leden.
  • Een auditor wil een rapport zien van alle gebruikers die toegang hadden tot een toepassing tussen twee datums.

U kunt ook gegevens naar Azure Data Explorer overbrengen vanuit andere bronnen buiten Microsoft Entra. Dit maakt scenario's mogelijk, zoals:

  • Een beheerder wil alle gebruikers weergeven die zijn toegevoegd aan een toepassing vanuit Microsoft Entra-id en hun toegangsrechten in de eigen opslagplaats van de toepassing, zoals SQL-databases.

Deze typen rapporten zijn niet ingebouwd in Microsoft Entra-id. U kunt deze rapporten echter zelf maken door gegevens uit Entra te extraheren en te combineren met behulp van aangepaste query's in Azure Data Explorer. Dit wordt later in de zelfstudie behandeld in de sectie gegevens uit andere bronnen halen.

Voor deze zelfstudie extraheren we Microsoft Entra ID-gegevens uit verschillende gebieden:

  • Gebruikersgegevens, zoals weergavenaam, UPN en taakdetails
  • Groepsinformatie, inclusief hun lidmaatschappen
  • Toepassing en toepassingsroltoewijzingen

Met deze gegevensset kunnen we een brede set query's uitvoeren rond wie toegang heeft gekregen tot een toepassing, met informatie over de toepassingsrol en het bijbehorende tijdsbestek. Houd er rekening mee dat dit voorbeeldquery's zijn en dat uw gegevens en specifieke vereisten kunnen verschillen van wat hier wordt weergegeven.

Notitie

Grotere tenants kunnen bandbreedtebeperkingen/429-fouten ondervinden die worden afgehandeld door de Microsoft Graph-module. Azure Data Explorer kan ook de uploadgrootte van bestanden beperken.

In deze PowerShell-scripts exporteren we geselecteerde eigenschappen van de Microsoft Entra-objecten naar JSON-bestanden. De gegevens van deze geëxporteerde eigenschappen worden gebruikt voor het genereren van aangepaste rapporten in Azure Data Explorer. De volgende specifieke eigenschappen zijn opgenomen in deze voorbeelden, omdat we deze gegevens gebruiken om de typen rapporten te illustreren die u in Azure Data Explorer kunt maken. Aangezien uw specifieke rapportagebehoeften waarschijnlijk verschillen van wat wordt weergegeven, moet u de specifieke eigenschappen in deze scripts opnemen die u wilt weergeven in uw rapporten. U kunt echter hetzelfde patroon volgen dat wordt weergegeven om uw scripts te bouwen.

Een datum van een momentopname selecteren

We hebben een in code vastgelegde datum momentopnamedatum die de gegevens in het JSON-bestand identificeert met een specifieke datum en waarmee we vergelijkbare gegevenssets in de loop van de tijd kunnen bijhouden in Azure Data Explorer. De datum van de momentopname is ook handig voor het vergelijken van wijzigingen in gegevens tussen twee datums van momentopnamen.

$SnapshotDate = Get-Date -AsUTC -Format "yyyy-MM-dd"

Entra-gebruikersgegevens ophalen

Met dit script worden geselecteerde eigenschappen van het Entra-gebruikersobject geëxporteerd naar een JSON-bestand. We importeren deze en aanvullende gegevens uit andere JSON-bestanden in Azure Data Explorer in een volgende sectie van deze zelfstudie.

  function Export-EntraUsersToJson { 

  # Define a hash table for property mappings 
   $propertyMappings = @{ 
    "Id" = "ObjectID" 
    "DisplayName" = "DisplayName" 
    "UserPrincipalName" = "UserPrincipalName" 
    "EmployeeId" = "EmployeeId" 
    "UserType" = "UserType" 
    "CreatedDateTime" = "CreatedDateTime" 
    "JobTitle" = "JobTitle" 
    "Department" = "Department" 
    "AccountEnabled" = "AccountEnabled" 

   # Add custom properties as needed 
    "custom_extension" = "CustomExtension" 
   } 
  # Retrieve users with specified properties and create custom objects directly 
   $users = Get-MgUser -Select ($propertyMappings.Keys) -All | ForEach-Object { 
      $userObject = @{} 
      foreach ($key in $propertyMappings.Keys) { 
        if ($key -eq "CreatedDateTime") { 
          # Convert date string directly to DateTime and format it 
          $date = [datetime]::Parse($_.$key) 
          $userObject[$propertyMappings[$key]] = $date.ToString("yyyy-MM-dd") 
        } else { 
          $userObject[$propertyMappings[$key]] = $_.$key 
        } 
      } 
      # Additional properties or transformations 
      $userObject["SnapshotDate"] = $SnapshotDate
      [pscustomobject]$userObject 
    } 
    # Convert the user data to JSON and save it to a file 
    $users | ConvertTo-Json -Depth 2 | Set-Content ".\EntraUsers.json" 
  } 
  # Execute the function 
  Export-EntraUsersToJson 

Groepsgegevens ophalen

Genereer een JSON-bestand met groepsnamen en id's die worden gebruikt om aangepaste weergaven te maken in Azure Data Explorer. Het voorbeeld bevat alle groepen, maar indien nodig kunnen extra filters worden opgenomen. Als u filtert om alleen bepaalde groepen op te nemen, kunt u logica in uw script opnemen om te controleren op geneste groepen.

    # Get all groups and select Id and DisplayName 
    $groups = Get-MgGroup -All | Select-Object Id,DisplayName 
    # Export the groups to a JSON file 
    $groups | ConvertTo-Json | Set-Content ".\EntraGroups.json" 

Gegevens van groepslidmaatschap ophalen

Genereer een JSON-bestand met groepslidmaatschap dat wordt gebruikt om aangepaste weergaven te maken in Azure Data Explorer. Het voorbeeld bevat alle groepen, maar indien nodig kunnen extra filters worden opgenomen.

    # Retrieve all groups from Microsoft Entra (Azure AD) 
    $groups = Get-MgGroup -All 
    # Initialize an array to store results 
    $results = @() 
    # Iterate over each group 
    foreach ($group in $groups) { 
      # Extract the group ID 
      $groupId = $group.Id 
      # Get members of the current group and select their IDs 
      $members = Get-MgGroupMember -GroupId $groupId | Select-Object -ExpandProperty Id 
      # Add a custom object with group ID and member IDs to the results array 
      $results += [PSCustomObject]@{ 
        GroupId = $groupId 
        Members = $members 
        SnapshotDate = $SnapshotDate
      } 
      # Pause for a short time to avoid rate limits 
      Start-Sleep -Milliseconds 200 
    } 
    # Convert the results array to JSON format and save it to a file 
    $results | ConvertTo-Json | Set-Content "EntraGroupMembership.json" 

Toepassings- en service-principalgegevens ophalen

Hiermee genereert u een JSON-bestand met alle toepassingen en de bijbehorende service-principals in de tenant. We importeren deze gegevens in Azure Data Explorer in volgende sectie van deze zelfstudie waarmee we aangepaste rapporten kunnen genereren die betrekking hebben op toepassingen op basis van deze gegevens.

    # Fetch applications and their corresponding service principals, then export to JSON 
    Get-MgApplication -All | ForEach-Object { 
      $app = $_ 
      $sp = Get-MgServicePrincipal -Filter "appId eq '$($app.AppId)'" 
      [pscustomobject]@{ 
        Name        = $app.DisplayName 
        ApplicationId   = $app.AppId 
        ServicePrincipalId = $sp.Id 
        SnapshotDate = $SnapshotDate
      } 
    } | ConvertTo-Json -Depth 10 | Set-Content "Applications.json" 

AppRole-gegevens ophalen

Genereer een JSON-bestand van alle appRoles voor zakelijke apps in Microsoft Entra. Zodra deze gegevens zijn geïmporteerd in Azure Data Explorer, gebruiken we deze gegevens om rapporten te genereren met betrekking tot app-roltoewijzingen voor gebruikers.

    # Get a list of all applications, handle pagination manually if necessary 
    $apps = Get-MgApplication -All 
    # Loop through each application to gather the desired information 
    $results = foreach ($app in $apps) { 
      # Get the service principal for the application using its appId 
      $spFilter = "appId eq '$($app.AppId)'" 
      $sp = Get-MgServicePrincipal -Filter $spFilter | Select-Object -First 1 
      # Process AppRoles, if any, for the application 
      $appRoles = if ($app.AppRoles) { 
        $app.AppRoles | Where-Object { $_.AllowedMemberTypes -contains "User" } | 
        Select-Object Id, Value, DisplayName 
      } 
      # Construct a custom object with application and service principal details 
      [PSCustomObject]@{ 
        ApplicationId    = $app.AppId 
        DisplayName     = $app.DisplayName 
        ServicePrincipalId = $sp.Id 
        AppRoles      = $appRoles 
        SnapshotDate = $SnapshotDate
      } 
    } 
    # Export the results to a JSON file 
    $results | ConvertTo-Json -Depth 4 | Out-File 'AppRoles.json' 

AppRole-toewijzingsgegevens ophalen

Genereer een JSON-bestand van alle app-roltoewijzingen van gebruikers in de tenant.

    $users = Get-MgUser -All 
    $result = @() 
    foreach ($user in $users) { 
      Get-MgUserAppRoleAssignment -UserId $user.Id | ForEach-Object { 
        # Use the same date formatting approach 
        $createdDateTime = $_.CreatedDateTime -replace "\\/Date\((\d+)\)\\/", '$1' 
        # Convert the milliseconds timestamp to a readable date format if needed 
        $result += [PSCustomObject]@{ 
          AppRoleId      = $_.AppRoleId 
          CreatedDateTime   = $createdDateTime 
          PrincipalDisplayName = $_.PrincipalDisplayName 
          PrincipalId     = $_.PrincipalId 
          ResourceDisplayName = $_.ResourceDisplayName 
          ResourceId      = $_.ResourceId 
          SnapshotDate     = $SnapshotDate
        } 
      } 
    } 
    $result | ConvertTo-Json -Depth 10 | Out-File "AppRoleAssignments.json" 

3: Tabellen maken en JSON-bestanden importeren met gegevens uit Microsoft Entra ID in Azure Data Explorer

In deze sectie importeren we de zojuist gemaakte JSON-bestanden voor de Microsoft Entra ID-services als tabellen in Azure Data Explorer voor verdere analyse. Bij het eerste importeren met behulp van de webgebruikersinterface van Azure Data Explorer maakt u de tabellen op basis van het schema dat door de webgebruikersinterface wordt voorgesteld vanuit elk JSON-bestand.

Zodra u een database hebt ingesteld in uw Azure Data Explorer-cluster of gratis cluster, zoals beschreven in de eerste sectie van dit artikel, gaat u naar die database.

  1. Meld u aan bij de web-UI van Azure Data Explorer.
  2. Selecteer in het linkermenu Query.

Volg vervolgens deze stappen voor elk geëxporteerd JSON-bestand om uw geëxporteerde gegevens als een nieuwe tabel in die Azure Data Explorer-database op te halen.

  1. Selecteer met de rechtermuisknop de databasenaam van de database waarin u de gegevens wilt opnemen. Selecteer Gegevens ophalen.

    Schermafbeelding van het querytabblad, met rechtsklik op een database en het dialoogvenster 'Opties' geopend.

  2. Selecteer de gegevensbron in de beschikbare lijst. In deze tutorial neem je data op uit een lokaal bestand.

  3. Selecteer + Nieuwe tabel en voer een tabelnaam in op basis van de naam van het JSON-bestand dat u importeert, bijvoorbeeld als u EntraUsers.jsonimporteert, geeft u de tabel de naam EntraUsers. Na het eerste importeren bestaat de tabel al en kunt u deze selecteren als de doeltabel voor een volgende import.

  4. Selecteer Bladeren naar bestanden, selecteer het JSON-bestand en selecteer Volgende.

  5. Azure Data Explorer detecteert het schema automatisch en biedt een voorbeeld op het tabblad Inspect. Selecteer Finish om de tabel te maken en de gegevens uit dat bestand te importeren. Zodra de gegevens zijn opgenomen, klik op Sluiten.

  6. Herhaal elk van de voorgaande stappen voor elk van de JSON-bestanden die u in de vorige sectie hebt gegenereerd.

Aan het einde van deze stappen hebt u de tabellen EntraUsers, EntraGroups, EntraGroupMembership, Applications, AppRolesen AppRoleAssignments in de database.

4: Microsoft Entra ID Governance-gegevens extraheren met PowerShell

In deze sectie gebruikt u PowerShell om gegevens uit Microsoft Entra ID Governance-services te extraheren. Als u geen Microsoft Entra ID Governance, Microsoft Entra ID P2 of Microsoft Entra Suite hebt, gaat u verder in sectie Azure Data Explorer gebruiken om aangepaste rapporten te maken.

Hiervoor moet u mogelijk Microsoft Graph PowerShell-modules installeren om Microsoft Entra ID Governance-gegevens te extraheren. De eerste keer dat uw organisatie deze modules voor dit scenario gebruikt, moet u de rol Globale beheerder hebben om Microsoft Graph PowerShell toestemming te geven voor gebruik in uw tenant. Volgende interacties kunnen een rol met lagere bevoegdheden gebruiken.

  1. Open PowerShell.
  2. Als u niet alle Microsoft Graph PowerShell-modules al hebt geïnstalleerd, installeert u de vereiste Microsoft Graph-modules. De volgende modules zijn vereist voor deze sectie van de zelfstudie: Microsoft.Graph.Identity.Governance. Als u deze modules al hebt geïnstalleerd, gaat u verder met de volgende stap.
   $modules = @('Microsoft.Graph.Identity.Governance')
   foreach ($module in $modules) {
   Install-Module -Name $module -Scope CurrentUser -AllowClobber -Force
   }
  1. Importeer de modules in de huidige PowerShell-sessie.
  $modules = @('Microsoft.Graph.Identity.Governance')
  foreach ($module in $modules) {
  Import-Module -Name $module
  } 
  1. Maak verbinding met Microsoft Graph. Deze sectie van de zelfstudie illustreert het ophalen van gegevens uit rechtenbeheer en toegangsbeoordelingen. Hiervoor zijn de AccessReview.Read.All- en EntitlementManagement.Read.All machtigingsbereiken vereist. Voor andere gebruiksvoorbeelden voor rapportage, zoals pim of levenscycluswerkstromen, werkt u de parameter Scopes bij met de benodigde machtigingen. Zie Microsoft Graph-machtigingenvoor meer informatie over machtigingen.
  Connect-MgGraph -Scopes "AccessReview.Read.All, EntitlementManagement.Read.All" -ContextScope Process -NoWelcome

Met deze opdracht wordt u gevraagd u aan te melden met uw Microsoft Entra-referenties. Nadat u zich hebt aangemeld, moet u mogelijk toestemming geven voor de vereiste machtigingen als dit uw eerste keer is dat u verbinding maakt of als er nieuwe machtigingen vereist zijn.

PowerShell-query's voor het extraheren van Microsoft Entra ID-governancegegevens die nodig zijn om aangepaste rapporten te maken in Azure Data Explorer

U kunt query's gebruiken om Microsoft Entra ID Governance-gegevens uit Microsoft Graph te extraheren met behulp van PowerShell en de gegevens te exporteren naar JSON-bestanden, die in de volgende sectie in Azure Data Explorer worden geïmporteerd. Er kunnen meerdere scenario's zijn voor het genereren van rapporten met dit type gegevens, waaronder:

  • rapporteren over historische toegangsbeoordelingen
  • rapportage van opdrachten via rechtenbeheer

Definitiegegevens voor toegangsbeoordelingsschema ophalen

Genereer een JSON-bestand met definitienamen en id's voor toegangsbeoordeling die worden gebruikt om aangepaste weergaven te maken in Azure Data Explorer. Het voorbeeld bevat alle toegangsbeoordelingen, maar indien nodig kunnen extra filters worden opgenomen. Voor meer informatie, gebruik de filterqueryparameter, zie .

   $allsched = Get-MgIdentityGovernanceAccessReviewDefinition -All
   $definitions = @()
   # Iterate over each definition
   foreach ($definition in $allsched) {
      $definitions += [PSCustomObject]@{
         Id = $definition.Id
         DisplayName = $definition.DisplayName
         SnapshotDate = $SnapshotDate
      }
   }
   $definitions | ConvertTo-Json -Depth 10 | Set-Content "EntraAccessReviewDefinitions.json"

Toegangspakketgegevens voor rechtenbeheer ophalen

Genereer een JSON-bestand met toegangspakketnamen en id's die worden gebruikt om aangepaste weergaven te maken in Azure Data Explorer. Het voorbeeld bevat alle toegangspakketten, maar indien nodig kunnen extra filters worden opgenomen.

   $accesspackages1 = Get-MgEntitlementManagementAccessPackage -All
   $accesspackages2 = @()
   # Iterate over each access package
   foreach ($accesspackage in $accesspackages1) {
      $accesspackages2 += [PSCustomObject]@{
         Id = $accesspackage.Id
         DisplayName = $accesspackage.DisplayName
         SnapshotDate = $SnapshotDate
      }
   }
   $accesspackages2 | ConvertTo-Json -Depth 10 | Set-Content "EntraAccessPackages.json"

Gegevens over toewijzingen van toegangspakketten voor rechtenbeheer ophalen

Genereer een JSON-bestand met toewijzingen voor toegang tot pakketten die worden gebruikt voor het maken van aangepaste weergaven in Azure Data Explorer. Het voorbeeld bevat alle opdrachten die worden geleverd, maar indien nodig kunnen extra filters worden opgenomen.

   $apassignments1 = Get-MgEntitlementManagementAssignment -ExpandProperty target,accessPackage -filter "state eq 'Delivered'" -all
   $apassignments2 = @()
   # Iterate over each access package assignment
   foreach ($assignment in $apassignments1) {
      $apassignments2 += [PSCustomObject]@{
         Id = $assignment.Id
         ScheduleStartDateTime = $assignment.Schedule.StartDateTime -replace "\\/Date\((\d+)\)\\/", '$1' 
         AccessPackageId = $assignment.AccessPackage.Id
         AccessPackageDisplayName = $assignment.AccessPackage.DisplayName
         TargetId = $assignment.Target.Id
         TargetDisplayName = $assignment.Target.DisplayName
         TargetEmail = $assignment.Target.Email
         TargetObjectId = $assignment.Target.ObjectId
         TargetPrincipalName = $assignment.Target.PrincipalName
         TargetSubjectType = $assignment.Target.SubjectType
         SnapshotDate = $SnapshotDate
      }
   }
   $apassignments2 | ConvertTo-Json -Depth 10 | Set-Content "EntraAccessPackageAssignments.json"

5: Tabellen maken en JSON-bestanden importeren met gegevens uit Microsoft Entra ID Governance in Azure Data Explorer

In deze sectie importeren we de zojuist gemaakte JSON-bestanden voor de Microsoft Entra ID Governance-services in Azure Data Explorer, naast de gegevens die al zijn geïmporteerd voor de Microsoft Entra ID-services, voor verdere analyse. Bij het eerste importeren met behulp van de webgebruikersinterface van Azure Data Explorer maakt u tabellen op basis van het schema dat door de webgebruikersinterface vanuit elk JSON-bestand wordt voorgesteld.

Navigeer in uw Azure Data Explorer-cluster of gratis cluster naar de database met uw Microsoft Entra ID-gegevens.

  1. Meld u aan bij de web-UI van Azure Data Explorer.
  2. Selecteer in het linkermenu Query.

Volg vervolgens deze stappen voor elk geëxporteerd JSON-bestand uit de vorige sectie om uw geëxporteerde gegevens in die Azure Data Explorer-database als een nieuwe tabel op te halen.

  1. Selecteer met de rechtermuisknop de databasenaam van de database waarin u de gegevens wilt opnemen. Selecteer Gegevens ophalen.

    Schermafbeelding van het querytabblad, met rechtsklik op een database en het dialoogvenster 'Opties' geopend.

  2. Selecteer de gegevensbron in de beschikbare lijst. In deze tutorial neem je data op uit een lokaal bestand.

  3. Selecteer + Nieuwe tabel en voer een tabelnaam in op basis van de naam van het JSON-bestand dat u importeert. Na de eerste import bestaat de tabel al en kunt u deze selecteren als doeltabel voor een volgende import.

  4. Selecteer Bladeren naar bestanden, selecteer het JSON-bestand en selecteer Volgende.

  5. Azure Data Explorer detecteert het schema automatisch en biedt een voorbeeld op het tabblad Inspect. Selecteer Finish om de tabel te maken en de gegevens uit dat bestand te importeren. Zodra de gegevens zijn opgenomen, klik op Sluiten.

  6. Herhaal elk van de voorgaande stappen voor elk van de JSON-bestanden die u in de vorige sectie hebt gegenereerd.

Aan het einde van deze stappen hebt u de tabellen EntraAccessReviewDefinitions, EntraAccessPackagesen EntraAccessPackageAssignments in de database, naast de tabellen die in sectie 3 zijn gemaakt.

6: Azure Data Explorer gebruiken om aangepaste rapporten te maken

Nu de gegevens nu beschikbaar zijn in Azure Data Explorer, kunt u aangepaste rapporten gaan maken op basis van uw bedrijfsvereisten.

Azure Data Explorer is een krachtig hulpprogramma voor gegevensanalyse dat zeer schaalbaar en flexibel is en een ideale omgeving biedt voor het genereren van aangepaste rapporten voor gebruikerstoegang. Azure Data Explorer maakt gebruik van de Kusto Query Language (KQL).

  1. Meld u aan bij de web-UI van Azure Data Explorer.
  2. Selecteer in het linkermenu Query.

De volgende query's bevatten voorbeelden van algemene rapporten, maar u kunt deze rapporten aanpassen aan uw behoeften en aanvullende rapporten maken.

U kunt uw rapporten ook weergeven in Exceldoor het tabblad Exporteren te selecteren en vervolgens Openen in Excelte selecteren.

Voorbeeld 1: App-roltoewijzingen genereren voor directe toewijzingen en groepstoewijzingen voor een specifieke momentopnamedatum

Dit rapport bevat een overzicht van wie welke toegang en wanneer de doel-app heeft en kan worden gebruikt voor beveiligingscontroles, nalevingsverificatie en inzicht in toegangspatronen binnen de organisatie.

Deze query is gericht op een specifieke toepassing in Microsoft Entra AD en analyseert de roltoewijzingen vanaf een bepaalde datum. De query haalt zowel directe als op groepen gebaseerde roltoewijzingen op, waarbij deze gegevens worden samengevoegd met gebruikersgegevens uit de EntraUsers tabel en rolgegevens uit de AppRoles tabel. Stel in de onderstaande query de targetSnapshotDate in op de snapshotDate waarde die is gebruikt bij het laden van de gegevens.

/// Define constants 
let targetServicePrincipalId = "<your service principal-id>"; // Target Service Principal ID 
let targetSnapshotDate = datetime("2024-01-13"); // Target Snapshot Date for the data 

// Extract role assignments for the target Service Principal and Snapshot Date 
let roleAssignments = AppRoleAssignments 
    | where ResourceId == targetServicePrincipalId and startofday(SnapshotDate) == targetSnapshotDate 
    | extend AppRoleIdStr = tostring(AppRoleId); // Convert AppRoleId to string for easier comparison 

// Prepare user data from EntraUsers table 
let users = EntraUsers 
    | project ObjectID, UserPrincipalName, DisplayName, ObjectIDStr = tostring(ObjectID); // Include ObjectID as string for joining 

// Prepare role data from AppRoles table 
let roles = AppRoles 
    | mvexpand AppRoles // Expand AppRoles to handle multiple roles 
    | extend RoleName = AppRoles.DisplayName, RoleId = tostring(AppRoles.Id) // Extract Role Name and ID 
    | project RoleId, RoleName; 
// Process direct assignments 
let directAssignments = roleAssignments 
    | join kind=inner users on $left.PrincipalId == $right.ObjectID // Join with EntraUsers on PrincipalId 
    | join kind=inner roles on $left.AppRoleIdStr == $right.RoleId // Join with roles to get Role Names 
    | project UserPrincipalName, DisplayName, CreatedDateTime, RoleName, AssignmentType = "Direct", SnapshotDate; 

// Process group-based assignments 

let groupAssignments = roleAssignments 
    | join kind=inner EntraGroupMembership on $left.PrincipalId == $right.GroupId // Join with Group Membership 
    | mvexpand Members // Expand group members 
    | extend MembersStr = tostring(Members) // Convert member ID to string 
    | distinct MembersStr, CreatedDateTime, AppRoleIdStr, SnapshotDate // Get distinct values 
    | join kind=inner users on $left.MembersStr == $right.ObjectIDStr // Join with EntraUsers for user details 
    | join kind=inner roles on $left.AppRoleIdStr == $right.RoleId // Join with roles for role names 
    | project UserPrincipalName, DisplayName, CreatedDateTime, RoleName, AssignmentType = "Group", SnapshotDate; 

// Combine results from direct and group-based assignments 
directAssignments 
| union groupAssignments 

Voorbeeld 2: Een basisrevisorrapport maken met Entra-gegevens die laten zien wie toegang had tot een app tussen deze twee datums

Dit rapport geeft een overzicht van wie de toegang tot de doel-app tussen twee datums had en kan worden gebruikt voor beveiligingscontroles, nalevingsverificatie en inzicht in toegangspatronen binnen de organisatie.

Deze query is gericht op een specifieke toepassing binnen Microsoft Entra ID en analyseert de roltoewijzingen tussen twee datums. De query haalt directe roltoewijzingen op uit de AppRoleAssignments tabel en voegt deze gegevens samen met gebruikersgegevens uit de EntraUsers tabel en rolgegevens uit de AppRoles tabel.

// Set the date range and service principal ID for the query 
let startDate = datetime('2024-01-01'); 
let endDate = datetime('2024-03-14'); 
let servicePrincipalId = "<your service principal-id>"; 

// Query AppRoleAssignments for the specified service principal within the date range 
AppRoleAssignments 
| where ResourceId == servicePrincipalId and 
    todatetime(CreatedDateTime) between (startDate .. endDate) 

// Extend AppRoleId to a string for joining 
| extend AppRoleIdStr = tostring(AppRoleId) 

// Project the necessary fields for the join with EntraUsers and AppRoles 
| project PrincipalId, AppRoleIdStr, CreatedDateTime 

// Join with EntraUsers to get user details 
| join kind=inner (EntraUsers | project UserPrincipalName, DisplayName, ObjectID) on $left.PrincipalId == $right.ObjectID 

// Join with AppRoles to get the role display names 
| join kind=inner ( 
  AppRoles | mvexpand AppRoles | project RoleIdStr = tostring(AppRoles.Id), RoleDisplayName = tostring(AppRoles.DisplayName) 
) on $left.AppRoleIdStr == $right.RoleIdStr 

// Final projection of the report with the current date and time 
| project UserPrincipalName, DisplayName, RoleDisplayName, CreatedDateTime, ReportDate = now() 

Voorbeeld 3: Gebruikers toevoegen aan een app tussen twee datums van gegevensmomentopnamen

Deze rapporten bieden een weergave van welke gebruikers een app-roltoewijzing hebben gekregen voor de doeltoepassing tussen twee datums. Deze rapporten kunnen worden gebruikt om wijzigingen in app-toegang in de loop van de tijd bij te houden.

Deze query is gericht op een specifieke toepassing binnen Microsoft Entra ID en verandert in de roltoewijzingen tussen een begin- en einddatum.

// Define the date range and service principal ID for the query 

let startDate = datetime("2024-03-01"); 
let endDate = datetime("2024-03-14"); 
let servicePrincipalId = "<your service principal-id>"; 
let earlierDate = startDate; // Update this to your specific earlier date 

AppRoleAssignments 
| where SnapshotDate < endDate and ResourceId == servicePrincipalId
| project PrincipalId, AppRoleId2 = tostring(AppRoleId), CreatedDateTime 
| join kind=anti ( 
    AppRoleAssignments 
    | where SnapshotDate < earlierDate and ResourceId == servicePrincipalId 
    | project PrincipalId, AppRoleId1 = tostring(AppRoleId) 
) on PrincipalId 
| join kind=inner (EntraUsers) on $left.PrincipalId == $right.ObjectID 
| join kind=inner (AppRoles 
                   | mvexpand AppRoles 
                   | project AppRoleId=tostring(AppRoles.Id), RoleDisplayName=tostring(AppRoles.DisplayName) 
                  ) on $left.AppRoleId2 == $right.AppRoleId 
| project UserPrincipalName, DisplayName, RoleDisplayName, CreatedDateTime, PrincipalId, Change = "Added" 

Lopende imports instellen

In deze zelfstudie ziet u een eenmalig ETL-proces (Extract, Transform and Load) voor het vullen van Azure Data Explorer met één momentopname voor rapportagedoeleinden. Voor doorlopende rapportage of om wijzigingen in de loop van de tijd te vergelijken, kunt u het proces voor het invullen van Azure Data Explorer vanuit Microsoft Entra automatiseren, zodat uw database nog steeds actuele gegevens bevat.

U kunt Azure Automation, een Azure-cloudservice, gebruiken om de PowerShell-scripts te hosten die nodig zijn om gegevens te extraheren uit Microsoft Entra ID en Microsoft Entra ID Governance. Zie Microsoft Entra ID Governance-taken automatiseren met Azure Automationvoor meer informatie.

U kunt ook Azure-functies of opdrachtregelprogramma's zoals lightingest gebruiken om gegevens in te voeren en een reeds bestaande tabel te vullen. Zie LightIngest gebruiken om gegevens op te nemen in Azure Data Explorervoor meer informatie.

Als u bijvoorbeeld een bestand EntraAccessPackages.json in de huidige map naar de EntraAccessPackages-tabel wilt laden als de ingelogde gebruiker:

az login
LightIngest.exe "https://ingest-CLUSTERHOSTNAME;Fed=True" -database:"DATABASE" -table:EntraAccessPackages -sourcepath:"." -pattern:"EntraAccessPackages.json" -format:multijson -azcli:true

Query's uitvoeren op gegevens in Azure Monitor

Als u de audit-, aanmeldings- of andere Microsoft Entra-logboeken naar Azure Monitor verzendt, kunt u deze logboeken opnemen vanuit die Azure Monitor Log Analytics-werkruimte in uw query's. Zie Gegevens opvragen in Azure Monitor met behulp van Azure Data Explorervoor meer informatie over de relatie tussen Azure Monitor en Azure Data Explorer.

  1. Meld u aan bij het Microsoft Entra-beheercentrum.

  2. Selecteer diagnostische instellingen.

  3. Selecteer de Log Analytics-werkplek waar u uw logboeken verzendt.

  4. Noteer in het overzicht van de Log Analytics-werkruimte de abonnements-id, de naam van de resourcegroep en de werkruimtenaam van de werkruimte.

  5. Meld u aan bij Azure Portal.

  6. Navigeer naar de webgebruikersinterface van Azure Data Explorer.

  7. Zorg ervoor dat uw Azure Data Explorer-cluster wordt vermeld.

  8. Selecteer , voeg toe, dan verbinding.

  9. Typ in het venster Verbinding toevoegen de URL naar de Log Analytics-werkruimte, gevormd door de cloudspecifieke hostnaam, abonnements-id, resourcegroepnaam en werkruimtenaam van de Azure Monitor Log Analytics-werkruimte, zoals beschreven in Een Log Analytics-werkruimte toevoegen.

  10. Nadat de verbinding tot stand is gebracht, wordt uw Log Analytics-werkruimte weergegeven in het linkerdeelvenster met uw systeemeigen Azure Data Explorer-cluster.

  11. Selecteer in het linkermenu Queryen selecteer uw Azure Data Explorer-cluster.

  12. In het queryvenster kunt u vervolgens verwijzen naar de Azure Monitor-tabellen met de Microsoft Entra-logboeken in uw Azure Data Explorer-query's. Bijvoorbeeld:

    let CL1 = 'https://ade.loganalytics.io/subscriptions/*subscriptionid*/resourcegroups/*resourcegroupname*/providers/microsoft.operationalinsights/workspaces/*workspacename*';
    cluster(CL1).database('*workspacename*').AuditLogs | where Category == "EntitlementManagement"  and OperationName == "Fulfill access package assignment request"
    | mv-expand TargetResources | where TargetResources.type == 'AccessPackage' | project ActivityDateTime,APID = toguid(TargetResources.id)
    | join EntraAccessPackage on $left.APID == $right.Id
    | limit 100
    

Gegevens uit andere bronnen ophalen

U kunt ook extra tabellen maken in Azure Data Explorer om gegevens uit andere bronnen op te nemen. Als de gegevens zich in een JSON-bestand bevinden, vergelijkbaar met de bovenstaande voorbeelden of een CSV-bestand, kunt u de tabel maken op het moment dat u voor het eerst gegevens opvragen uit het bestand. Eenmaal de tabel is aangemaakt, kunt u ook LightIngest gebruiken om gegevens vanuit een JSON- of CSV-bestand in Azure Data Explorer op te nemen.

Zie overzicht van gegevensopname in Azure Data Explorervoor meer informatie over gegevensopname.

Voorbeeld 4: App-toewijzingen uit een Entra en een tweede bron combineren om een rapport te maken van alle gebruikers die toegang hadden tot een toepassing tussen twee datums

In dit rapport ziet u hoe u gegevens uit twee afzonderlijke systemen kunt combineren om aangepaste rapporten te maken in Azure Data Explorer. Hiermee worden gegevens over gebruikers, hun rollen en andere kenmerken van twee systemen samengevoegd in een uniforme indeling voor analyse of rapportage.

In dit voorbeeld wordt ervan uitgegaan dat er een tabel is met de naam salesforceAssignments met kolommen UserName, Name, EmployeeId, Department, JobTitle, AppName, Roleen CreatedDateTime die zijn ingevuld door gegevens uit een andere toepassing in te voeren.

// Define the date range and service principal ID for the query 

let startDate = datetime("2023-06-01"); 
let endDate = datetime("2024-03-13"); 
let servicePrincipalId = "<your service principal-id>"; 

// Pre-process AppRoleAssignments with specific filters and projections 
let processedAppRoleAssignments = AppRoleAssignments 
    | where ResourceId == servicePrincipalId and todatetime(CreatedDateTime) between (startDate .. endDate) 
    | extend AppRoleId = tostring(AppRoleId) 
    | project PrincipalId, AppRoleId, CreatedDateTime, ResourceDisplayName; // Exclude DeletedDateTime and keep ResourceDisplayName 

// Pre-process AppRoles to get RoleDisplayName for each role 
let processedAppRoles = AppRoles 
    | mvexpand AppRoles 
    | project AppRoleId = tostring(AppRoles.Id), RoleDisplayName = tostring(AppRoles.DisplayName); 

// Main query: Process EntraUsers by joining with processed role assignments and roles 
EntraUsers 
    | join kind=inner processedAppRoleAssignments on $left.ObjectID == $right.PrincipalId // Join with role assignments 
    | join kind=inner processedAppRoles on $left.AppRoleId == $right.AppRoleId // Join with roles to get display names 

    // Summarize to get the latest record for each unique combination of user and role attributes 
    | summarize arg_max(AccountEnabled, *) by UserPrincipalName, DisplayName, tostring(EmployeeId), Department, JobTitle, ResourceDisplayName, RoleDisplayName, CreatedDateTime 

    // Final projection of relevant fields including source indicator and report date 
    | project UserPrincipalName, DisplayName, EmployeeId=tostring(EmployeeId), Department, JobTitle, AccountEnabled=tostring(AccountEnabled), ResourceDisplayName, RoleDisplayName, CreatedDateTime, Source="EntraUsers", ReportDate = now() 

// Union with processed salesforceAssignments to create a combined report 
| union ( 
    salesforceAssignments 

    // Project fields from salesforceAssignments to align with the EntraUsers data structure 
    | project UserPrincipalName = UserName, DisplayName = Name, EmployeeId = tostring(EmployeeId), Department, JobTitle, AccountEnabled = "N/A", ResourceDisplayName = AppName, RoleDisplayName = Role, CreatedDateTime, Source = "salesforceAssignments", ReportDate = now() 
) 

Volgende stappen