Automatisera Microsoft Entra ID-styrningsuppgifter via Azure Automation och Microsoft Graph

Azure Automation är en Azure-molntjänst som gör att du kan automatisera vanliga eller repetitiva systemhantering och processer. Microsoft Graph är Microsofts enhetliga API-slutpunkt för Microsoft Entra-funktioner som hanterar användare, grupper, åtkomstpaket, åtkomstgranskningar och andra resurser i katalogen. Du kan hantera Microsoft Entra-ID i stor skala från PowerShell-kommandoraden med hjälp av Microsoft Graph PowerShell SDK. Du kan också inkludera Microsoft Graph PowerShell-cmdletar från en PowerShell-baserad runbook i Azure Automation, så att du kan automatisera Microsoft Entra-uppgifter från ett enkelt skript.

Azure Automation och PowerShell Graph SDK stöder certifikatbaserad autentisering och programbehörigheter, så du kan låta Azure Automation-runbooks autentiseras mot Microsoft Entra-ID utan att behöva en användarkontext.

Den här artikeln visar hur du kommer igång med Azure Automation för Microsoft Entra ID-styrning genom att skapa en enkel runbook som frågar berättigandehantering via Microsoft Graph PowerShell.

Skapa ett Azure Automation-konto

Dricks

Stegen i den här artikeln kan variera något beroende på vilken portal du börjar från.

Azure Automation tillhandahåller en molnbaserad miljö för runbook-körning. Dessa runbooks kan starta automatiskt baserat på ett schema eller utlösas av webhooks eller av Logic Apps.

Om du använder Azure Automation måste du ha en Azure-prenumeration.

Kravroll: Azure-prenumeration eller resursgruppsägare

  1. Logga in på Azure-portalen. Kontrollera att du har åtkomst till prenumerationen eller resursgruppen där Azure Automation-kontot ska finnas.

  2. Välj prenumerationen eller resursgruppen och välj Skapa. Skriv Automation, välj Automation Azure-tjänsten från Microsoft och välj sedan Skapa.

  3. När Azure Automation-kontot har skapats väljer du Åtkomstkontroll (IAM). Välj sedan Visa i Visa åtkomst till den här resursen. Dessa användare och tjänstens huvudnamn kommer därefter att kunna interagera med Microsoft-tjänsten via skripten som ska skapas i det Azure Automation-kontot.

  4. Granska de användare och tjänsthuvudnamn som visas där och se till att de är auktoriserade. Ta bort alla användare som är obehöriga.

Skapa ett självsignerat nyckelpar och certifikat på datorn

Så att det kan fungera utan att behöva dina personliga autentiseringsuppgifter måste Det Azure Automation-konto som du skapade autentisera sig till Microsoft Entra-ID med ett certifikat.

Om du redan har ett nyckelpar för att autentisera tjänsten till Microsoft Entra-ID och ett certifikat som du har fått från en certifikatutfärdare går du vidare till nästa avsnitt.

Generera ett självsignerat certifikat genom att

  1. Följ anvisningarna i hur du skapar ett självsignerat certifikat, alternativ 2, för att skapa och exportera ett certifikat med dess privata nyckel.

  2. Visa tumavtrycket för certifikatet.

     $cert | ft Thumbprint
    
  3. När du har exporterat filerna kan du ta bort certifikatet och nyckelparet från ditt lokala användarcertifikatarkiv. I efterföljande steg tar du även bort .pfx filerna och .crt när certifikatet och den privata nyckeln har laddats upp till Azure Automation- och Microsoft Entra-tjänsterna.

Ladda upp nyckelparet till Azure Automation

Din runbook i Azure Automation hämtar den privata nyckeln från filen och använder den .pfx för autentisering till Microsoft Graph.

  1. I Azure-portalen för Azure Automation-kontot väljer du Certifikat och Lägg till ett certifikat.

  2. Ladda upp filen som .pfx skapades tidigare och skriv det lösenord som du angav när du skapade filen.

  3. När den privata nyckeln har laddats upp registrerar du certifikatets förfallodatum.

  4. Nu kan du ta bort .pfx filen från den lokala datorn. Ta dock inte bort .crt filen ännu, eftersom du behöver den här filen i ett efterföljande steg.

Lägga till moduler för Microsoft Graph till ditt Azure Automation-konto

Som standard har Azure Automation inga PowerShell-moduler förinstallerade för Microsoft Graph. Du måste lägga till Microsoft.Graph.Authentication och sedan ytterligare moduler från galleriet till ditt Automation-konto.

  1. I Azure-portalen för Azure Automation-kontot väljer du Moduler och sedan Bläddra i galleriet.

  2. I sökfältet skriver du Microsoft.Graph.Authentication. Välj modulen, välj Importera och välj OK om du vill att Microsoft Entra-ID ska börja importera modulen. När du har valt OK kan det ta flera minuter att importera en modul. Försök inte lägga till fler Microsoft Graph-moduler förrän importen av Microsoft.Graph.Authentication-modulen har slutförts, eftersom de andra modulerna har Microsoft.Graph.Authentication som en förutsättning.

  3. Gå tillbaka till listan Moduler och välj Uppdatera. När statusen för modulen Microsoft.Graph.Authentication har ändrats till Tillgänglig kan du importera nästa modul.

  4. Om du använder cmdletarna för Microsoft Entra ID-styrningsfunktioner, till exempel berättigandehantering, upprepar du importprocessen för modulen Microsoft.Graph.Identity.Governance.

  5. Importera andra moduler som skriptet kan kräva, till exempel Microsoft.Graph.Users. Om du till exempel använder Identity Protection kan du vilja importera modulen Microsoft.Graph.Identity.SignIns .

