月次タスクを「決めておく」価値
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 |
| 6 | Microsoft Secure Score確認 | 推奨改善の取込判断 | Defender ポータル |
| 7 | Defender for Endpointインシデント未対応 | 未トリアージ事象のクローズ | Defender XDR |
| 8 ★ | 外部共有ファイル一覧の取得 | 意図しない情報共有の検知 | SharePoint管理 |
| 9 | DLPポリシー誤検知率レビュー | 運用負荷とリスクのバランス調整 | Purview |
| 10 | サービス正常性/メッセージセンター | 計画変更・障害情報の社内告知 | Microsoft 365 管理 |
ライセンス・コスト(5項目)
| # | 項目 | 目的 |
|---|---|---|
| 11 ★ | 未使用ライセンス(30日サインインなし)の特定 | 余剰ライセンスの解約・再配置 |
| 12 ★ | グループベースライセンス処理エラー | 未割当ユーザーの解消 |
| 13 | Copilot for M365利用率 | ROI評価、追加割当の判断 |
| 14 | Power Platform プレミアムコネクタ使用状況 | ライセンス追加要否の判断 |
| 15 | Azure サブスクリプション コスト分析 | 予算超過の早期検知 |
デバイス・Intune(5項目)
| # | 項目 | 目的 |
|---|---|---|
| 16 ★ | 非準拠デバイス一覧の取得 | ポリシー違反端末の是正 |
| 17 ★ | 30日チェックインなし端末 | 退職者端末・紛失端末の特定 |
| 18 | OS更新の展開状況 | 遅延端末の押し出し |
| 19 | Win32アプリ展開エラー件数 | 失敗パッケージの修正 |
| 20 | APNs/VPP/DEPトークンの残日数 | iOS管理停止の予防 |
Exchange/SharePoint/Teams(10項目)
| # | 項目 | 目的 |
|---|---|---|
| 21 | メール配信失敗・遅延(Mail Flow) | ドメイン設定不備の早期検知 |
| 22 ★ | DMARC/SPF/DKIM レコード状態 | なりすまし/スパム判定の維持 |
| 23 | 異常な大量送信ユーザー | 侵害・誤送信の検知 |
| 24 ★ | SharePoint サイト容量/成長率 | 容量超過の予防 |
| 25 ★ | OneDrive 退職者データ保持期限 | 削除前の引継ぎ実施 |
| 26 | Teams ゲストユーザーの棚卸し | 退職した社外関係者の除去 |
| 27 | Teams 会議録画の保存期間ポリシー | ストレージとガバナンスの維持 |
| 28 | Loop/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の内部統制要件にも、月次タスクの実施記録は強力なエビデンスとなります。まずはこのチェックリストをスプレッドシートに転記し、来月から運用を開始してみてください。