Serie
EasyLife 365 mit Webhooks erweitern:
1: Schritt-für-Schritt-Anleitung zu E-Mail-Benachrichtigungen mit EasyLife 365 Webhooks
2: Gruppenmanagement an Gasteigentümer delegieren (Du liest diesen Artikel)
Im ersten Teil dieser Serie haben wir erkundet, wie E-Mail-Benachrichtigungen mit EasyLife 365 Webhooks eingerichtet werden. Heute befassen wir uns mit einem weiteren häufigen IT-Admin-Problem: die Verwaltung von Gruppenmitgliedschaften für Gastbenutzer. EasyLife 365 bietet mehrere Möglichkeiten, das zu vereinfachen, von eingebauten Bereitstellungsfunktionen bis hin zu vollständig anpassbaren Workflows mit Webhooks.
Die Herausforderung: IT-Ressourcen optimal nutzen
IT-Administratoren haben unzählige Prioritäten, von Sicherheitsinitiativen bis hin zu Infrastrukturprojekten. Trotzdem bearbeiten sie häufig routinemässige Gastzugriffsanfragen wie das Hinzufügen von Benutzern zu VPN-Gruppen, Dateizugriffsberechtigungen oder Anwendungszugriffsgruppen.
Der traditionelle Ablauf:
- Geschäftsbenutzer lädt einen Gast ein
- Gast bekommt grundlegenden Zugriff
- Geschäftsbenutzer stellt fest, dass Gäste zusätzlichen Zugriff brauchen (VPN, Apps usw.)
- Geschäftsbenutzer kontaktiert IT-Admin
- Admin fügt Gast manuell zu entsprechenden Gruppen hinzu
- Wiederholung bei jeder Zugriffänderung
Die Lösung: Geschäftsbenutzer befähigen, IT-Ressourcen freihalten
Dieser Ansatz nutzt die Webhook-Fähigkeiten von EasyLife 365, um externe Automatisierung auszulösen. Das ist ideal, wenn du volle Kontrolle über die Zugriffsabwicklung haben möchtest. Ähnliche Ergebnisse lassen sich auch direkt innerhalb von EasyLife 365 Collaboration mit nativen Bereitstellungsaktionen ohne Coding erreichen.
Der Ablauf in diesem Szenario:
- Geschäftsbenutzer lädt Gast über EasyLife 365 ein
- EasyLife 365-Template enthält Kontrollkästchen für Zugriffsanforderungen (VPN, Box, Confluence usw.)
- Gasteigentümer wählt den entsprechenden Zugriff bei der Einladung aus
- Webhook löst Azure Function aus, die den Gast den entsprechenden Gruppen zuweist
- Gäste erhalten sofortigen Zugriff: Admins können sich auf strategische Initiativen konzentrieren!
Die Lösungsarchitektur
Unser Beispiel verwendet eine Zwei-Funktionen-Azure-Functions-App:
- HTTP-Trigger-Funktion (guestrequest): Empfängt Webhook-Anfragen und stellt sie in die Warteschlange
- Queue-Trigger-Funktion (guestqueue): Verarbeitet Anfragen und verwaltet Gruppenmitgliedschaften über Microsoft Graph
Einrichtung der Umgebung
Voraussetzungen:
- Azure-Abonnement mit Berechtigungen zur Erstellung von Function Apps
- Azure CLI installiert (hier herunterladen)
- Zugriff auf das EasyLife Admin-Cockpit
- Benutzerdefinierte Datenfelder in deinem EasyLife-Gastbenutzer-Template konfiguriert
- Entra ID-Sicherheitsgruppen zur Zugriffskontrolle
EasyLife-Template-Konfiguration
Richte zuerst dein Gastbenutzer-Template mit benutzerdefinierten Datenfeldern ein:
- Gehe im EasyLife Admin Center zu Templates > Gastkonten
- Bearbeite dein Template oder erstelle ein neues
- Füge benutzerdefinierte Datenfelder hinzu:
- VPN-Zugriff (Kontrollkästchen) für VPN-Gruppenmitgliedschaft
- Box-Zugriff (Kontrollkästchen) für Box-Dateifreigabe-Zugriff
Die Code-Struktur
Die Azure Functions-App besteht aus zwei einfachen aber leistungsstarken Funktionen:
HTTP-Trigger-Funktion (guestrequest)
Diese Funktion dient als Webhook-Endpunkt für EasyLife. Bei einem Gastbenutzer-Ereignis:
- Empfängt sie die Webhook-Nutzlast vom EasyLife-Backend
- Bestätigt die Anfrage sofort mit einer 200 OK-Antwort
- Stellt die Anfrage zur Verarbeitung in die Azure Storage Queue
Queue-Verarbeitungsfunktion (guestqueue)
Diese Funktion übernimmt die Geschäftslogik, wenn eine Nachricht in der Queue erscheint:
- Verbindet sich mit Microsoft Graph über die verwaltete Identität der Function App
- Extrahiert die Benutzer-ID und Werte der benutzerdefinierten Datenfelder aus der Webhook-Nutzlast
- Ruft die aktuellen Gruppenmitgliedschaften des Benutzers aus Entra ID ab
- Vergleicht aktuelle Mitgliedschaften mit dem gewünschten Zustand
- Fügt den Benutzer Gruppen hinzu, wo Zugriff benötigt wird, aber fehlt
- Entfernt den Benutzer aus Gruppen, wo Zugriff nicht mehr erforderlich ist
Deployment in Azure
Das Deployment ist vollständig mit PowerShell und Azure CLI automatisiert:
# Konfigurationsparameter
$resourceGroupName = "rg-easylife-webhook"
$functionAppName = "func-easylife-webhook"
$storageAccountName = "saeasylifewebhook"
$location = "westeurope"
$dataFieldGroupIdMapping = "vpnUsers:82b18a56-1700-4679-a949-d1706a2d0c70,boxUsers:1cca2261-00b8-4bd1-946c-ef34e1048eb7"
## Bei Azure authentifizieren
az login
# Ressourcengruppe erstellen
az group create --name $resourceGroupName --location $location
# Storage Account erstellen
az storage account create --name $storageAccountName --resource-group $resourceGroupName --location $location --sku Standard_LRS
# Function App mit verwalteter Identität erstellen
$funcAppOutput = az functionapp create --consumption-plan-location $location --name $functionAppName --os-type Windows --resource-group $resourceGroupName --runtime powershell --storage-account $storageAccountName --functions-version 4 --runtime-version 7.4 --assign-identity '[system]' | ConvertFrom-Json
# Datenfeldmapping konfigurieren
az functionapp config appsettings set --name $functionAppName --resource-group $resourceGroupName --settings "dataFieldGroupIdMapping=$dataFieldGroupIdMapping"
# Microsoft Graph-Berechtigungen einrichten
$servicePrincipalId = $funcAppOutput.identity.principalId
$graphObjectId = (az ad sp list --display-name 'Microsoft Graph' | ConvertFrom-Json)[0].id
@(
'df021288-bdef-4463-88db-98f22de89214', # User.Read.All
'62a82d76-70ea-41e2-9197-370581804d09' # Groups.ReadWrite.All
) | ForEach-Object{
$body = @{
principalId = $servicePrincipalId
resourceId = $graphObjectId
appRoleId = $_
} | ConvertTo-Json -Compress
az rest --method POST --uri "https://graph.microsoft.com/v1.0/servicePrincipals/$servicePrincipalId/appRoleAssignments" --header "Content-Type=application/json" --body $body.Replace('"',"'")
}
# Funktionscode deployen
$deployPath = Get-ChildItem | Where-Object {$_.Name -notmatch "deploypkg" -and $_.Name -notmatch "_automation" } | Compress-Archive -DestinationPath deploypkg.zip -Force -PassThru
az functionapp deployment source config-zip --name $functionAppName --resource-group $resourceGroupName --src $deployPath.FullNameKonfiguration und Tests
Datenfeldmapping einrichten
Der Schlüssel zu dieser Lösung ist die Umgebungsvariable dataFieldGroupIdMapping. Sie verknüpft deine EasyLife 365-Datenfeldnamen mit Entra ID-Gruppen-IDs:
vpnUsers:82b18a56-1700-4679-a949-d1706a2d0c70,boxUsers:1cca2261-00b8-4bd1-946c-ef34e1048eb7Gruppen-IDs über das Azure Portal oder Azure CLI ermitteln:
az ad group show --group "VPN Benutzer" --query objectIdFunktion testen
Nach dem Deployment die Funktion über PowerShell testen:
$uri = 'https://deine-function-app.azurewebsites.net/api/guestrequest?code=dein-funktionsschluessel'
$testPayload = @{
"eventType"= "guestmodified"
"user" = @{
"id"= "c91ee487-757a-4167-a6b0-5144cc5998e3"
"metadataExtension"= @{
"additionalData"= @{
"vpnUsers"= $true
"boxUsers"= $false
}
}
}
}
Invoke-RestMethod -Uri $uri -Body ($testPayload | ConvertTo-Json -Depth 4) -Method PostIntegration mit EasyLife
Die Azure Function mit dem Webhook-System von EasyLife 365 verbinden:
- Navigiere zu Templates > Gastkonto im EasyLife Admin Center
- Wähle das Template mit den benutzerdefinierten Metadatenfeldern aus
- Füge die Function App unter hinzu:
- Bereitstellung (wenn neue Gäste erstellt werden)
- Datenerfassung (wenn sich benutzerdefinierte Felddaten ändern)
Die Geschäftliche Auswirkung
Für IT-Administratoren:
- Mehr Zeit für strategische Projekte und Sicherheitsinitiativen
- Weniger Routine-Support-Tickets für Gastzugriffsanfragen
- Kontrolle durch vordefinierte, sichere Gruppenmappings
- Verbesserte Governance mit automatisierten Audit-Trails
Für Geschäftsbenutzer:
- Self-Service-Zugriffsbereitstellung beim Einladen von Gästen
- Sofortiger Zugriff für Gäste ohne Warten auf die IT
- Klare Sichtbarkeit, welchen Zugriff sie gewähren
- Möglichkeit, den Gastzugriff bei Bedarf anzupassen
Für Gastbenutzer:
- Schnelleres Onboarding mit angemessenem Zugriff von Anfang an
- Einheitliche Erfahrung bei verschiedenen Geschäftssponsoren
- Weniger Reibung bei der Zusammenarbeit
Fazit: Ein praktischer Ansatz zur Automatisierung des Gruppenmanagements für Gäste
Die wichtigste Erkenntnis: Durch die Befähigung von Geschäftsbenutzern, Zugriffsentscheidungen innerhalb von IT-definierten Grenzen zu treffen und die technische Umsetzung zu automatisieren, entsteht eine Win-Win-Situation. IT-Administratoren können sich auf wirkungsvolle Arbeit konzentrieren, während Geschäftsbenutzer die nötige Agilität für effektive Zusammenarbeit erhalten.
Ob du es einfach mit eingebauter Bereitstellung hältst oder zusätzliche Logik durch Integrationen wie diese hinzufügst: EasyLife 365 hilft dir, die Kontrolle zu behalten, ohne dich in starre Prozesse einzusperren. Bereit, dein Gastkonto-Management zu automatisieren? Lade den vollständigen Quellcode herunter und starte heute! Hast du Fragen? Schreib uns an unicorn@easylife365.cloud.
Ressourcen