Skapa en appregistrering och tilldela behörigheter

Sedan skapar du en appregistrering i Microsoft Entra-ID så att Microsoft Entra-ID:t känner igen Azure Automation-runbookens certifikat för autentisering.

Kravroll: Global administratör eller annan administratör som kan godkänna program till programbehörigheter

  1. Logga in på administrationscentret för Microsoft Entra som minst global administratör.

  2. Bläddra till >Identitetsprogram>> Appregistreringar.

  3. Välj Ny registrering.

  4. Ange ett namn för programmet och välj Registrera.

  5. När programregistreringen har skapats noterar du program-ID :t (klient-) och katalog-ID:t (klientorganisation) när du behöver dessa objekt senare.

  6. Välj Certifikat och hemligheter och Ladda upp certifikat.

  7. Ladda upp filen som .crt skapades tidigare.

  8. Välj API-behörigheter och Lägg till en behörighet.

  9. Välj Behörigheter för Microsoft Graph och Program.

  10. Välj var och en av de behörigheter som ditt Azure Automation-konto kräver och välj sedan Lägg till behörigheter.

    • Om din runbook bara utför frågor eller uppdateringar i en enda katalog behöver du inte tilldela den programbehörigheter för hela klientorganisationen. I stället kan du tilldela tjänstens huvudnamn till katalogens katalogägare eller katalogläsarroll.
    • Om din runbook endast utför frågor för berättigandehantering kan den använda behörigheten EntitlementManagement.Read.All .
    • Om din runbook gör ändringar i rättighetshantering, till exempel för att skapa tilldelningar i flera kataloger, använder du behörigheten EntitlementManagement.ReadWrite.All .
    • Kontrollera att nödvändig behörighet har lagts till för andra API:er. För till exempel identitetsskydd bör behörigheten IdentityRiskyUser.Read.All läggas till.
  11. Välj Bevilja administratörsbehörighet för att ge appen dessa behörigheter.

Skapa Azure Automation-variabler

I det här steget skapar du tre variabler i Azure Automation-kontot som runbooken använder för att avgöra hur du autentiserar till Microsoft Entra-ID.

  1. Gå tillbaka till Azure Automation-kontot i Azure-portalen.

  2. Välj Variabler och Lägg till variabel.

  3. Skapa en variabel med namnet Tumavtryck. Skriv, som värdet för variabeln, certifikatets tumavtryck som genererades tidigare.

  4. Skapa en variabel med namnet ClientId. Skriv som värdet för variabeln klient-ID för programmet som registrerats i Microsoft Entra-ID.

  5. Skapa en variabel med namnet TenantId. Skriv som värdet för variabeln klientorganisations-ID:t för katalogen där programmet registrerades.

Skapa en Azure Automation PowerShell-runbook som kan använda Graph

I det här steget skapar du en första runbook. Du kan utlösa den här runbooken för att verifiera att autentiseringen med det certifikat som skapades tidigare lyckades.

  1. Välj Runbooks och Skapa en runbook.

  2. Skriv namnet på runbooken, välj PowerShell som den typ av runbook som ska skapas och välj Skapa.

  3. När runbooken har skapats visas ett textredigeringsfönster där du kan skriva in PowerShell-källkoden för runbooken.

  4. Skriv följande PowerShell i textredigeraren.

Import-Module Microsoft.Graph.Authentication
$ClientId = Get-AutomationVariable -Name 'ClientId'
$TenantId = Get-AutomationVariable -Name 'TenantId'
$Thumbprint = Get-AutomationVariable -Name 'Thumbprint'
Connect-MgGraph -clientId $ClientId -tenantId $TenantId -certificatethumbprint $Thumbprint
  1. Välj Test-fönstret och välj Start. Vänta några sekunder tills Azure Automation-bearbetningen av runbook-skriptet har slutförts.

  2. Om körningen av runbooken lyckas visas meddelandet Välkommen till Microsoft Graph! .

Nu när du har verifierat att din runbook kan autentisera till Microsoft Graph utökar du din runbook genom att lägga till cmdletar för att interagera med Microsoft Entra-funktioner.

Utöka runbooken så att den använder Berättigandehantering

