AzureAD Microsoft 365

Teamsの古いチームを自動削除~Microsoft 365グループ有効期限をうまく活用する~

こんにちは。

約4か月ぶりの更新となりますが、本日の記事内容はタイトルにあります通り、Teamsの古いチームの削除について備忘録として投稿したいと思います。
目的は、Microsoft 365グループ有効期限を使いたいがすべてのサービスで使われているMicrosoft365グループを対象にしたくないって場合にほんの少し支えになる記事かもしれません。

TeamsのチームとMicrosoft 365グループのおさらい

普段からTeamsを利用されている方はなんとなくご存じかと思われますが、Teamsでは個人と個人のチャット以外にも特定のメンバー間でメッセージ(チャット)を送信することができます。

この特定のユーザーの集まりの単位をチームと呼び、チームの中でさらにトピックやプロジェクトなど用途に応じてチャネルという集まりを作成することができます。

チームを作成すると、当然ながら所有ユーザーなどを制御する機能は必要となるため、必然的にMicrosoft 365グループも同時に作成されます。
なお、Microsoft 365グループ以外にもチームに格納したドキュメントはSharePointに格納される仕様のため、SharePointサイトやメールボックス等も併せて作成されます。

なのでチームが大量にできるということは、それだけ利用量に比例してSharePointの容量やMicrosoft 365グループが多く作成されるということになります。

古いチームの管理

上述で述べた通り、SharePointの容量枯渇防止や、適切なMicrosoft365グループ管理等様々な理由はありますが、使わなくなったチームは自動で削除したいというお客様は多くいらっしゃるのではないかと思います。

なので不要なチームが大量に残ることを避けたいために、利用者にはチームを自由に作成させないといった制御を検討されるケースがあります。実はこの制御方法についても制御対象はMicrosoft 365グループであり、Microsoft 365グループを作成できるユーザーをあらかじめ指定しておくことでチームを作成させないという制御が可能になります。

Microsoft 365 グループを作成できるユーザーを管理する

ビジネスでグループを作成できるユーザーを制限する必要がある場合は、Microsoft 365 グループの作成を特定の Microsoft 365 グループまたはセキュリティ グループのメンバーに制限できます。
ユーザーがビジネス標準に準拠していないチームまたはグループを作成することを懸念している場合は、ユーザーにトレーニング コースを完了するように要求してから、許可されたユーザーのグループに追加することを検討してください。
グループを作成できるユーザーを制限すると、次のようなアクセスをグループに依存するすべてのサービスに影響します。

ただし、本機能はAzureADPremiumライセンスが必要になりますし、Microsoft365グループは他サービスでも利用されているのでそれらサービスにも影響が出てしまいます。
具体的に言うと、以下サービスを利用している場合、同じようにMicrosoft365グループを作成制限がかかることで影響が発生する可能性があります。

  • Outlook
  • SharePoint
  • Yammer
  • Microsoft Teams
  • Microsoft Stream
  • Planner
  • Power BI (クラシック)
  • Web 用 Project / ロードマップ

上記はチームを作成できるユーザーを制限する話でしたが、せっかくこの素晴らしいコミュニケーション機能があるんだから、ユーザーに自由にチームを作ってもらって利活用してほしいといった場合は実装することはできません。そうなると、チームが知らず知らずのうちにどんどん作成されていってしまうということになります。そこで登場するのがMicrosoft365グループの有効期限です。

Microsoft 365グループの有効期限設定方法

Microsoft365グループの有効期限ポリシーはAzureADのポータルより設定ができます。本機能を利用する際はAzureADPremiumライセンスが必須となります。設定は簡単でUIベースで行うこともできるし、Powershellから実行することも可能です。

実際のUI画面ですが、2022/9時点の仕様からいうと、まず最小で設定できる期限は30日です。
30日以上の期限を設定することが必須となります。

次に対象グループの設定ですが「選択済み」という枠が設けられているので察しの通り、対象グループを指定することが可能です。ただし、現時点では500グループまでとなっているので、500グループをすでに超えているまたは超えそうだという場合は利用できません。

Microsoft 365グループ有効期限機能の懸念点と本題

本機能を利用する場合、以下懸念事項があるため、実装されている場合は注意が必要です。

