共有チャネル所有者の同期(スケジュール済み)

Security Group のメンバーが、マッピングされた Teams とその共有チャネルの所有者であることを確認します。

説明

Teams の Shared Channel は親のチームから所有権を継承しません。このスケジュール実行される runbook はそのギャップを埋めます。マッピングで指定された各チームについて、対応付けられた Security Group のメンバーがそのチームと、そのチームがホストするすべての Shared Channel の所有者であることを保証します。チーム名から所有者グループへのマッピングは、RealmJoin の org 設定として中央で管理されます。runbook は add-only です。既存の所有者やメンバーは削除されないため、新しく作成された Shared Channel は次回の実行で自動的に取り込まれます。必要に応じて、レポートをメール送信したり、CSV 結果をダウンロード リンクとしてアップロードしたりできます。マッピング ルールと構成については、付属のドキュメントを参照してください。

仕組み

各実行で runbook は次を行います:

  1. org 設定からチーム名→所有者グループのマッピングを読み取ります SharedChannelOwners.Mapping.

  2. 各エントリについて、そのチームを 完全一致の表示名.

  3. で検索し、そのエントリの所有者グループを推移的な ユーザー メンバーに展開します(ゲストはスキップされます。ゲストは Shared Channel に所属できません)。

  4. それらのユーザーが、そのチームおよびチームがホストするすべての ホストされている Shared Channel の所有者であることを保証します。

runbook は add-onlyです。既存の所有者やメンバーを降格または削除することは決してありません。そのため、新しく作成された Shared Channel は、既に設定済みの内容に影響を与えることなく、次回の予定実行で自動的に取り込まれます。

マッピング構成

マッピングは RealmJoin の org 設定(Runbook Customization → 設定SharedChannelOwners.Mapping)に中央で保存されるため、一度だけ管理され、すべてのスケジュールで共有されます。これは { TeamName, OwnerGroupId } オブジェクトの一覧であり、 TeamName正確なチーム表示名 (以下の 注記 セクションにすぐ使える例があります)。隠し TeamOwnerGroupMapping パラメーターはこの設定から注入されます。runbook は、構造化された配列(推奨のサブ設定形式)としても JSON 文字列としても受け付け、両方を正規化します。

チームの一致

各マッピング エントリは、明示的に名前指定された 1 つのチームを対象にします:

  • チームはその 完全一致の表示名 (Microsoft Graph と整合するように大文字小文字を区別せず、構成された名前の前後の空白は無視されます)。対象となるのはそのチームのみであり、プレフィックスやワイルドカードの動作はないため、エントリに EXT Service A と指定しても EXT Service A Backup などには影響しません。

  • 表示名は Entra ID で一意であることが保証されていません。複数のチームが構成された名前を共有している場合、所有者グループは すべて に適用されます。チームが一致しない場合、そのエントリは 見つかりません として報告され、スキップされます。

チーム選択

構成された各 TeamName について、runbook は Graph の displayName eq '...' 検索を実行し、Team としてプロビジョニングされた Microsoft 365 グループだけを残します Team.

変更される内容

  • Team(任意、 IncludeTeamOwners、既定ではオン): 所有者グループのユーザーは、親 M365 グループの所有者およびメンバーとしても追加されます。Team のメンバーシップは Shared Channel の所有者になるための技術的前提でもあるため、この手順でチャネル手順が有効になります。

  • Shared Channel: ホストされている各 Shared Channel(membershipType eq 'shared')、各所有者グループのユーザーがチャネルの 所有者 であることを保証します。存在しなければ直接追加し、既にメンバーであれば昇格します。直接の所有者追加が拒否された場合(例: メンバーシップのレプリケーション遅延)、runbook はまずユーザーをメンバーとして追加し、その後で昇格するようにフォールバックします。

ドライラン

設定 WhatIfMode を設定すると、何も書き込まずに変更内容をログに出力します。このモードでは runbook は、最初に処理対象となるチーム(所有者グループ付き)と、見つからなかった構成済みチーム名を出力します。

