本記事はGeminiの出力をプロンプト工学で整理した業務ドラフト(未検証)です。
M365 Identity Governanceにおけるアクセスレビューの最適化と実践
Microsoft 365 Identity Governanceのアクセスレビューは、組織内のリソースに対するユーザーのアクセス権が依然として適切であるかを定期的に検証するための重要な機能です。この機能は、最小特権の原則を維持し、コンプライアンス要件を満たし、セキュリティリスクを低減するために不可欠です。特に、従業員の異動や退職、プロジェクトの終了などにより、不要なアクセス権が残存する「アクセススパロール」を防ぐ上で効果的です。
アーキテクチャ
M365 Identity Governanceのアクセスレビューは、Microsoft Entra ID (旧Azure AD) を基盤として動作します。レビューの対象となるのは、主にEntra IDのグループメンバーシップ、アプリケーションへの割り当て、およびロールの割り当てです。レビュープロセスは、レビュー担当者が提案されたアクセス権の変更を承認または拒否し、その結果がEntra IDに適用される一連のワークフローとして構築されます。
以下に、アクセスレビューの基本的なワークフローをMermaid flowchartで示します。
graph TD
A["アクセスレビューの作成"] --> B{"レビューの開始"};
B --> C["レビュー担当者への通知"];
C --> D{"アクセス権の確認"};
D -- アクセスが必要 --> E["承認"];
D -- アクセスが不要 --> F["拒否"];
E --> G{"結果の適用"};
F --> G;
G --> H["監査ログの記録"];
G --> I["次のレビューのスケジュール設定"];
I --> B;
解説:
A[アクセスレビューの作成]: 管理者は、グループ、アプリケーション、またはロールのアクセス権をレビューするためのポリシーを定義します。対象範囲、レビュー担当者、頻度、自動適用設定などを指定します。
B{レビューの開始}: 定義されたスケジュール(例: 四半期ごと)に基づき、レビュープロセスが自動的に開始されます。
C[レビュー担当者への通知]: レビュー担当者(例: リソース所有者、部門長)は、レビューの開始をメールなどで通知されます。
D{アクセス権の確認}: レビュー担当者は、各ユーザーが対象リソースへのアクセス権を継続して必要としているかを確認します。システムは、最終サインイン日時などの情報を提供し、判断を支援します。
E[承認]: アクセス権が適切であると判断された場合、承認されます。
F[拒否]: アクセス権が不要であると判断された場合、拒否(削除)が提案されます。
G{結果の適用}: レビュー期間が終了し、承認された変更(アクセス権の削除など)がEntra IDに適用されます。これにより、承認されたユーザーはアクセス権を維持し、拒否されたユーザーのアクセス権は取り消されます。
H[監査ログの記録]: 全てのレビュー活動(作成、レビュー、適用結果)はEntra IDの監査ログに記録され、コンプライアンスと追跡可能性が確保されます。
I[次のレビューのスケジュール設定]: 定期的なレビューの場合、システムは次のレビューフェーズをスケジュールします。
このアーキテクチャは、Microsoft Entra IDの強力なアイデンティティ管理機能を活用し、自動化されたワークフローによって手動でのレビュー作業の負荷を軽減しつつ、継続的なアクセス権の適正化を実現します。
設定手順
アクセスレビューは、Microsoft Entra管理センターからGUIで設定することも可能ですが、ここではMicrosoft Graph API を利用した自動化の例を powershell を用いて示します。これにより、IaC (Infrastructure as Code) の原則に基づき、アクセスレビューの定義をコードとして管理できます。
前提条件
Microsoft Entra ID P2 または Microsoft 365 E5 ライセンス
Graph APIへのアクセス権限を持つサービスプリンシパルまたはユーザーアカウント
Microsoft Graph PowerShell SDK のインストール (
Install-Module Microsoft.Graph -Scope CurrentUser)
アクセスレビューの作成 (Graph API & PowerShell)
以下の powershell スクリプトは、特定のグループに対する月次アクセスレビューを作成する例です。
# Graph APIのアクセス許可スコープ: AccessReview.ReadWrite.All
# サービスプリンシパルを利用する場合は、App Registrationで適切なAPI権限を付与し、Certificates & secretsで認証情報を設定
# ① 接続
# Connect-MgGraph -Scopes "AccessReview.ReadWrite.All" # ユーザー認証の場合
# サービスプリンシパル認証の例
# $tenantId = "YOUR_TENANT_ID"
# $clientId = "YOUR_CLIENT_ID"
# $clientSecret = "YOUR_CLIENT_SECRET"
# Connect-MgGraph -ClientId $clientId -TenantId $tenantId -ClientSecret $clientSecret -Scopes "AccessReview.ReadWrite.All"
# ② レビュー対象グループのObjectIDを取得
$groupId = (Get-MgGroup -Filter "DisplayName eq 'YourTargetGroup'").Id
if (-not $groupId) {
Write-Error "Target group not found."
exit
}
# ③ レビュー担当者のObjectIDを取得 (例: グローバル管理者のID、または特定のユーザーのID)
# ここでは例として、レビューの作成者をレビュー担当者とします
$reviewerId = (Get-MgContext).Account.Id # 実行ユーザーのID
if (-not $reviewerId) {
Write-Error "Reviewer ID not found."
exit
}
# ④ アクセスレビュー作成のボディを定義
$body = @{
displayName = "月次アクセスレビュー - YourTargetGroup"
description = "YourTargetGroupのメンバーシップに関する月次レビュー"
startDateTime = (Get-Date).ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ") # 現在時刻から開始
endDateTime = (Get-Date).AddDays(30).ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ") # 30日後に終了
reviewedResource = @{
"@odata.type" = "#microsoft.graph.accessReviewQueryScope"
query = "/groups/$groupId/members"
queryType = "MicrosoftGraph"
}
scope = @{
"@odata.type" = "#microsoft.graph.accessReviewQueryScope"
query = "/groups/$groupId/members"
queryType = "MicrosoftGraph"
}
# 複数レビュー担当者を指定可能
reviewers = @(
@{
"@odata.type" = "#microsoft.graph.accessReviewReviewerScope"
query = "/users/$reviewerId"
queryType = "MicrosoftGraph"
# reviewerType = "self" # 自身でレビューする場合はこれ
}
)
settings = @{
autoApplyDecisionsEnabled = $true # 自動的に適用
recommendationsEnabled = $true # レビュー担当者に推奨事項を表示
justificationRequiredOnApproval = $true # 承認時に理由を必須とする
mailNotificationsEnabled = $true # メール通知を有効化
reminderNotificationsEnabled = $true # リマインダー通知を有効化
applyActions = @(
@{
"@odata.type" = "#microsoft.graph.removeAccessApplyAction"
}
)
recurrence = @{
pattern = @{
type = "absoluteMonthly"
interval = 1 # 毎月
dayOfMonth = 1 # 月の1日
}
range = @{
type = "noEnd" # 終了日なしで継続
}
}
}
} | ConvertTo-Json
# ⑤ アクセスレビューの作成実行
try {
$uri = "https://graph.microsoft.com/v1.0/identityGovernance/accessReviews/definitions"
$response = Invoke-MgGraphRequest -Method POST -Uri $uri -Body $body -ContentType "application/json"
Write-Host "アクセスレビューが正常に作成されました: $($response.Id)"
}
catch {
Write-Error "アクセスレビューの作成中にエラーが発生しました: $($_.Exception.Message)"
}
解説:
Connect-MgGraph: Graph APIに接続します。適切な認証方法(対話型またはサービスプリンシパル)を選択し、必要なスコープAccessReview.ReadWrite.Allを指定します。$groupId,$reviewerId: レビュー対象となるグループとレビュー担当者のオブジェクトIDを取得します。$body: アクセスレビューの定義を含むJSONボディを作成します。displayName,description: レビューの表示名と説明。startDateTime,endDateTime: レビューの開始日時と終了日時(UTC形式)。scope: レビューの対象となるリソースを指定します。ここでは特定のグループのメンバーシップです。reviewers: レビューを担当するユーザーまたはグループを指定します。settings: レビューの詳細な動作を設定します。autoApplyDecisionsEnabled:trueに設定すると、レビュー結果が自動的にEntra IDに適用されます。recommendationsEnabled: アクセス権の保持/削除に関する推奨事項を表示します。justificationRequiredOnApproval: 承認時に理由の入力を必須とします。recurrence: レビューの繰り返しスケジュール(ここでは毎月1日)を設定します。
Invoke-MgGraphRequest: 定義したボディを使ってGraph APIのエンドポイントにPOSTリクエストを送信し、アクセスレビューを作成します。
このスクリプトにより、PowerShellから繰り返し可能な形でアクセスレビューをデプロイし、IaCの恩恵を受けることができます。
運用監視
アクセスレビューの運用においては、その進行状況、結果、およびコンプライアンス状況を継続的に監視することが重要です。
Entra管理センターの監視: Microsoft Entra管理センターの「Identity Governance」>「アクセスレビュー」セクションで、作成されたレビューの現在のステータス、進行状況、結果をグラフィカルに確認できます。
監査ログ: すべてのアクセスレビュー活動(作成、レビューの実施、決定、適用結果など)は、Microsoft Entra IDの監査ログに詳細に記録されます。これにより、誰がいつ、どのような決定を下したか、その結果何が変更されたかを追跡できます。これらのログはAzure MonitorやLog Analyticsワークスペースに連携し、長期保存やカスタムダッシュボードでの可視化が可能です。
- ログは
2024年4月10日 JSTの時点でMicrosoft Learnにて詳細が解説されています https://learn.microsoft.com/en-us/entra/identity/monitoring-health/concept-audit-logs。
- ログは
レポート機能: アクセスレビューの結果はレポートとしてエクスポートでき、コンプライアンス監査の証拠として利用可能です。
通知: レビュー担当者へのメール通知やリマインダー機能は、レビューの完了率を高める上で効果的です。運用管理者はこれらの通知が正しく機能しているかを確認すべきです。
SLAとバックアップ/DR: アクセスレビュー機能自体に特化したSLAやバックアップ/DRは通常考慮されませんが、基盤となるMicrosoft Entra IDは高可用性と堅牢性を提供しています。レビューの定義や結果はEntra ID内に保存されるため、別途バックアップの必要はありません。
セキュリティ
アクセスレビューは、Microsoft 365環境の全体的なセキュリティ態勢を強化する上で中心的な役割を果たします。
最小特権の原則 (Principle of Least Privilege; PoLP): 不要なアクセス権の削除を強制することで、ユーザーが業務に必要な最小限の権限のみを持つことを保証します。これは、攻撃者がアカウントを侵害した場合のリスクを大幅に低減します。
コンプライアンス: SOX、HIPAA、GDPRなどの規制要件では、ユーザーアクセス権の定期的なレビューと監査証跡の保持が求められることがよくあります。アクセスレビューはこれらの要件を満たすための強力なツールとなります。
IDと権限境界:
Microsoft Entra ID: 全てのアクセスレビューの基盤であり、IDとリソースへのアクセスを集中管理します。
ロールベースアクセス制御 (RBAC): レビュー担当者の選定において、リソース所有者や部門長といった適切な役割を持つユーザーを割り当てることで、責任の分担と適切な判断を促進します。
条件付きアクセス (Conditional Access; CA): アクセスレビューと直接統合されるわけではありませんが、CAポリシーはレビューの対象となるリソースへのアクセス条件を強化し、多要素認証(MFA)や準拠デバイスを要求することで、レビューで承認されたアクセスが安全に行われるように補完します。
Privileged Identity Management (PIM): PIMと連携することで、ジャストインタイム (JIT) アクセスや一時的な昇格されたロールのアクセスレビューを実施できます。これは、特権アカウントのアクセススパロールを防ぐ上で特に重要です。
Defender for Identity: 不審なアクティビティを検出・警告することで、潜在的なアクセス権の悪用や侵害を特定し、アクセスレビューの有効性を間接的にサポートします。
コスト
M365 Identity Governanceにおけるアクセスレビュー機能の利用には、ライセンス要件があります。
ライセンス: アクセスレビュー機能を利用するには、以下のいずれかのライセンスが必要です(
2024年5月10日 JST時点のMicrosoft Learn情報に基づく)https://learn.microsoft.com/en-us/entra/identity-governance/licensing-requirements 。Microsoft Entra ID P2: Entra IDのプレミアム機能群の一部として提供されます。
Microsoft 365 E5: Entra ID P2を含む包括的なスイートライセンス。
Enterprise Mobility + Security (EMS) E5: Entra ID P2を含むモバイルおよびセキュリティソリューション。
レビューの対象となるユーザーごとにこれらのライセンスが必要となります。ゲストユーザーのレビューも可能ですが、ゲストユーザーにも適切なライセンス割り当てが必要な場合があります。
コスト最適化:
ターゲットを絞ったレビュー: 全てのグループやアプリケーションを無差別にレビューするのではなく、高リスクなリソース(例: 全社共有ドライブ、機密情報を含むアプリケーション、特権ロール)に焦点を当ててレビューの頻度を高めるなど、対象を絞ることでライセンスコスト対効果を高めます。
適切な頻度: 月次、四半期、年次など、リソースの機密性や変更頻度に応じてレビューサイクルを調整します。低リスクなリソースは頻度を下げ、管理オーバーヘッドを削減できます。
自動化の活用: Graph APIやPowerShellによる自動化は、手動での設定や管理にかかる人件費を削減し、レビュープロセスの効率を高めます。
落とし穴
アクセスレビューを効果的に運用するためには、いくつかの一般的な落とし穴を認識し、回避することが重要です。
「承認オール」症候群: レビュー担当者が内容を十分に確認せず、全てのアクセス権を一括で承認してしまうことです。これを防ぐためには、レビュー担当者に十分なトレーニングを提供し、レビューの重要性を理解させることが不可欠です。システム側では、「推奨事項」の表示や「承認時の理由必須」設定を有効にすることで、より意識的な判断を促せます。
レビュー担当者の不適切: リソースのアクセス権について適切な判断を下せる知識を持つ人物をレビュー担当者に設定しないと、レビューの質が低下します。リソース所有者や、部門のマネージャーなど、業務上の関連性が明確な人物を割り当てることが重要です。
通知の見落とし: レビュー担当者がレビュー開始通知やリマインダーメールを見落とすことがあります。定期的なレビューアナウンス、Microsoft Teamsなどのコラボレーションツールでの連携、管理センターでのダッシュボード表示を通じて、レビューの重要性を強調し、可視性を高めるべきです。
自動適用の不理解:
autoApplyDecisionsEnabledをtrueに設定した場合、レビュー期間終了後にシステムが自動的に変更を適用します。この動作を理解せず、意図せずアクセス権が削除されることを防ぐため、十分な告知とレビュー担当者への説明が必要です。特に初回運用時は、少数のグループでテスト運用を行うことが推奨されます。レビュー対象範囲の不備: レビュー対象が漏れていたり、逆にレビューの必要がないリソースまで含めてしまったりすると、レビューの効果が薄れたり、無駄な作業が発生したりします。定期的に対象範囲を見直し、ビジネスの変化に合わせて更新する運用が必要です。
まとめ
M365 Identity Governanceにおけるアクセスレビューは、現代のクラウド環境におけるセキュリティとコンプライアンスの基盤を築く上で不可欠な機能です。適切なアーキテクチャ設計、自動化された設定手順、継続的な運用監視、そしてセキュリティ原則との連携を通じて、組織は最小特権の原則を維持し、潜在的なリスクを軽減できます。また、ライセンスコストを最適化し、一般的な落とし穴を回避するためのベストプラクティスを適用することで、アクセスレビューの価値を最大限に引き出すことが可能です。定期的なアクセスレビューの実施は、進化する脅威環境とコンプライアンス要件に対応するための継続的な取り組みの一環として、組織のセキュリティ戦略に深く組み込まれるべきです。

コメント