For the complete documentation index, see llms.txt. This page is also available as Markdown.

Synchronisation planifiée des propriétaires de Shared Channel

S'assurer que les membres d'un Security Group sont propriétaires des Teams mappées et de leurs Shared Channels.

Description

Les canaux partagés Teams n'héritent pas de la propriété de leur équipe parente. Ce runbook planifié comble cette lacune : pour chaque équipe nommée dans un mappage, il garantit que les membres d'un groupe de sécurité mappé sont propriétaires de l'équipe et de chaque canal partagé hébergé par l'équipe. Le mappage du nom d'équipe vers le groupe de propriétaires est maintenu de manière centralisée comme paramètre d'organisation RealmJoin. Le runbook est uniquement en ajout - les propriétaires et membres existants ne sont jamais supprimés - de sorte que les canaux partagés nouvellement créés sont simplement pris en compte lors de la prochaine exécution. Il peut éventuellement envoyer un rapport par e-mail et/ou téléverser les fichiers du rapport sous forme de lien de téléchargement. Le paramètre ReportFileFormat contrôle quels formats de fichier de rapport sont générés et remis (CSV uniquement, CSV et XLSX, ou XLSX uniquement). Lorsque les pièces jointes CSV dépassent la limite de taille des e-mails et que "CSV & XLSX" est sélectionné, l'e-mail bascule vers le classeur Excel seul. Voir la documentation jointe pour les règles de mappage et la configuration.

Fonctionnement

À chaque exécution, le runbook :

  1. Lit le mappage du nom d'équipe vers le groupe de propriétaires à partir du paramètre d'organisation SharedChannelOwners.Mapping.

  2. Pour chaque entrée, recherche l'équipe par son nom d'affichage exact.

  3. Développe le groupe de propriétaires de cette entrée en ses utilisateur membres transitifs (les invités sont ignorés - ils ne peuvent pas appartenir à un canal partagé).

  4. S'assure que ces utilisateurs sont propriétaires de l'équipe et de chaque canal partagé hébergé de l'équipe.

Le runbook est uniquement en ajout : il ne rétrograde ni ne supprime jamais les propriétaires ou membres existants. Les canaux partagés nouvellement créés sont donc pris en compte automatiquement lors de la prochaine exécution planifiée, sans perturber ce qui est déjà en place.

Configuration du mappage

Le mappage est stocké de manière centralisée dans les paramètres d'organisation RealmJoin (Runbook Customization → ParamètresSharedChannelOwners.Mapping) { TeamName, OwnerGroupId } objets, où TeamName est le nom d'affichage exact de l'équipe (voir la Remarques section pour un exemple prêt à l'emploi). Le paramètre caché TeamOwnerGroupMapping est injecté à partir de ce paramètre ; le runbook l'accepte soit comme tableau structuré (forme de sous-paramètre recommandée), soit comme chaîne JSON, et normalise les deux.

Correspondance des équipes

Chaque entrée de mappage cible une équipe explicitement nommée :

  • Une équipe est mise en correspondance par son nom d'affichage exact (insensible à la casse, conformément à Microsoft Graph ; les espaces environnants dans le nom configuré sont ignorés). Seule cette équipe est traitée - il n'y a aucun comportement de préfixe ou de caractère générique, donc nommer une entrée EXT Service A n'affecte jamais EXT Service A Backup ou similaire.

  • Les noms d'affichage ne sont pas garantis uniques dans Entra ID. Si plusieurs équipes partagent le nom configuré, le groupe de propriétaires est appliqué à toutes d'entre elles. Si aucune équipe ne correspond, l'entrée est signalée comme introuvable et ignorée.

Sélection des équipes

Pour chaque TeamName configuré, le runbook exécute une requête Graph displayName eq '...' et ne conserve que les groupes Microsoft 365 provisionnés en tant que équipe.

Ce qui est modifié

  • Équipe (facultatif, IncludeTeamOwners, activé par défaut) : les utilisateurs du groupe de propriétaires sont ajoutés comme propriétaires et membres du groupe parent Microsoft 365. L'appartenance à l'équipe est aussi la condition technique préalable pour devenir propriétaire d'un canal partagé, donc cette étape active l'étape du canal.

  • Canaux partagés : pour chaque canal partagé hébergé (membershipType eq 'shared'), chaque utilisateur du groupe de propriétaires est garanti comme propriétaire - ajouté directement s'il est absent, ou promu s'il est déjà membre. Si l'ajout direct en tant que propriétaire est rejeté (par ex. retard de réplication de l'appartenance), le runbook revient à ajouter d'abord l'utilisateur en tant que membre, puis à le promouvoir.

Exécution à blanc

Définissez WhatIfMode pour consigner ce qui changerait sans rien écrire. Dans ce mode, le runbook affiche d'emblée les équipes qu'il traiterait (avec leur groupe de propriétaires) ainsi que les noms d'équipe configurés qui n'ont pas été trouvés.

