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
Logga in på Azure Portal . Kontrollera att du har åtkomst till prenumerationen eller resursgruppen där Azure Automation-kontot ska finnas.
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.
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.
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
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.
Visa tumavtrycket för certifikatet.
$cert | ft Thumbprint
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.
I Azure Portal för Azure Automation-kontot väljer du Certifikat och Lägg till ett certifikat.
Ladda upp filen som
.pfx
skapades tidigare och skriv det lösenord som du angav när du skapade filen.När den privata nyckeln har laddats upp registrerar du certifikatets förfallodatum.
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.
I Azure Portal för Azure Automation-kontot väljer du Moduler och sedan Bläddra i galleriet.
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.
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.
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.
Importera andra moduler som skriptet kan kräva, till exempel Microsoft.Graph.Users. Om du till exempel använder Microsoft Entra ID 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.
- Logga in på administrationscentret för Microsoft Entra som minst programadministratör.
- Bläddra till Identitetsprogram>> Appregistreringar.
- Välj Ny registrering.
- Ange ett namn för programmet och välj Registrera.
- När programregistreringen har skapats noterar du program-ID :t (klient-) och katalog-ID:t (klientorganisation) när du behöver dessa objekt senare.
- Välj Certifikat och hemligheter>Certifikat>ladda upp certifikat.
- Ladda upp filen som
.crt
skapades tidigare.
- Ladda upp filen som
- Välj API-behörigheter>Lägg till en behörighet.
- Välj Behörigheter för Microsoft Graph-program>.
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 Microsoft Entra ID Protection kan till exempel behörigheten IdentityRiskyUser.Read.All behövas.
Bevilja administratörsmedgivande
Programmet som skapades i föregående avsnitt har behörigheter som kräver att någon med minst rollen Privilegierad rolladministratör godkänner innan det fungerar som avsett.
- Logga in på administrationscentret för Microsoft Entra som minst en privilegierad rolladministratör.
- Bläddra till Identitetsprogram>> Appregistreringar> Alla program.
- Välj den app som skapades i föregående avsnitt.
- Välj API-behörigheter och granska de behörigheter som krävs.
- Om det är lämpligt väljer du Bevilja administratörsmedgivande för "Ditt klientnamn" för att ge programmet 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.
Gå tillbaka till Azure Automation-kontot i Azure Portal.
Välj Variabler och Lägg till variabel.
Skapa en variabel med namnet Tumavtryck. Skriv, som värdet för variabeln, certifikatets tumavtryck som genererades tidigare.
Skapa en variabel med namnet ClientId. Skriv som värdet för variabeln klient-ID för programmet som registrerats i Microsoft Entra-ID.
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.
Välj Runbooks och Skapa en runbook.
Skriv namnet på runbooken, välj PowerShell som den typ av runbook som ska skapas och välj Skapa.
När runbooken har skapats visas ett textredigeringsfönster där du kan skriva in PowerShell-källkoden för runbooken.
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
Välj Test-fönstret och välj Start. Vänta några sekunder tills Azure Automation-bearbetningen av runbook-skriptet har slutförts.
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.
- 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
}
Välj Test-fönstret och välj Start. Vänta några sekunder tills Azure Automation-bearbetningen av runbook-skriptet har slutförts.
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.
I Azure Logic Apps skapar du en logikapp i Logic Apps Designer som börjar med Upprepning.
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.
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.
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.
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 Portal.
- 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.