レポート(任意、どちらも既定ではオフ)

  • SendEmailReport を有効にすると、RealmJoin ブランドのメール( Send-RjReportEmail経由)を送信し、実行統計と 2 つの CSV 添付ファイル(チームごとの要約と変更ごとの詳細一覧)を含めます。送信者は RJReport.EmailSender 設定から取得されます。

  • CreateDownloadLink を有効にすると、同じ CSV を Storage Account にアップロードし、期限付きの SAS ダウンロード リンクを返します(両方のオプションが有効な場合はメールにも埋め込まれます)。対象の Storage Account は RJReport.StorageAccount.* 設定から取得されます。

ストレージへのアップロードは Automation アカウントのマネージド ID で認証されます。この ID には対象の Storage Account に対する Storage Blob Data Contributor RBAC ロールが必要です(これは Azure RBAC の割り当てであり、Graph アプリケーション権限ではありません)。

スケジューリング

構成が org 設定に一元化され、runbook が add-only かつ冪等であるため、手動介入なしで定期実行するよう設計されています。単一の定期スケジュールにより、ユーザーやチャネルの増減に応じて、マッピングされたすべてのチームとその Shared Channel を同期状態に保てます。

場所

Organization → General → Shared Channel 所有者の同期 (Scheduled)

完全な Runbook 名

rjgit-org_general_sync-sharedchannel-owners_scheduled

権限

アプリケーションの権限

  • 種類: Microsoft Graph

    • Group.ReadWrite.All

    • GroupMember.ReadWrite.All

    • Channel.ReadBasic.All

    • ChannelMember.ReadWrite.All

    • Mail.Send

パラメーター

TeamOwnerGroupMapping

正確なチーム表示名から所有者 Security Group オブジェクト ID へのマッピング。例: [{ "TeamName": "EXT Service A", "OwnerGroupId": "00000000-0000-0000-0000-000000000000" }]。org Setting "SharedChannelOwners.Mapping" にバインドされた隠しパラメーターです。RealmJoin ポータルがその値を注入します。runbook は、デシリアライズ済みのオブジェクト/配列(構造化されたサブ設定)としても JSON 文字列としても受け付け、両方を正規化します。

プロパティ

必須

false

既定値

[]

種類

オブジェクト

IncludeTeamOwners

有効にすると(既定)、所有者グループのメンバーは親チーム自身の所有者およびメンバーとしても保証されます(M365 グループの所有者/メンバー)。Team のメンバーシップは、チャネル所有権の前提条件でもあります。

プロパティ

必須

false

既定値

True

種類

ブール値

WhatIfMode

有効にすると、runbook は変更する内容を何も書き込まずにログに出力するだけになります。

プロパティ

必須

false

既定値

False

種類

ブール値

SendEmailReport

有効にすると、実行後に Send-RjReportEmail 経由で RealmJoin ブランドのメール レポートが送信されます。本文には実行統計と 2 つの CSV 添付ファイル(チームごとの要約と変更ごとの詳細)が含まれます。

プロパティ

必須

false

既定値

False

種類

ブール値

EmailTo

レポートの受信者メール アドレス(カンマ区切り)。SendEmailReport が有効な場合にのみ使用されます。

プロパティ

必須

false

既定値

種類

文字列

EmailFrom

レポートの送信者メールボックス。org Setting "RJReport.EmailSender" にバインドされています。

プロパティ

必須

false

既定値

種類

文字列

有効にすると、CSV レポートが Storage Account にアップロードされ、期限付きダウンロード リンクが返されます(それが有効であればメール レポートにも含まれます)。既定ではオフ。

プロパティ

必須

false

既定値

False

種類

ブール値

ContainerName

アップロードに使用する Storage コンテナー。runbook ごとに構成されます(グローバルな RJReport 設定ではありません)。

プロパティ

必須

false

既定値

shared-channel-owners

種類

文字列

ResourceGroupName

Storage Account を含むリソース グループ。"RJReport.StorageAccount.ResourceGroup" にバインドされています。

プロパティ

必須

false

既定値

種類

文字列

StorageAccountName

アップロードに使用する Storage Account。"RJReport.StorageAccount.StorageAccountName" にバインドされています。

プロパティ

必須

false

既定値

種類

文字列

LinkExpiryDays

生成されたダウンロード リンクが期限切れになるまでの日数。"RJReport.StorageAccount.LinkExpiryDays" にバインドされています。

プロパティ

必須

false

既定値

6

種類

Int32

Runbook Reference の概要に戻る

最終更新

役に立ちましたか?