Om appregistreringen för din runbook har behörighetshanterings-API:erna.Read.All eller EntitlementManagement.ReadWrite.All kan den använda API:erna för berättigandehantering.

  1. Om du till exempel vill hämta en lista över åtkomstpaket för Microsoft Entra-berättigandehantering kan du uppdatera den ovan skapade runbooken och ersätta texten med följande PowerShell.
Import-Module Microsoft.Graph.Authentication
$ClientId = Get-AutomationVariable -Name 'ClientId'
$TenantId = Get-AutomationVariable -Name 'TenantId'
$Thumbprint = Get-AutomationVariable -Name 'Thumbprint'
$auth = Connect-MgGraph -clientId $ClientId -tenantid $TenantId -certificatethumbprint $Thumbprint
Import-Module Microsoft.Graph.Identity.Governance
$ap = @(Get-MgEntitlementManagementAccessPackage -All -ErrorAction Stop)
if ($null -eq $ap -or $ap.Count -eq 0) {
   ConvertTo-Json @()
} else {
   $ap | Select-Object -Property Id,DisplayName | ConvertTo-Json -AsArray
}
  1. Välj Test-fönstret och välj Start. Vänta några sekunder tills Azure Automation-bearbetningen av runbook-skriptet har slutförts.

  2. Om körningen lyckades blir utdata i stället för välkomstmeddelandet en JSON-matris. JSON-matrisen innehåller ID och visningsnamn för varje åtkomstpaket som returneras från frågan.

Ange parametrar till runbooken (valfritt)

Du kan också lägga till indataparametrar i din runbook genom att lägga till ett Param avsnitt överst i PowerShell-skriptet. Till exempel,

Param
(
    [String] $AccessPackageAssignmentId
)

Formatet för de tillåtna parametrarna beror på den anropande tjänsten. Om runbooken tar parametrar från anroparen måste du lägga till valideringslogik i runbooken för att säkerställa att de angivna parametervärdena är lämpliga för hur runbooken kan startas. Om din runbook till exempel startas av en webhook utför Azure Automation ingen autentisering på en webhook-begäran så länge den görs till rätt URL, så du behöver ett alternativt sätt att verifiera begäran.

När du har konfigurerat runbook-indataparametrar kan du ange värden via testsidan när du testar din runbook. Senare när runbooken publiceras kan du ange parametrar när du startar runbooken från PowerShell, REST-API:et eller en logikapp.

Parsa utdata från ett Azure Automation-konto i Logic Apps (valfritt)

När runbooken har publicerats kan du skapa ett schema i Azure Automation och länka din runbook till det schemat så att den körs automatiskt. Schemaläggning av runbooks från Azure Automation är lämpligt för runbooks som inte behöver interagera med andra Azure- eller Office 365-tjänster som inte har PowerShell-gränssnitt.

Om du vill skicka utdata från din runbook till en annan tjänst kan du överväga att använda Azure Logic Apps för att starta din Azure Automation-runbook, eftersom Logic Apps också kan parsa resultatet.

  1. I Azure Logic Apps skapar du en logikapp i Logic Apps Designer som börjar med Upprepning.

  2. Lägg till åtgärden Skapa jobb från Azure Automation. Autentisera till Microsoft Entra-ID och välj prenumerationen, resursgruppen och automationskontot som skapades tidigare. Välj Vänta på jobb.

  3. Lägg till parameterns Runbook-namn och skriv namnet på den runbook som ska startas. Om runbooken har indataparametrar kan du ange värdena för dem.

  4. Välj Nytt steg och lägg till åtgärden Hämta jobbutdata. Välj samma prenumeration, resursgrupp, Automation-konto som föregående steg och välj det dynamiska värdet för jobb-ID från föregående steg.

  5. Du kan sedan lägga till fler åtgärder i logikappen, till exempel åtgärden Parsa JSON som använder innehållet som returneras när runbooken är klar. (Om du automatiskt genererar Parsa JSON-schema från en exempelnyttolast, se till att ta hänsyn till PowerShell-skript som potentiellt returnerar null. Du kan behöva ändra en del av "type": ​"string" till "type": [​"string",​ "null"​] i schemat.)

I Azure Automation kan en PowerShell-runbook misslyckas om den försöker skriva en stor mängd data till utdataströmmen samtidigt. Du kan vanligtvis kringgå det här problemet genom att låta runbooken bara mata ut den information som behövs av logikappen, till exempel genom att använda cmdleten Select-Object -Property för att exkludera onödiga egenskaper.

Planera för att hålla certifikatet uppdaterat

Om du har skapat ett självsignerat certifikat enligt stegen ovan för autentisering ska du tänka på att certifikatet har en begränsad livslängd innan det upphör att gälla. Du måste återskapa certifikatet och ladda upp det nya certifikatet innan det upphör att gälla.

Det finns två platser där du kan se förfallodatumet i Azure-portalen.

  • På skärmen Certifikat i Azure Automation visas certifikatets förfallodatum.
  • I Microsoft Entra-ID visar skärmen Certifikat och hemligheter för förfallodatumet för certifikatet som används för Azure Automation-kontot på appregistreringen.

Nästa steg