Rapports (facultatif, les deux désactivés par défaut)

  • SendEmailReport envoie un e-mail aux couleurs de RealmJoin (via Send-RjReportEmail) avec les statistiques d'exécution et deux pièces jointes CSV : un résumé par équipe et une liste détaillée par changement. L'expéditeur est pris à partir du RJReport.EmailSender paramètre.

  • CreateDownloadLink téléverse les mêmes CSV vers un Storage Account et renvoie des liens de téléchargement SAS à durée limitée (également intégrés dans l'e-mail lorsque les deux options sont activées). Le Storage Account cible est pris à partir du RJReport.StorageAccount.* paramètres.

Le téléversement vers le stockage s'authentifie avec l'identité managée du compte Automation ; cette identité a besoin du Contributeur aux données Blob de stockage rôle RBAC sur le Storage Account cible (il s'agit d'une attribution Azure RBAC, et non d'une autorisation d'application Graph).

Planification

Conçu pour s'exécuter sans surveillance selon une planification. Comme la configuration est centralisée dans les paramètres d'organisation et que le runbook est uniquement en ajout et idempotent, une seule planification récurrente maintient toutes les équipes mappées et leurs canaux partagés synchronisés au fil des arrivées et des départs de personnes et de canaux.

Emplacement

Organisation → Général → Synchroniser les propriétaires de Shared Channel (planifié)

Nom complet du runbook

rjgit-org_general_sync-shared-channel-owners_scheduled

Autorisations

Autorisations d'application

  • Type: Microsoft Graph

    • Group.ReadWrite.All

    • GroupMember.ReadWrite.All

    • Channel.ReadBasic.All

    • ChannelMember.ReadWrite.All

    • Mail.Send

Paramètres

TeamOwnerGroupMapping

Mappage d'un nom d'affichage exact d'équipe vers l'identifiant d'objet d'un groupe de sécurité de propriétaires, par ex. [{ "TeamName": "EXT Service A", "OwnerGroupId": "00000000-0000-0000-0000-000000000000" }]. Paramètre masqué, lié au paramètre d'organisation "SharedChannelOwners.Mapping". Le portail RealmJoin injecte cette valeur ; le runbook l'accepte soit comme objet/tableau désérialisé (sous-paramètres structurés), soit comme chaîne JSON, et normalise les deux.

Propriété
Valeur

Obligatoire

faux

Valeur par défaut

[]

Type

Objet

IncludeTeamOwners

Lorsque activé (par défaut), les membres du groupe de propriétaires sont également garantis comme propriétaires et membres de l'équipe parente elle-même (propriétaires/membres du groupe Microsoft 365). L'appartenance à l'équipe est aussi la condition préalable à la propriété d'un canal.

Propriété
Valeur

Obligatoire

faux

Valeur par défaut

Vrai

Type

Booléen

WhatIfMode

Lorsque activé, le runbook se contente de consigner les changements qu'il effectuerait, sans rien écrire.

Propriété
Valeur

Obligatoire

faux

Valeur par défaut

Faux

Type

Booléen

SendEmailReport

Lorsque activé, un rapport par e-mail aux couleurs de RealmJoin est envoyé via Send-RjReportEmail après l'exécution. Le corps contient les statistiques d'exécution ; les fichiers de rapport (résumé par équipe et détail par changement) sont joints dans le ou les formats de fichier de rapport sélectionnés.

Propriété
Valeur

Obligatoire

faux

Valeur par défaut

Faux

Type

Booléen

EmailTo

Adresse(s) e-mail des destinataires du rapport (séparées par des virgules). Utilisé uniquement lorsque SendEmailReport est activé.

Propriété
Valeur

Obligatoire

faux

Valeur par défaut

Type

Chaîne

EmailFrom

Boîte aux lettres expéditrice du rapport. Liée au paramètre d'organisation "RJReport.EmailSender".

Propriété
Valeur

Obligatoire

faux

Valeur par défaut

Type

Chaîne

ReportFileFormat

Contrôle quels formats de fichiers de rapport sont générés et livrés : « CSV uniquement », « CSV et XLSX » (par défaut) ou « XLSX uniquement ».

Propriété
Valeur

Obligatoire

faux

Valeur par défaut

CSV et XLSX

Type

Chaîne

Lorsque activé, le ou les fichiers de rapport sont téléversés vers un Storage Account et des liens de téléchargement à durée limitée sont renvoyés (et inclus dans le rapport par e-mail si cette option est également activée). Désactivé par défaut.

Propriété
Valeur

Obligatoire

faux

Valeur par défaut

Faux

Type

Booléen

ContainerName

Conteneur de stockage utilisé pour le téléversement. Configuré par runbook (et non par un paramètre RJReport global).

Propriété
Valeur

Obligatoire

faux

Valeur par défaut

shared-channel-owners

Type

Chaîne

ResourceGroupName

Groupe de ressources qui contient le Storage Account. Lié à "RJReport.StorageAccount.ResourceGroup".

Propriété
Valeur

Obligatoire

faux

Valeur par défaut

Type

Chaîne

StorageAccountName

Storage Account utilisé pour le téléversement. Lié à "RJReport.StorageAccount.StorageAccountName".

Propriété
Valeur

Obligatoire

faux

Valeur par défaut

Type

Chaîne

LinkExpiryDays

Nombre de jours avant l'expiration du lien de téléchargement généré. Lié à "RJReport.StorageAccount.LinkExpiryDays".

Propriété
Valeur

Obligatoire

faux

Valeur par défaut

6

Type

Int32

Mis à jour

Ce contenu vous a-t-il été utile ?