ink drop - stock.adobe.com
Managen Sie den Teams-Lebenszyklus mit PowerShell und Graph
Ein mangelhaftes Microsoft-Teams-Management kann Sicherheitslücken und Governance-Verstöße verursachen. Erfahren Sie, wie Sie mit Graph und PowerShell die Kontrolle behalten.
In den frühen Tagen der Coronapandemie beeilten sich viele Unternehmen, Apps für die Remote-Arbeit zu implementieren. Microsoft Teams war für viele eine naheliegende Wahl, um die Zusammenarbeit weit verstreuter Mitarbeiter zu fördern. Jetzt, da sich eine gewisse Routine eingestellt hat, suchen einige Admins nach einer Möglichkeit, um die eilig errichtete Infrastruktur zu rationalisieren und automatisieren. Erfahren Sie in diesem Artikel, wie Sie den Lebenszyklus von Microsoft Teams mit Graph und PowerShell effizient verwalten.
Microsoft Teams ist eine Kommunikationsplattform, die Teil der Office-365-Suite ist. Sie bietet Chat- und Videochat-Funktionen sowie weitere Unterstützung bei der Zusammenarbeit. Sie hat einen guten Ruf hinsichtlich der Nutzung, doch viele Unternehmen hatten Probleme beim Bereitstellen und Einführen von Teams. Das Programm ist zur Authentifizierung mit Azure Active Directory verknüpft, was die Veraltung ohne Microsoft-365-Abo erschwert. Das hastige Einführen von Microsoft Teams zur Umsetzung von Home-Office-Infrastruktur im Rahmen der Coronapandemie rächt sich nun außerdem insofern, als vielen Admins nun praktikable Management- und durchdachte Richtlinieninfrastrukturen fehlen.
Ohne Vorgaben durften Benutzer oft beliebig viele Teams erstellen, ohne sich Gedanken über Abhängigkeiten und Geschäftsgeheimnisse zu machen. Einige Unternehmen stellten fest, dass Mitarbeiter sensible Informationen in Gruppen geteilt hatten, in denen auch externe Nutzer Einsicht hatten.
Was sind typische Fehler bei der Teams-Bereitstellung?
Bei jeder überstürzten Bereitstellung bleiben Best Practices auf der Strecke. Im Fall von Microsoft Teams summieren sich die bereitgestellten Komponenten im Laufe der Zeit und verwaisen oft, wenn andere Teile entfernt oder bereinigt werden.
Microsoft Teams bietet Chat- und Videodienste, die über vorhandene Komponenten wie Azure Active Directory, Exchange Online, SharePoint Online, OneDrive und andere Dienste geschichtet sind. Wenn Sie ohne genauen Plan viele Teams erstellen, bekommen Sie viele Microsoft-365-Gruppen. Jede Gruppe benötigt zugehörige Entitäten in verschiedenen Diensten, darunter eine SharePoint-Website, ein Exchange-Postfach und einen Plan in Planner. Diese sollten Sie dringend im Blick behalten.
Microsoft Teams erfordert aufgrund seiner Komplexität eine genaue Kontrolle. Zum Beispiel steuert die Microsoft-365-Sicherheitsgruppe Berechtigungen, SharePoint Online speichert Dateien und ermöglicht die gemeinsame Nutzung, und Exchange stellt die Struktur für E-Mails innerhalb und außerhalb des Teams bereit. Oft prüfen Unternehmen nicht die Sicherheit dieser Komponenten und löschen überflüssige oder veraltete Ressourcen nicht.
Wie steuern Administratoren Microsoft Teams?
Von Microsoft sind einige Tools zum Verwalten von Teams verfügbar, die drei Kernbereiche umfassen:
- Erstellen und Benennen von Gruppen und Teams;
- Planen, Speichern und Archivieren von Gruppen und Teams; sowie
- Verwaltung von Gruppen- und Teammitgliedschaften.
Die meisten davon sind in Admin-Portalen verfügbar, einige gibt es jedoch nur in PowerShell. Besonders effizient ist es, ein Skript in PowerShell zu erstellen, das eine Verbindung zu Microsoft Graph herstellt, um den Prozess wiederholbar zu machen. Die Microsoft Graph-API ermöglicht es Administratoren, Konfigurationsänderungen in den Cloud-Diensten von Microsoft, einschließlich Microsoft Teams und Azure Active Directory, von einem Endpunkt aus vorzunehmen.
Den Teams-Lebenszyklus mit PowerShell managen
Zunächst müssen Sie die erforderlichen Module installieren und importieren und dann die Bereiche (Berechtigungen) definieren, die zum Verwalten der einzelnen Schritte erforderlich sind.
Install-Module Microsoft.Graph
Select-MgProfile -Name "beta"
Import-Module Microsoft.Graph
$scopes = @(
"User.ReadWrite.All"
"Group.ReadWrite.All"
"GroupMember.ReadWrite.All"
"Directory.ReadWrite.All"
)
Connect-MgGraph -Scopes $scopes
So erstellen Sie Gruppen und Teams
Beim Erstellen von Microsoft 365-Gruppen verwenden Sie eine administrative Vorlage, in der Sie Konfiguration speichern. Sie können die Standardwerte ändern, indem Sie die spezifische Konfiguration abrufen und neue Werte mit dem Befehl Update-MgDirectorySetting übergeben. Dieser Befehl erstellt eine neue Azure AD-Verzeichniskonfiguration, die bestimmt, wer Gruppen und Teams erstellen kann.
$securitygroupname = "sg-Engineering"
$allowgroupcreation = $false
$groupcreationallowedgroupid = (Get-MgGroup `
-Search "DisplayName:$securitygroupname" `
-ConsistencyLevel eventual).Id
$setting = 'Group.Unified' $directorysetting = Get-MgDirectorySetting | `
Where-Object DisplayName -EQ $setting
$directorysetting.Values.foreach{
[MicrosoftGraphSettingValue]@{
Name = $PSItem.Name
Value = $PSItem.DefaultValue
}
}
($updates | Where-Object Name -eq 'GroupCreationAllowedGroupId').Value
= $groupcreationallowedgroupid
($updates | Where-Object Name -eq 'EnableGroupCreation').Value =
$false
Update-MgDirectorySetting -DirectorySettingId $directorysetting.id -
Values $updates
Nachdem Sie die Sicherheitsgruppe zum Erstellen von Microsoft-365-Gruppen und -Teams festgelegt haben, besteht die nächste Aufgabe darin, eine Namenskonvention durchzusetzen. Der folgende Befehl zwingt jede Gruppe oder jedes Team, das Präfix TEAMS gefolgt vom ausgewählten Gruppennamen und der Abteilung zu verwenden.
$prefixnamingrequirement = "TEAM_[Gruppenname]_[Abteilung]" $customblockedwordslist = "HR,IT,RECHT"
$setting = 'Group.Unified'
$directorysetting = Get-MgDirectorySetting | `
Where-Object DisplayName -EQ $setting
$directorysetting.Values.foreach{
[MicrosoftGraphSettingValue]@{
Name = $PSItem.Name
Value = $PSItem.DefaultValue
}
}
($updates | Where-Object Name -eq
'PrefixSuffixNamingRequirement').Value = $prefixnamingrequirement
($updates | Where-Object Name -eq 'CustomBlockedWordsList').Value = $customblockedwordslist
Update-MgDirectorySetting -DirectorySettingId $directorysetting.id -
Values $updates
So richten Sie Befristung, Aufbewahrung und Archivierung von Gruppen und Teams ein
Sie können Gruppen mit einem Verfallsdatum versehen, um ihren Lebenszyklus automatisch zu verwalten. Aufbewahrungsrichtlinien regeln, wann und wie der Inhalt von Gruppen gespeichert wird. Sie können Archive erstellen, um eine Momentaufnahme des Teams zu erhalten, das nicht mehr aktiv ist.
Als erstes müssen Sie eine Richtlinie zum Ablaufen der Gruppe definieren und festlegen. Die Richtlinieneigenschaft ManagedGroupTypes kann None, Selected oder All lauten, je nachdem, auf welche Gruppen Sie sie anwenden möchten. In diesem Fall setzen wir 100 Tage als Frist für alle Gruppen
$grouplifetimeindays = 100
$managedgrouptypes = "All"
$alternatenotificationemails = [email protected]
$properties = @{
GroupLifeTimeInDays = $grouplifetimeindays
ManagedGroupTypes = $managedgrouptypes
AlternateNotificationEmails = $alternatenotificationemails
}
$policy = $properties | New-MgGroupLifecyclePolicy
Als Nächstes können Sie eine Aufbewahrungsrichtlinie für Gruppen und Teams einrichten.
Install-Module ExchangeOnlineManagement
Import-Module ExchangeOnlineManagement
Connect-IPPSSession
$teamsname = "Teams Policy"
$teamsnamerule = "Teams Policy Rule"
$teamsdescription = "Teams Policy" $teamspolicy = New-RetentionCompliancePolicy
-Name $teamsname
-Comment $teamsdescription
-TeamsChannelLocation All
-TeamsChatLocation All
-Enabled $true
New-RetentionComplianceRule
-Name $teamsnamerule
-Policy $teamspolicy.Id
-RetentionDuration 2555
-RetentionComplianceAction KeepAndDelete
Schließlich können Sie bei Bedarf mit dem folgenden Befehl ein Team archivieren und wiederherstellen.
$groupname = "Sales und Marketing"
$groupid = (Get-MgGroup -Filter "DisplayName eq '$groupname'").Id
Invoke-MgArchiveTeam -TeamId $groupid
Invoke-MgUnarchiveTeam -TeamId $groupid
Gruppen- und Teammitgliedschaftsverwaltung
Benutzer, die Zugriff auf ein Microsoft-365-Team oder eine Gruppe benötigen, müssen der unterstützenden Sicherheitsgruppe direkt hinzugefügt werden. Jede Gruppe oder jedes Team verwendet mehrere Komponenten, darunter eine Azure-Active-Directory-Sicherheitsgruppe.
Es ist kompliziert, den Zugriff zu kontrollieren, wenn nur Eigentümer des Teams ihn selbst verwalten können. Organisationen mit einer Azure-AD-Premium-P2-Lizenz können jedoch Zugriffsüberprüfungen für jede Sicherheitsgruppe durchführen und automatisiert in regelmäßigen Abständen laufen lassen. Das kann sich auf Gruppen, aber auch Gastbenutzer beziehen. Ein Zugriffsüberprüfungsprozess ermöglicht es den Eigentümern des Teams sowie Benutzern mit speziellen Rechten, den aktuellen Berechtigungssatz zu ändern. Sobald die Überprüfung abgeschlossen ist, können Sie den Prozess automatisieren.
Der folgende PowerShell-Code stellt eine Verbindung mit Microsoft Graph her und erstellt eine Zugriffsüberprüfung für alle Mitglieder der Sicherheitsgruppe Sales und Marketing in Azure AD. Das Admin-Konto ist der Besitzer. Der Code legt fest, dass der Überprüfungsprozess jeden Monat wiederholt wird; Wenn die Prüfung nicht ausgeführt wird, blockiert das System den Zugriff für alle Benutzer.
$scopes = @(
"User.ReadWrite.All"
"Group.ReadWrite.All"
"GroupMember.ReadWrite.All"
"Directory.ReadWrite.All"
"AccessReview.Read.All"
"AccessReview.ReadWrite.All"
"AccessReview.ReadWrite.Membership"
)
Connect-MgGraph -Scopes $scopes
$body = @{
"displayName" = "Sales and Marketing Access Review"
"startDateTime" = "2021-12-01T09:00:00.000Z"
"endDateTime" = "2025-12-01T09:00:00.000Z"
"reviewerType" = "delegated"
"description" = "Sales and Marketing Access Review - Executed
Monthly"
"businessFlowTemplateId" = "6e4f3d20-c5c3-407f-9695-8460952bcc68"
"createdBy" = @{
"id" = "8d32fa65-361a-4aef-9716-60b44082eaab"
"displayName" = "Microsoft Admin"
"userPrincipalName" = [email protected]
"mail" = [email protected]
} "settings" = @{
"mailNotificationsEnabled" = "true"
"remindersEnabled" = "true"
"justificationRequiredOnApproval" = "true"
"autoReviewEnabled" = "true"
"activityDurationInDays" = 30
"autoApplyReviewResultsEnabled" = "true"
"accessRecommendationsEnabled" = "true"
"recurrenceSettings" = @{
"recurrenceType" = "monthly"
"recurrenceEndType" = "occurrences" "durationInDays" = 7
"recurrenceCount" = 30
} "autoReviewSettings" = @{
"notReviewedResult" = "Deny"
}
}
"reviewedEntity" = @{
"id" = "0c83236a-7484-4128-b43c-f7f5011a581b"
"displayName" = "Sales und Marketing"
}
}
Invoke-MgGraphRequest
-Method POST
-Uri https://graph.microsoft.com/beta/accessReviews
-Body $body
Es gibt viele weitere Bereiche, in denen PowerShell und Graph für Microsoft-365-Gruppen- und Teams-Governance sinnvoll sind: Teams, Funktionsverwaltung sowie Sicherheits- und Compliance-Komponenten wie Auditing und Reporting, Suche nach Compliance-Inhalten, E-Discovery und Legal Hold. Mit PowerShell und Graph zusammen entwickeln Sie für all diese Aufgabe wiederholbare Skripte, die Ihnen viel Arbeit abnehmen.