月次タスクを「決めておく」価値

Microsoft 365は新機能と設定項目が膨大で、「気づいたらライセンスが余っていた」「条件付きアクセスで誰がブロックされているか把握していない」「DLPの誤検知通知を見ていなかった」といった漏れが起きがちです。月次の30分〜2時間で確実に実施するタスクを30項目に固定化することで、ひとり情シスでも統制を維持できます。

📌 使い方

下記30項目をスプレッドシート化し、毎月「実施日/担当/結果メモ」を記録します。J-SOX/ISMS/IT監査のエビデンスとしても活用可能。★マークの項目はPowerShellで自動化できます。

セキュリティ統制(10項目)

#項目目的場所
1 ★特権ロール保有者の棚卸し不要なグローバル管理者の除去Entra → ロール
2 ★非アクティブユーザー(90日サインインなし)抽出退職漏れ・休眠アカウント検知Entra → ユーザー
3サインインリスクのあるユーザー確認侵害アカウントの早期発見Identity Protection
4条件付きアクセス レポート専用ログレビュー新規ポリシーの影響評価Entra → 監視
5 ★MFA未登録ユーザー抽出MFAカバレッジ100%維持Authentication Methods
6Microsoft Secure Score確認推奨改善の取込判断Defender ポータル
7Defender for Endpointインシデント未対応未トリアージ事象のクローズDefender XDR
8 ★外部共有ファイル一覧の取得意図しない情報共有の検知SharePoint管理
9DLPポリシー誤検知率レビュー運用負荷とリスクのバランス調整Purview
10サービス正常性/メッセージセンター計画変更・障害情報の社内告知Microsoft 365 管理

ライセンス・コスト(5項目)

#項目目的
11 ★未使用ライセンス(30日サインインなし)の特定余剰ライセンスの解約・再配置
12 ★グループベースライセンス処理エラー未割当ユーザーの解消
13Copilot for M365利用率ROI評価、追加割当の判断
14Power Platform プレミアムコネクタ使用状況ライセンス追加要否の判断
15Azure サブスクリプション コスト分析予算超過の早期検知

デバイス・Intune(5項目)

#項目目的
16 ★非準拠デバイス一覧の取得ポリシー違反端末の是正
17 ★30日チェックインなし端末退職者端末・紛失端末の特定
18OS更新の展開状況遅延端末の押し出し
19Win32アプリ展開エラー件数失敗パッケージの修正
20APNs/VPP/DEPトークンの残日数iOS管理停止の予防

Exchange/SharePoint/Teams(10項目)

#項目目的
21メール配信失敗・遅延(Mail Flow)ドメイン設定不備の早期検知
22 ★DMARC/SPF/DKIM レコード状態なりすまし/スパム判定の維持
23異常な大量送信ユーザー侵害・誤送信の検知
24 ★SharePoint サイト容量/成長率容量超過の予防
25 ★OneDrive 退職者データ保持期限削除前の引継ぎ実施
26Teams ゲストユーザーの棚卸し退職した社外関係者の除去
27Teams 会議録画の保存期間ポリシーストレージとガバナンスの維持
28Loop/Whiteboard 共有設定意図しない外部共有の制御
29休眠TeamsチームとSharePointサイト不要リソースのアーカイブ
30監査ログ(Unified Audit Log)保持確認調査時の証跡維持

PowerShell 自動化スニペット集

1. 非アクティブユーザー抽出(90日)

Connect-MgGraph -Scopes "AuditLog.Read.All","User.Read.All" $cutoff = (Get-Date).AddDays(-90) Get-MgUser -All -Property Id,UserPrincipalName,SignInActivity | Where-Object { $_.SignInActivity.LastSignInDateTime -lt $cutoff } | Select UserPrincipalName, @{N='LastSignIn';E={$_.SignInActivity.LastSignInDateTime}} | Export-Csv -Path .\inactive-users.csv -NoTypeInformation -Encoding utf8

2. グローバル管理者一覧

$role = Get-MgDirectoryRole -Filter "displayName eq 'Global Administrator'" Get-MgDirectoryRoleMember -DirectoryRoleId $role.Id | ForEach-Object { Get-MgUser -UserId $_.Id } | Select UserPrincipalName, DisplayName, AccountEnabled

3. 未使用ライセンス(30日サインインなし)

$cutoff = (Get-Date).AddDays(-30) Get-MgUser -All -Property Id,UserPrincipalName,SignInActivity,AssignedLicenses | Where-Object { $_.AssignedLicenses.Count -gt 0 -and $_.SignInActivity.LastSignInDateTime -lt $cutoff } | Select UserPrincipalName, @{N='LastSignIn';E={$_.SignInActivity.LastSignInDateTime}}

4. Intune 非準拠デバイス

Connect-MgGraph -Scopes "DeviceManagementManagedDevices.Read.All" Get-MgDeviceManagementManagedDevice -All | Where-Object { $_.ComplianceState -ne 'compliant' } | Select DeviceName, UserPrincipalName, OperatingSystem, ComplianceState, LastSyncDateTime

5. SharePoint外部共有レポート

Connect-SPOService -Url https://<tenant>-admin.sharepoint.com Get-SPOSite -Limit All | Where-Object { $_.SharingCapability -ne 'Disabled' } | Select Url, SharingCapability, StorageUsageCurrent

月次レポートの自動化

30項目すべてを手作業で実施する必要はありません。Power Automate + Microsoft Graph で月初に CSV を生成し、Teams/メールで通知するフローを組むと、レビューだけで完結します。

  • Azure Automation Account+PowerShell Runbookで深夜実行
  • 結果を SharePoint ライブラリに保管 → Power BI で可視化
  • 異常値(非準拠デバイス急増、未使用ライセンス20件超 等)はTeams Adaptive Cardでアラート
  • 監査エビデンスとして1年以上の保持を確保

ひとり情シス向け優先順位

30項目すべて毎月は現実的でない場合、以下の優先度で運用します。

  • 必須(毎月):1(特権ロール)/5(MFA未登録)/7(Defenderインシデント)/10(サービス正常性)/20(APNs等期限)
  • 推奨(隔月):2(非アクティブ)/11(未使用ライセンス)/16(非準拠端末)/22(DMARC)
  • 任意(四半期):それ以外の項目

まとめ

Microsoft 365管理者の月次タスクは、「決まった項目を、決まった日に、PowerShellで自動取得して結果だけ見る」のが理想形です。30項目は多く感じても、自動化すれば実質的なレビュー時間は1時間以内。J-SOXやISMSの内部統制要件にも、月次タスクの実施記録は強力なエビデンスとなります。まずはこのチェックリストをスプレッドシートに転記し、来月から運用を開始してみてください。

E

BTNコンサルティング 編集部

株式会社BTNコンサルティング|情シス365 運営

Microsoft 365・Entra ID・Intune導入支援、IT-PMI、生成AI活用、セキュリティ対策を専門とするITコンサルティング企業。中小企業の「ひとり情シス」を支援します。