Weisen Sie Benutzer mit PowerShell der Azure AD-Anwendung zu
Azure AD-Unternehmensanwendungen sind eine hervorragende Möglichkeit, Anwendungen von Drittanbietern mit Ihrem Azure Active Directory zu verbinden. Abhängig von Ihrem Azure AD-Plan können Sie einer Anwendung entweder einzelne Benutzer oder ganze Gruppen zuweisen.
Mit Azure AD Plan 1 können Sie nur Benutzer zuweisen, keine Gruppen. Daher ist es eine schreckliche Aufgabe, Ihre Benutzerliste auf dem neuesten Stand zu halten. Jedes Mal, wenn Sie einen neuen Benutzer zu Ihrem Office 365-Mandanten hinzufügen, müssen Sie den Benutzer auch zur Azure AD-Anwendung hinzufügen.
Zum Beispiel, wenn Sie Jira Cloud mit Azure AD integrieren möchten. Wenn Sie über Jira Cloud Access (Atlassian Cloud Access) verfügen, können Sie es mit Ihrem Azure Active Directory verbinden, sodass neue Benutzer automatisch zu Jira hinzugefügt werden.
Fügen Sie Benutzer mit PowerShell zur Azure AD-Anwendung hinzu
Um Unternehmensanwendungen automatisch neue Benutzer zuzuweisen, müssen wir die vorhandenen Benutzer und alle lizenzierten Benutzer in unserem Mandanten kennen.
Mit Msol-Diensten ist es einfacher, lizenzierte Benutzer zu erhalten, aber ich möchte dieses Skript in einem Azure Runbook ausführen. Die Authentifizierung von Azure AD ist viel einfacher (und bequemer) als bei Msol-Diensten.
Beratung
Wenn Sie mehr über den Einstieg in Azure Runbooks oder die Authentifizierung in Runbooks erfahren möchten, lesen Sie unbedingt diesen Artikel.
Wir benötigen die Objekt-ID der Azure AD-Unternehmensanwendung, genauer gesagt den Dienstprinzipal. Um dies zu erreichen, können wir einfach den AzureADServicePrincipal nach dem Namen der Anwendung filtern.
# Connect to Azure AD
Connect-AzureAD
# Get the service principal for the app you want to assign the user to
$servicePrincipal = Get-AzureADServicePrincipal -Filter "Displayname eq 'APPLICATION-NAME'"Mit dem servicePrincial können wir alle Benutzer abrufen, denen der Anwendung eine Rolle zugewiesen wurde:
# Get all users that are already assigned to the application
$existingUsers = Get-AzureADServiceAppRoleAssignment -all $true -ObjectId $servicePrincipal.Objectid | select -ExpandProperty PrincipalIdWir möchten nur Office 365-Benutzer hinzufügen, die über eine Lizenz verfügen. Wenn wir es nicht filtern, erhalten wir beispielsweise auch Gastkonten.
# Get all licensedUsers
$licensedUsers = Get-AzureADUser -all $true | Where-Object {$_.AssignedLicenses} | Select displayname,objectidDer nächste Schritt besteht darin, beide Listen zu vergleichen, um alle neuen Benutzer zu ermitteln, die wir hinzufügen müssen:
# Compare lists
$newUsers = $licensedUsers | Where-Object { $_.ObjectId -notin $existingUsers }Wir haben nun also eine Liste neuer Benutzer, die der Anwendung nicht zugewiesen sind. Wir können diese Liste einfach verarbeiten und ihnen eine neue Rolle für die Azure AD Enterprise-Anwendung zuweisen:
ForEach ($user in $newUsers) {
Try {
New-AzureADUserAppRoleAssignment -ObjectId $user.ObjectId -PrincipalId $user.ObjectId -ResourceId $servicePrincipal.ObjectId -Id $servicePrincipal.Approles[0].id -ErrorAction Stop
[PSCustomObject]@{
UserPrincipalName = $user.displayname
AppliciationAssigned = $true
}
}
catch {
[PSCustomObject]@{
UserPrincipalName = $user.displayname
AppliciationAssigned = $false
}
}
}Ich versuche immer, einen Try-Catch-Block zu verwenden und die Ergebnisse an ein benutzerdefiniertes Objekt auszugeben. Auf diese Weise können wir leicht erkennen, was das Skript getan hat.
Zusammenfassung
Ich habe dieses Skript in einem Azure Runbook verwendet. Das vollständige Skript finden Sie hier auf meinem Github, das Sie in einem Runbook verwenden können. Die Authentifizierung basiert auf dem ausführenden Konto des Azure Automation-Kontos. Weitere Informationen dazu finden Sie hier.
Wenn Sie Fragen haben, hinterlassen Sie einfach unten einen Kommentar.
