Veilig verbinden met de Microsoft Graph met Logic Apps en Managed Identity

Logic Apps is een no-code functionaliteit binnen de Microsoft Azure cloud die gebruikt wordt om visueel workflows te bouwen. Het is het platform waarop Microsoft Power Automate is gebouwd.


https://azure.microsoft.com/en-us/services/logic-apps/


Waar Power Automate een tool is voor power users (de werknemer met bovengemiddelde affiniteit met technologie), richt Logic Apps zich op IT personeel.


Logic Apps is met name bedoeld voor integratieoplossingen en biedt een aantal voordelen voor IT teams ten opzichte van Power Automate omdat het binnen de Azure cloud wordt aangeboden. Zo kun je gebruik maken van Azure Resource Management en de toegangscontrols van Azure net als elke andere Azure resource. Ook zijn de mogelijkheden om connecties naar bronsystemen te beveiligen meer uitgebreid. Dat is met name waar deze post betrekking op heeft.


Logic Apps biedt de mogelijkheid om de Logic App te voorzien van een zogenaamd Managed Identity. Zie dit als een gebruikersaccount voor jouw Logic App met een client id en een secret, synoniem voor een gebruikersnaam en wachtwoord. Het mooie aan dit Managed Identity is dat het secret alleen bekend is bij Microsoft Azure. Hierdoor kun je een veilige verbinding opzetten met bronsystemen zonder dat je hiervoor wachtwoorden of secrets hoeft te beheren. Dat gaat allemaal volledig automatisch.


https://docs.microsoft.com/en-us/azure/logic-apps/create-managed-service-identity


Dit managed identity kun je ook gebruiken om met de Microsoft Graph te verbinden.


Maak hiervoor eerst een Logic App en configureer die met een Managed Identity.

Logic App maken met Managed Identity

Kopieer voordat je verder gaat het object id van het managed identity.


Gebruik vervolgens PowerShell om de managed identity rechten te geven op de Microsoft Graph. In onderstaand voorbeeld gebruik ik het directory.read.all recht waarmee je de Azure AD kunt uitlezen. Welke rechten er allemaal zijn, kun je hier vinden: https://docs.microsoft.com/en-us/graph/permissions-reference


Connect-AzureAd

$msi = Get-AzureADServicePrincipal -ObjectId <id managed identity>
$graph = Get-AzureADServicePrincipal -Filter "AppId eq '00000003-0000-0000-c000-000000000000'"

$role = $graph.AppRoles | ?{$_.Value -imatch "directory.read.all" }

New-AzureADServiceAppRoleAssignment -ObjectId $msi.ObjectId -PrincipalId $msi.ObjectId -Id $role.Id -ResourceId $graph.ObjectId

De managed identity kan nu gebruikt worden in combinatie met de HTTP action in Logic Apps om met de graph te verbinden. Dit patroon is heel krachtig en kan ingezet worden op een groot aantal bronsystemen binnen Microsoft Azure en Office 365, maar ook op verschillende systemen van derde partijen die als application zijn geregistreerd in Azure AD en application permissions toestaan. Zie in onderstaand voorbeeld een Logic App action die alle gebruikers ophaalt uit Azure AD via de Microsoft Graph



Managed Identity en de Microsoft Graph



38 keer bekeken