Synchronisation planifiée des propriétaires du Shared Channel
Faire des membres d'un groupe les propriétaires des équipes et des Shared Channel mappés
Description
Les canaux partagés n’héritent pas des propriétaires de leur équipe. Pour chaque équipe nommée dans le mappage, les membres du groupe de sécurité mappé deviennent propriétaires de l’équipe et de chaque canal partagé qu’elle héberge. Cela n’ajoute jamais rien, ne supprime jamais rien ; les nouveaux canaux partagés sont pris en compte lors de la prochaine exécution. Une exécution à blanc affiche les modifications sans les appliquer. Le rapport peut être envoyé par e-mail ou fourni sous forme de lien de téléchargement.
Fonctionnement
À chaque exécution, le runbook :
Lit le mappage du nom de l’équipe vers le groupe de propriétaires à partir du paramètre d’organisation
SharedChannelOwners.Mapping.Pour chaque entrée, recherche l’équipe par son nom d’affichage exact.
Développe le groupe de propriétaires de cette entrée jusqu’à ses utilisateurs membres (les invités sont ignorés — ils ne peuvent pas appartenir à un canal partagé).
S’assure que ces utilisateurs sont propriétaires de l’équipe et de chaque hébergé canal partagé de l’équipe.
Le runbook est en ajout uniquement: 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 centralisé dans les paramètres d’organisation de RealmJoin (Personnalisation du runbook → Paramètres → SharedChannelOwners.Mapping) ; il est maintenu une seule fois et partagé par chaque planification. Il s’agit d’une liste d’ { TeamName, OwnerGroupId } objets, où TeamName est le nom d’affichage exact de l’équipe. Le paramètre masqué TeamOwnerGroupMapping est injecté à partir de ce paramètre ; le runbook l’accepte soit sous forme de tableau structuré (forme recommandée de sous-paramètre), soit sous forme de chaîne JSON, et normalise les deux.
Exemple prêt à l’emploi pour les paramètres d’organisation :
{
"Settings": {
"SharedChannelOwners": {
"Mapping": [
{ "TeamName": "EXT Service A", "OwnerGroupId": "11111111-1111-1111-1111-111111111111" },
{ "TeamName": "EXT Service B", "OwnerGroupId": "22222222-2222-2222-2222-222222222222" }
]
}
}
}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 ni de caractère générique, donc nommer une entrée
EXT Service An’affecte jamaisEXT Service A Backupou 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é à tous chacune d’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 '...' de recherche et ne conserve que les groupes Microsoft 365 provisionnés en tant qu’ équipe.
Ce qui est modifié
équipe (facultatif,
IncludeTeamOwners, activé par défaut) : les utilisateurs du groupe de propriétaires sont ajoutés en tant que propriétaires et membres du groupe M365 parent. L’appartenance à l’équipe est également la condition technique requise pour devenir propriétaire d’un canal partagé, cette étape active donc l’étape des canaux.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 comme propriétaire est refusé (p. ex. en raison d’un délai de réplication de l’appartenance), le runbook commence par ajouter l’utilisateur comme membre, puis le promeut.
Exécution à blanc
Sélectionnez Dry run ? pour consigner ce qui changerait sans rien écrire. Chaque exécution affiche d’emblée les équipes qu’elle traitera (avec leur groupe de propriétaires) ainsi que les noms d’équipe configurés qui n’ont pas été trouvés ; lors d’une exécution à blanc, les modifications sont listées comme modifications prévues.
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 en ajout uniquement 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.
Livraison du rapport
Chaque exécution écrit ses résultats dans l’onglet Output Data du portail RealmJoin : un résumé, les modifications effectuées (ou prévues lors d’une exécution à blanc), les équipes et utilisateurs ignorés avec la raison (équipe introuvable, groupe de propriétaires vide, utilisateurs invités, modifications échouées) ainsi que les affectations de propriétaires déjà en place. Chaque tableau peut y être exporté vers Excel.
Les fichiers du rapport ne sont générés que lorsqu’une méthode de livraison est sélectionnée via l’ Livraison du rapport option (e-mail et/ou lien de téléchargement) : un résumé par équipe et une liste détaillée par modification, sous forme de fichiers CSV et/ou d’un classeur Excel. Avec Données de sortie uniquement sélectionné, les résultats sont lus directement dans l’onglet Output Data. La remise par e-mail et la génération de lien de téléchargement sont indépendantes et peuvent être combinées ; lorsque les deux sont sélectionnées, les liens de téléchargement sont également intégrés dans l’e-mail.
Pour le lien de téléchargement, les fichiers du rapport sont téléversés vers le Storage Account Azure configuré dans les RJReport.StorageAccount.* paramètres du Tenant, et des liens de téléchargement SAS à durée limitée sont renvoyés. Le téléversement vers le stockage s’authentifie avec l’identité managée du compte Automation ; cette identité a besoin du Storage Account Contributor rôle RBAC sur le Storage Account cible (il s’agit d’une attribution Azure RBAC, et non d’une autorisation d’application Graph).
Les planifications enregistrées avec les libellés de remise précédents (par exemple option de rapport par e-mailOrganisation → Général → Sync Shared Channel Owners (Scheduled) Données de sortie uniquement ) conservent leur mode de remise. Lorsqu’une telle planification est ouverte pour modification, l’option affiche
Configuration de l’envoi d’e-mails
L’envoi du rapport par e-mail est facultatif et ne se produit que lorsque Envoyer aussi le rapport par e-mail ou Envoyer aussi par e-mail et lien de téléchargement bien que la remise enregistrée reste active ; sélectionnez à nouveau la remise avant d’enregistrer afin que la boîte de dialogue corresponde au comportement de la planification. Send-RjRbReportEmail) contient les statistiques d’exécution et les fichiers du rapport en pièces jointes. L’adresse de l’expéditeur est reprise de la RJReport.EmailSender paramètre du tenant.
Ce runbook envoie des e-mails à l’aide de l’API Microsoft Graph. Pour envoyer des e-mails via l’API Graph, vous devez configurer une adresse e-mail existante dans la personnalisation du runbook.
Voir la documentation des paramètres de rapport RealmJoin pour plus de détails sur tous les paramètres disponibles.
Identité visuelle des e-mails
L’e-mail du rapport prend en compte le paramètre facultatif RJReport.Branding.* des paramètres du tenant :
Image d’en-tête et de pied de page - URL HTTPS publiques, PNG/JPEG/GIF, 200 Ko max. chacune
Lien de pied de page - cible de l’image de pied de page
Couleur d’accentuation et du texte - valeurs hexadécimales à 6 chiffres, p. ex.
#0052cc
Lorsque ces paramètres ne sont pas configurés, les graphiques et couleurs par défaut de RealmJoin sont utilisés. Une image qui ne peut pas être téléchargée ou validée, ou une valeur de couleur non valide, n’empêche jamais l’e-mail du rapport — la valeur par défaut correspondante est utilisée à la place.
Instructions de configuration et exigences relatives aux images : Identité visuelle des e-mails.
Emplacement
Organisation → Général → Sync Shared Channel Owners (Scheduled)
Nom complet du runbook
rjgit-org_general_sync-shared-channel-owners_scheduled
Détails
Version
1.4.0
Modules requis
RealmJoin.RunbookHelper (>= 0.8.9) Microsoft.Graph.Authentication (>= 2.39.0) Az.Accounts (>= 5.5.2)
Planifiable
oui
Autorisations
Autorisations d’application
Type: Microsoft Graph
Channel.ReadBasic.All
Liste /teams/{id}/channels pour trouver les canaux partagés à traiter
ChannelMember.ReadWrite.All
Lit les membres du canal et ajoute des utilisateurs ou les promeut au rang de propriétaire de canal partagé
Group.ReadWrite.All
Liste les équipes, lit les noms du groupe de propriétaires et les propriétaires du groupe, et ajoute les propriétaires d’équipe manquants via /groups/{id}/owners/$ref
GroupMember.ReadWrite.All
Lit les membres transitifs du groupe de propriétaires et ajoute d’abord les utilisateurs en tant que membres de l’équipe
User.Read.All
Lit les propriétés des utilisateurs membres (UPN, userType) via transitiveMembers afin de filtrer les invités
Mail.Send (facultatif — fonctionnalité : rapport par e-mail)
Envoie l’e-mail de rapport de synchronisation via Send-RjRbReportEmail lorsque la remise par e-mail est sélectionnée
Organization.Read.All (facultatif — fonctionnalité : rapport par e-mail)
Lit le nom d’affichage du Tenant pour l’e-mail du rapport
Notes sur les autorisations
Azure Storage Account : rôle 'Storage Account Contributor' pour l’identité managée du compte Automation sur le Storage Account cible - le téléversement récupère les clés du compte via listKeys (uniquement requis pour les options de lien de téléchargement)
Paramètres
TeamOwnerGroupMapping
Liste des noms d’équipe avec le groupe de sécurité dont les membres deviennent propriétaires. Extrait du paramètre du Tenant SharedChannelOwners.Mapping.
Obligatoire
faux
Valeur par défaut
[]
Type
Objet
Masqué dans le portail
oui (prédéfini via la personnalisation du runbook)
IncludeTeamOwners
Fait également des membres du groupe des propriétaires et des membres de l’équipe elle-même, ce qui est nécessaire pour posséder ses canaux.
Obligatoire
faux
Valeur par défaut
Vrai
Type
Booléen
Nom d’affichage du portail
Les faire aussi devenir propriétaires de l’équipe ?
WhatIfMode
Consigne seulement ce qui changerait sans rien écrire.
Obligatoire
faux
Valeur par défaut
Faux
Type
Booléen
Nom d’affichage du portail
Dry run ?
SendEmailReport
Envoie le rapport à l’adresse e-mail du destinataire.
Obligatoire
faux
Valeur par défaut
Faux
Type
Booléen
Masqué dans le portail
oui (prédéfini via la personnalisation du runbook)
EmailTo
Envoyez le rapport à ces adresses. Séparez-en plusieurs par des virgules ; chaque destinataire reçoit un e-mail séparé.
Obligatoire
faux
Valeur par défaut
Type
Chaîne
Nom d’affichage du portail
Adresse(s) e-mail du destinataire
Masqué dans le portail
oui (prédéfini via la personnalisation du runbook)
EmailFrom
Adresse d’expédition de l’e-mail du rapport. Récupérée à partir du paramètre du tenant RJReport.EmailSender.
Obligatoire
faux
Valeur par défaut
Type
Chaîne
Masqué dans le portail
oui (prédéfini via la personnalisation du runbook)
BrandingHeaderImageUrl
Image d’en-tête de l’e-mail du rapport (URL HTTPS, PNG/JPEG/GIF, 200 Ko max.). Récupérée à partir du paramètre du tenant RJReport.Branding.HeaderImageUrl ; l’en-tête RealmJoin par défaut est utilisé si vide.
Obligatoire
faux
Valeur par défaut
Type
Chaîne
Masqué dans le portail
oui (prédéfini via la personnalisation du runbook)
BrandingFooterImageUrl
Image de pied de page de l’e-mail du rapport (URL HTTPS, PNG/JPEG/GIF, 200 Ko max.). Récupérée à partir du paramètre du tenant RJReport.Branding.FooterImageUrl ; le pied de page RealmJoin par défaut est utilisé si vide.
Obligatoire
faux
Valeur par défaut
Type
Chaîne
Masqué dans le portail
oui (prédéfini via la personnalisation du runbook)
BrandingFooterLink
Lien derrière l’image de pied de page de l’e-mail du rapport. Récupéré à partir du paramètre du tenant RJReport.Branding.FooterLink ; realmjoin.com est utilisé si vide.
Obligatoire
faux
Valeur par défaut
Type
Chaîne
Masqué dans le portail
oui (prédéfini via la personnalisation du runbook)
BrandingAccentColor
Couleur d’accentuation de l’e-mail du rapport sous forme de valeur hexadécimale à 6 chiffres. Récupérée à partir du paramètre du tenant RJReport.Branding.AccentColor ; la valeur par défaut RealmJoin est utilisée si vide ou invalide.
Obligatoire
faux
Valeur par défaut
Type
Chaîne
Masqué dans le portail
oui (prédéfini via la personnalisation du runbook)
BrandingTextColor
Couleur du texte de l’e-mail du rapport sous forme de valeur hexadécimale à 6 chiffres. Récupérée à partir du paramètre du tenant RJReport.Branding.TextColor ; la valeur par défaut RealmJoin est utilisée si vide ou invalide.
Obligatoire
faux
Valeur par défaut
Type
Chaîne
Masqué dans le portail
oui (prédéfini via la personnalisation du runbook)
ReportFileFormat
Remettez le rapport au format CSV, sous forme de classeur Excel, ou les deux.
Obligatoire
faux
Valeur par défaut
CSV et XLSX
Type
Chaîne
Nom d’affichage du portail
Format du fichier de rapport
Masqué dans le portail
oui (prédéfini via la personnalisation du runbook)
Options du portail
CSV et XLSX
CSV et XLSX
CSV uniquement
CSV uniquement
XLSX uniquement
XLSX uniquement
CreateDownloadLink
Télécharge aussi le rapport et renvoie un lien de téléchargement qui expire après quelques jours.
Obligatoire
faux
Valeur par défaut
Faux
Type
Booléen
Masqué dans le portail
oui (prédéfini via la personnalisation du runbook)
Nom du conteneur
Conteneur de stockage dans lequel les fichiers du rapport sont téléversés. À définir pour chaque runbook.
Obligatoire
faux
Valeur par défaut
shared-channel-owners
Type
Chaîne
Masqué dans le portail
oui (prédéfini via la personnalisation du runbook)
Nom du groupe de ressources
Groupe de ressources du Storage Account pour les téléversements de rapports. Pris à partir du paramètre Tenant RJReport.StorageAccount.ResourceGroup.
Obligatoire
faux
Valeur par défaut
Type
Chaîne
Masqué dans le portail
oui (prédéfini via la personnalisation du runbook)
Nom du Storage Account
Storage Account pour les téléversements de rapports. Pris à partir du paramètre Tenant RJReport.StorageAccount.StorageAccountName.
Obligatoire
faux
Valeur par défaut
Type
Chaîne
Masqué dans le portail
oui (prédéfini via la personnalisation du runbook)
LinkExpiryDays
Nombre de jours pendant lesquels un lien de téléchargement reste valide. Pris à partir du paramètre Tenant RJReport.StorageAccount.LinkExpiryDays.
Obligatoire
faux
Valeur par défaut
6
Type
Int32
Masqué dans le portail
oui (prédéfini via la personnalisation du runbook)
Mis à jour
Ce contenu vous a-t-il été utile ?