Microsoft 365グループ全体適用となるため、Teams以外のサービス(SharePointやStream、Yammer、Plannner等)に影響が発生する可能性がある

仮に、意図的にMicrosoft 365グループを作ったとしても本機能が適用されてしまうため、SharePointのサイト権限付与のために手動で作ったMicrosoft 365グループも対象となってしまいます。

有効期限近くになれば更新アクションが必要

ユーザーのアクティビティがあるグループについては、有効期限が近付くと自動的に更新されます。なので以下アクションを行っている場合、知らない間、自動的に更新されていることになります。

  • SharePoint - ファイルを表示、編集、ダウンロード、移動、共有、またはアップロードします。 (SharePoint ページの表示は、自動更新のアクションとしてカウントされません。)
  • Outlook - グループへの参加または編集、グループからのグループ メッセージの読み取りまたは書き込み、およびメッセージの使用 (Outlook on the web)。
  • Teams - チーム チャネルにアクセスします。
  • Yammer - Yammer コミュニティ内の投稿や、Outlook の対話型メールを表示します。
  • Forms - フォームの表示、作成、編集、またはフォームへの応答の送信。

また、Teamsのチーム上でも更新が可能です。
対象のチームの[設定]メニューに赤枠のような表示があります。
サンプル画像はまだ有効期限が先なので更新ボタンが表示されていませんが、有効期限が近くなると表示されます。ここから手動で更新することも可能のようです。

では本題ですが、ユーザーのアクティビティとして更新条件が設定されていますが、このアクティビティで更新できない場合はどうすればよいか。例えば、AzureADに登録したSaaSアプリケーションのグループ割り当てやSharePointサイトのサイト権限を割り当てるために作成した単なるMicrosoft 365グループなどが該当します。

このようなアクティビティによる更新が行えないものについては手動による更新が必要となると考えています。

微力ではあるけど回避策(Powershellで期限を延ばす)

結論から言うと、以下コマンドを利用することで期限を延ばすことができそうです。

Invoke-MgRenewGroup

Renews a group's expiration. When a group is renewed, the group expiration is extended by the number of days defined in the policy.

以下URLに記載の通り、グループの有効期限は expirationDateTime属性のようなのでこのコマンドで属性の期限が更新されればよいということになります。

Microsoft 365 グループの有効期限日を取得する方法

Microsoft 365 グループの有効期限は、ユーザーが有効期限や最終更新日などのグループの詳細を表示できるアクセス パネルに加え、Microsoft Graph REST API ベータ版からも取得できます。 Microsoft Graph ベータ版では、グループ プロパティとして expirationDateTime が有効になりました。 これは GET 要求で取得できます。 詳細については、こちらの例を参照してください。

当初、別コマンドであるReset-AzureADMSLifeCycleGroupというコマンドで実施しようとしてたのですが、こちらはAzure AD for GraphのコマンドレットであることをMicrosoftサポート担当者様に助言をいただきました。Azure AD for Graphは今後廃止予定なので Microsoft Graph Powershell SDKによる今回のコマンドを使っていきます。

廃止の件はこちらにわかりやすい記事がありますのでご参考までに
Azure AD Graph / MSOnline PowerShell モジュール利用状況の調べ方

実際に実行してみました。
実行コマンド

Invoke-MgRenewGroup -GroupId <グループID>

実行結果

おまけ:Teams以外のMicrosoft 365グループを定期的に延長(期限更新)したい場合

あるお客様では、Teamsで使っているMicrosoft 365グループのみを有効期限ポリシー対象として活用していきたいというご要望があったりします。この時、対象を指定できるグループが500グループまでなのでそれ以上のグループ数があると利用ができません。

なのでこのコマンドをうまく活用すればTeamsのチームに対してのみ適用することができるんじゃないかと考えました。
一応スクリプトは動いたはずですが継続してテスト中です。問題なければ公開予定です。※12月予定。

もし、ご興味があったり上記スクリプトを使ってみたいという場合は是非、以下までご連絡お願いします。今後情報交換等できますと幸いです。

お問い合わせ

お仕事依頼やお問い合わせ/技術交流や趣味を通したご質問ありましたら、以下お問い合わせフォームからお気軽にご連絡ください。

-AzureAD, Microsoft 365