Shared Channel-Besitzer synchronisieren – geplant
Stellen Sie sicher, dass Mitglieder einer Security Group Besitzer der zugeordneten Teams und ihrer Shared Channels sind.
Beschreibung
Teams Shared Channels erben nicht die Besitzverhältnisse von ihrem übergeordneten Team. Dieses geplante Runbook schließt diese Lücke: Für jedes in einer Zuordnung genannte Team stellt es sicher, dass die Mitglieder einer zugeordneten Security Group Besitzer des Teams und jedes vom Team gehosteten Shared Channel sind. Die Zuordnung von Teamname zu Besitzergruppe wird zentral als RealmJoin-Organisationseinstellung verwaltet. Das Runbook ist add-only – vorhandene Besitzer und Mitglieder werden nie entfernt – sodass neu erstellte Shared Channels beim nächsten Lauf einfach übernommen werden. Optional kann es einen Bericht per E-Mail senden und/oder die Berichtdateien als Downloadlink hochladen. Der Parameter ReportFileFormat steuert, welche Berichtsdateiformate erzeugt und bereitgestellt werden (nur CSV, CSV & XLSX oder nur XLSX). Wenn die CSV-Anhänge das Größenlimit für E-Mails überschreiten und „CSV & XLSX“ ausgewählt ist, fällt die E-Mail auf die reine Excel-Arbeitsmappe zurück. Weitere Informationen zu den Zuordnungsregeln und zur Konfiguration finden Sie in der begleitenden Dokumentation.
So funktioniert es
Bei jedem Lauf führt das Runbook Folgendes aus:
Liest die Zuordnung von Teamnamen zu Besitzergruppen aus der Organisationseinstellung
SharedChannelOwners.Mapping.Für jeden Eintrag sucht es das Team anhand seines exakten Anzeigenamens.
Erweitert die Besitzergruppe dieses Eintrags auf ihre transitive Benutzer Mitglieder (Gäste werden übersprungen – sie können nicht zu einem Shared Channel gehören).
Stellt sicher, dass diese Benutzer Besitzer des Teams und jedes gehosteten Shared Channel des Teams sind.
Das Runbook ist add-only: es stuft vorhandene Besitzer oder Mitglieder nie herab und entfernt sie nie. Neu erstellte Shared Channels werden daher beim nächsten geplanten Lauf automatisch übernommen, ohne bereits Vorhandenes zu beeinträchtigen.
Zuordnungskonfiguration
Die Zuordnung wird zentral in den RealmJoin-Organisationseinstellungen gespeichert (Runbook Customization → Einstellungen → SharedChannelOwners.Mapping) und wird daher einmal gepflegt und von jedem Zeitplan gemeinsam genutzt. Es handelt sich um eine Liste von { TeamName, OwnerGroupId } -Objekten, wobei TeamName der exakte Anzeigename des Teams (siehe den Hinweis -Abschnitt für ein sofort verwendbares Beispiel). Der versteckte TeamOwnerGroupMapping -Parameter wird aus dieser Einstellung injiziert; das Runbook akzeptiert ihn entweder als strukturiertes Array (empfohlene Untereinstellungsform) oder als JSON-String und normalisiert beides.
Teamzuordnung
Jeder Zuordnungseintrag zielt auf ein ausdrücklich benanntes Team ab:
Ein Team wird anhand seines exakten Anzeigenamens (Groß-/Kleinschreibung wird ignoriert, konsistent mit Microsoft Graph; führende und nachfolgende Leerzeichen im konfigurierten Namen werden ignoriert). Es wird nur dieses Team verarbeitet – es gibt kein Präfix- oder Platzhalterverhalten, daher wirkt sich ein Eintrag wie
EXT Service Anie aufEXT Service A Backupoder Ähnliches aus.Anzeigenamen sind in Entra ID nicht garantiert eindeutig. Wenn mehrere Teams denselben konfigurierten Namen haben, wird die Besitzergruppe auf alle von ihnen angewendet. Wenn kein Team übereinstimmt, wird der Eintrag als nicht gefunden übersprungen.
Teamauswahl
Für jede konfigurierte TeamName führt das Runbook eine Graph displayName eq '...' -Abfrage aus und behält nur Microsoft 365-Gruppen bei, die als Team.
Was geändert wird
Team (optional,
IncludeTeamOwners, Standard ein): die Benutzer der Besitzergruppe werden als Besitzer und Mitglieder der übergeordneten M365-Gruppe hinzugefügt. Die Teammitgliedschaft ist auch die technische Voraussetzung, um Besitzer eines Shared Channel zu werden, daher ermöglicht dieser Schritt den Kanalschritt.Shared Channels: für jeden gehosteten Shared Channel (
membershipType eq 'shared'), wird sichergestellt, dass jeder Benutzer der Besitzergruppe Kanal Besitzer ist – bei Fehlen direkt hinzugefügt oder bei bereits bestehender Mitgliedschaft hochgestuft. Wird das direkte Hinzufügen als Besitzer abgelehnt (z. B. aufgrund von Verzögerungen bei der Replikation der Mitgliedschaft), fällt das Runbook darauf zurück, den Benutzer zunächst als Mitglied hinzuzufügen und ihn anschließend hochzustufen.
Trockenlauf
Setzen Sie WhatIfMode auf, um zu protokollieren, was sich ändern würde, ohne etwas zu schreiben. In diesem Modus gibt das Runbook im Voraus die Teams aus, die es verarbeiten würde (zusammen mit ihrer Besitzergruppe), sowie alle konfigurierten Teamnamen, die nicht gefunden wurden.
Berichterstellung (optional, beide standardmäßig aus)
SendEmailReportsendet eine E-Mail im RealmJoin-Branding (überSend-RjReportEmail) mit Laufstatistiken und zwei CSV-Anhängen: einer Zusammenfassung pro Team und einer Detailliste pro Änderung. Der Absender wird aus derRJReport.EmailSenderEinstellungCreateDownloadLinklädt dieselben CSV-Dateien in ein Storage Account hoch und gibt zeitlich begrenzte SAS-Downloadlinks zurück (die ebenfalls in die E-Mail eingebettet werden, wenn beide Optionen aktiviert sind). Das Ziel-Storage Account wird aus denRJReport.StorageAccount.*-Einstellungen übernommen.
Der Upload in den Speicher authentifiziert sich mit der verwalteten Identität des Automation-Kontos; diese Identität benötigt die Storage Blob Data Contributor -RBAC-Rolle im Ziel-Storage Account (dies ist eine Azure-RBAC-Zuweisung, keine Graph-Anwendungsberechtigung).
Zeitplanung
Konzipiert für den unbeaufsichtigten Betrieb nach Zeitplan. Da die Konfiguration zentral in den Organisationseinstellungen liegt und das Runbook add-only und idempotent ist, hält ein einzelner wiederkehrender Zeitplan alle zugeordneten Teams und ihre Shared Channels synchron, während Personen und Kanäle kommen und gehen.
Ort
Organization → General → Sync Shared Channel Owners (Scheduled)
Vollständiger Runbook-Name
rjgit-org_general_sync-shared-channel-owners_scheduled
Berechtigungen
Anwendungsberechtigungen
Typ: Microsoft Graph
Group.ReadWrite.All
GroupMember.ReadWrite.All
Channel.ReadBasic.All
ChannelMember.ReadWrite.All
Mail.Send
Parameter
TeamOwnerGroupMapping
Zuordnung eines exakten Team-Anzeigenamens zu der Objekt-ID einer Besitzer-Security Group, z. B. [{ "TeamName": "EXT Service A", "OwnerGroupId": "00000000-0000-0000-0000-000000000000" }]. Versteckter Parameter, gebunden an die Organisationseinstellung "SharedChannelOwners.Mapping". Das RealmJoin-Portal injiziert diesen Wert; das Runbook akzeptiert ihn entweder als deserialisiertes Objekt/Array (strukturierte Untereinstellungen) oder als JSON-String und normalisiert beides.
Erforderlich
false
Standardwert
[]
Typ
Objekt
IncludeTeamOwners
Wenn aktiviert (Standard), werden die Mitglieder der Besitzergruppe ebenfalls als Besitzer und Mitglieder des übergeordneten Teams selbst sichergestellt (M365-Gruppenbesitzer/-mitglieder). Die Teammitgliedschaft ist auch die Voraussetzung für Kanalbesitz.
Erforderlich
false
Standardwert
Wahr
Typ
Boolesch
WhatIfMode
Wenn aktiviert, protokolliert das Runbook nur die Änderungen, die es vornehmen würde, ohne etwas zu schreiben.
Erforderlich
false
Standardwert
Falsch
Typ
Boolesch
SendEmailReport
Wenn aktiviert, wird nach dem Lauf ein E-Mail-Bericht im RealmJoin-Branding über Send-RjReportEmail gesendet. Der Text enthält Laufstatistiken; die Berichtdateien (Zusammenfassung pro Team und Detail pro Änderung) werden im ausgewählten Berichtdateiformat angehängt.
Erforderlich
false
Standardwert
Falsch
Typ
Boolesch
EmailTo
E-Mail-Adresse(n) der Empfänger für den Bericht (durch Kommas getrennt). Wird nur verwendet, wenn SendEmailReport aktiviert ist.
Erforderlich
false
Standardwert
Typ
Zeichenfolge
EmailFrom
Absenderpostfach für den Bericht. Gebunden an die Organisationseinstellung "RJReport.EmailSender".
Erforderlich
false
Standardwert
Typ
Zeichenfolge
ReportFileFormat
Steuert, welche Berichtsdateiformate generiert und bereitgestellt werden: "Nur CSV", "CSV & XLSX" (Standard) oder "Nur XLSX".
Erforderlich
false
Standardwert
CSV & XLSX
Typ
Zeichenfolge
CreateDownloadLink
Wenn aktiviert, werden die Berichtdatei(en) in ein Storage Account hochgeladen und zeitlich begrenzte Downloadlinks zurückgegeben (und in den E-Mail-Bericht aufgenommen, wenn auch dieser aktiviert ist). Standardmäßig aus.
Erforderlich
false
Standardwert
Falsch
Typ
Boolesch
ContainerName
Speichercontainer, der für den Upload verwendet wird. Pro Runbook konfiguriert (keine globale RJReport-Einstellung).
Erforderlich
false
Standardwert
shared-channel-owners
Typ
Zeichenfolge
ResourceGroupName
Ressourcengruppe, die das Storage Account enthält. Gebunden an "RJReport.StorageAccount.ResourceGroup".
Erforderlich
false
Standardwert
Typ
Zeichenfolge
StorageAccountName
Für den Upload verwendetes Storage Account. Gebunden an "RJReport.StorageAccount.StorageAccountName".
Erforderlich
false
Standardwert
Typ
Zeichenfolge
LinkExpiryDays
Tage bis zum Ablauf des generierten Downloadlinks. Gebunden an "RJReport.StorageAccount.LinkExpiryDays".
Erforderlich
false
Standardwert
6
Typ
Int32
Zuletzt aktualisiert
War das hilfreich?