監査ログを使用して特定のグループのメンバーシップの変更を監視する

監査ログを使用して特定のグループのメンバーシップの変更を監視する

PowerShell を使用してグループ メンバーシップの変更を監視する

閲覧者は、特定の Azure AD グループを監視して、これらのグループのメンバーシップが更新された場合に通知されるようにする方法を尋ねます。Microsoft 365 テナントでの Teams の広範な使用と、チーム メンバーが利用できるリソースの範囲のため、組織は、上級管理職が使用するグループや、合併や買収活動などの機密目的で使用されるグループなど、一部の機密性の高いグループを監視したいと考えていることが非常に一般的です。さまざまな商用製品にこの機能が含まれていますが、テナントがすぐに使用できるコンポーネントからソリューションを作成できるかどうかを確認するのは常に楽しいことです。

Microsoft 365グループの削除を報告するなど、過去に同様の道を歩んできましたが、この要求には、監視するグループにマークを付ける必要があるため、少し異なります。私の最初の考えは、これが使用するシナリオになる可能性があるかどうかでした Azure AD カスタム セキュリティ属性?管理者は、属性セットを定義し、Azure AD オブジェクトに属性を割り当てることができます。残念ながら、Azure AD は現在 ユーザー オブジェクト、マネージド ID、およびサービス プリンシパル (アプリ用) のカスタム セキュリティ属性をサポートします。 Azure AD カスタム セキュリティ属性はまだプレビュー段階であり、サポートされているオブジェクトの種類の範囲は一般提供前に変更される可能性がありますが、この状況では役に立ちません。

グループのオンラインカスタム属性の交換

Exchange Online のメールが有効なオブジェクトは、グループと同様に、単一値を格納できる 15 個のカスタム属性と 5 個の複数値カスタム属性を持ちます。監視するグループをマークするカスタム属性を割り当てるのは簡単です。この例では、マークされた Microsoft 365 グループへのメンバーシップの変更を確認しています。

まず、対象となる Microsoft 365 グループをフラグで更新します。これは、 セット-ユニファイドグループ コマンドレット (Exchange 管理センターも Microsoft 365 管理センターも、カスタム属性へのアクセスをサポートしていません):

Set-UnifiedGroup -Identity "Contract Workers" -CustomAttribute15 "Monitor"

グループをマークした後、サーバー側のフィルターを使用してグループを見つけることができます。すべてのグループを取得してそのプロパティを確認する必要がないため、これは重要です。

[array]$Groups = Get-UnifiedGroup -Filter {CustomAttribute15 -eq "Monitor"}

コードの記述

監視対象グループにメンバーシップの変更を報告するコードには、次の手順が含まれます。

  • 監視対象の Microsoft 365 グループのセットを検索します。
  • グループ オブジェクト識別子と表示名のハッシュ テーブルを作成します。パフォーマンスを最大にするために、スクリプトはハッシュ テーブルを使用して、監査レコードが監視対象グループに関連しているかどうかを確認します。
  • 検索する監査イベントのセットを保持する変数を定義します。
  • 検索の開始日と終了日を定義します。この例では、30 日間を振り返ります。
  • を実行します。 検索-統合監査ログ コマンドレットを使用して検索を実行します。
  • 検索によって返された各イベントを調べて、監視対象グループに関連しているかどうかを確認します。そうである場合は、イベントに関する情報をキャプチャします。

グループ メンバーシップの変更を監視するコードを次に示します。

Connect-ExchangeOnline
Write-Host "Finding groups to monitor..."
[array]$Groups = Get-UnifiedGroup -Filter {CustomAttribute15 -eq "Monitor"}
If (!($Groups)) {Write-Host "No groups found to monitor - exiting" ; break }

$GroupIds = @{}
ForEach ($G in $Groups) {
   $GroupIds.Add($G.ExternalDirectoryObjectId,$G.DisplayName) }

$Operations="Add member to group", "Remove member from group"
$StartDate = (Get-Date).AddDays(-30); $EndDate = (Get-Date) 

Write-Host "Finding audit records for group member adds and deletes..."
[array]$Records = (Search-UnifiedAuditLog -Operations $Operations -StartDate $StartDate -EndDate $EndDate -ResultSize 1000 -Formatted)
If (!($Records)) { Write-Host "No audit records found for add or delete members from monitored groups - exiting" ; break }

$Report = [System.Collections.Generic.List[Object]]::new() # Create output file 

ForEach ($Rec in $Records) {
   $AuditData = ConvertFrom-Json $Rec.Auditdata
   Switch ($AuditData.Operation) {
    "Remove member from group." {
       $GroupId = $AuditData.ModifiedProperties | Where-Object {$_.Name -eq 'Group.ObjectId'} | Select-Object -ExpandProperty OldValue }
    "Add member to group." {
       $GroupId = $AuditData.ModifiedProperties | Where-Object {$_.Name -eq 'Group.ObjectId'} | Select-Object -ExpandProperty NewValue }
   }
   $GroupName = $GroupIds[$GroupId]
   If ($GroupName -ne $Null) { # Update is for one of the monitored groups
      
      $ReportLine = [PSCustomObject] @{
        TimeStamp = Get-Date($AuditData.CreationTime) -format g
        User      = $AuditData.UserId
        Group     = $GroupName 
        Member    = $AuditData.ObjectId
        Action    = $AuditData.Operation }        
      $Report.Add($ReportLine) 
  } #End if  

} # End ForEach audit record

$Report | Out-GridView

図 1 は、モニター対象グループのメンバーシップ変更に関連するイベントを見つけるための監査レコードの検索と分析の結果を示しています。

グループメンバーシップへの追加と削除の詳細

グループ メンバーシップの変更を監視する
図 1: グループ メンバーシップへの追加と削除の詳細

グループ メンバーシップの変更を自動的に監視する

これは、 Azure Automation ランブック 結果は、電子メールで配信されるか、グループのメンバーシップを監視する責任者によるアクションのために Teams チャネルに投稿されます。

重要なのは、監査ログには、Microsoft 365の操作に関する質問に答えることができる多くの有用な情報が含まれていることです。あなたがする必要があるのは利用可能なデータを利用することです。


Microsoft 365 テナント管理者が利用できるデータを活用する方法については、 IT プロフェッショナル向け Office 365 電子書籍。私たちは、別の製品にお金を払わずにグループメンバーシップの変更を監視する方法など、物事がどのように機能するかを理解するのが大好きです。

未分類

Posted by admin