<p><!--META
{
"title": "Microsoft Entra ID監視: 監査ログとサインインログ分析の最適化",
"primary_category": "クラウド>Azure",
"secondary_categories": ["セキュリティ","運用監視"],
"tags": ["Microsoft Entra ID", "Azure Monitor", "Log Analytics", "監査ログ", "サインインログ", "KQL", "Microsoft Sentinel", "条件付きアクセス"],
"summary": "Microsoft Entra IDの監査ログとサインインログをAzure MonitorやSentinelで分析し、セキュリティと運用監視を強化するアーキテクチャ、設定、コスト最適化を解説します。",
"mermaid": true,
"verify_level": "L0",
"tweet_hint": {"text":"Microsoft Entra IDのログ分析はセキュリティ強化の鍵🔑 Azure MonitorやSentinelを活用した監査ログ/サインインログ監視のアーキテクチャ、設定、コスト管理について解説します。 #MicrosoftEntraID
#AzureMonitor #セキュリティ"},
"link_hints": [
"https://learn.microsoft.com/ja-jp/entra/identity/monitoring/concept-audit-logs",
"https://learn.microsoft.com/ja-jp/entra/identity/monitoring/concept-sign-in-logs",
"https://learn.microsoft.com/ja-jp/entra/identity/monitoring/howto-integrate-activity-logs-with-azure-monitor",
"https://learn.microsoft.com/ja-jp/azure/azure-monitor/logs/cost-logs",
"https://learn.microsoft.com/ja-jp/azure/sentinel/connect-microsoft-entra-id",
"https://learn.microsoft.com/ja-jp/azure/azure-monitor/roles-permissions-security"
]
}
-->
本記事は<strong>Geminiの出力をプロンプト工学で整理した業務ドラフト(未検証)</strong>です。</p>
<h1 class="wp-block-heading">Microsoft Entra ID監視: 監査ログとサインインログ分析の最適化</h1>
<p>クラウド環境におけるアイデンティティ管理の中心であるMicrosoft Entra ID (旧 Azure AD) の監視は、セキュリティと運用の両面で極めて重要です。特に監査ログとサインインログの分析は、不正アクセスや設定変更の検知、コンプライアンス要件への対応、ユーザーエクスペリエンスの向上に不可欠となります。本記事では、Microsoft Entra IDの監視アーキテクチャ、具体的な設定手順、運用監視、セキュリティ強化、コスト最適化、そして一般的な落とし穴について、クラウドアーキテクトの視点から解説します。</p>
<h2 class="wp-block-heading">監視アーキテクチャ</h2>
<p>Microsoft Entra IDの監視は、ログデータを収集し、一元的に管理・分析できる環境を構築することが基本です。主要なコンポーネントとして、Microsoft Entra IDの診断設定、Azure Monitor Log Analyticsワークスペース、そして必要に応じてMicrosoft Sentinelを連携させます。</p>
<h3 class="wp-block-heading">ログの種類</h3>
<ul class="wp-block-list">
<li><p><strong>監査ログ</strong>: Microsoft Entra IDテナント内で発生したすべての変更アクティビティを記録します。これには、ユーザーアカウントの作成や削除、グループメンバーシップの変更、アプリケーションの登録、ロールの割り当てなどが含まれます。監査ログは、変更の追跡、コンプライアンス監査、セキュリティインシデント調査の基盤となります [1]。</p></li>
<li><p><strong>サインインログ</strong>: ユーザーやアプリケーションがMicrosoft Entra IDに対して認証を試みたすべてのイベントを記録します。サインイン日時、ユーザー、アプリケーション、IPアドレス、デバイス、OS、ブラウザ、認証結果(成功/失敗)、条件付きアクセスの評価結果など、詳細な情報が含まれます [2]。これは、不正なサインイン試行の検知、条件付きアクセスポリシーの効果測定、ユーザーエクスペリエンスのトラブルシューティングに役立ちます。サインインログには、対話型、非対話型、サービスプリンシパル、マネージドIDのサインインタイプがあります。</p></li>
</ul>
<h3 class="wp-block-heading">アーキテクチャ図</h3>
<p>以下のフローチャートは、Microsoft Entra IDからログを収集し、分析、監視、セキュリティ強化を行う一般的なアーキテクチャを示しています。</p>
<div class="wp-block-merpress-mermaidjs diagram-source-mermaid"><pre class="mermaid">
flowchart TD
subgraph ID管理
A["Microsoft Entra ID"]
H["ユーザー認証"] --> A;
I["管理者操作"] --> A;
end
A --> |監査ログ & サインインログ| B("診断設定");
B --> |ログ転送| C["Azure Log Analytics ワークスペース"];
subgraph 監視・分析
C --> |KQLクエリ & アラート| D["Azure Monitor"];
D --> |監視チーム| F{"セキュリティ運用"};
end
subgraph SIEM/SOAR
C --> |脅威検出 & 自動応答| E["Microsoft Sentinel"];
E --> |セキュリティ担当者| F;
end
F --> |ポリシー強化/対応| G["セキュリティ改善"];
H -.-> |監視対象| D;
I -.-> |監視対象| D;
H -.-> |脅威分析| E;
I -.-> |脅威分析| E;
</pre></div>
<p><strong>解説</strong>:</p>
<ol class="wp-block-list">
<li><p><strong>Microsoft Entra ID (A)</strong>: ユーザー認証 (H) や管理者操作 (I) によって監査ログやサインインログを生成します。</p></li>
<li><p><strong>診断設定 (B)</strong>: Microsoft Entra IDから生成されるこれらのログを、指定された宛先に転送するための設定です [3]。</p></li>
<li><p><strong>Azure Log Analytics ワークスペース (C)</strong>: 診断設定によって転送されたログデータを集約、保存、インデックス化する中心的なリポジトリです。Kusto Query Language (KQL) を用いて高度な分析が可能です。</p></li>
<li><p><strong>Azure Monitor (D)</strong>: Log Analyticsワークスペースに保存されたデータに対し、カスタムクエリ、アラート、ダッシュボード(Azure Workbook)を作成し、監視チームがリアルタイムで状況を把握できるようにします。</p></li>
<li><p><strong>Microsoft Sentinel (E)</strong>: SIEM/SOARソリューションとして、Log Analyticsワークスペースからログデータを取り込み、機械学習を用いた脅威検出、インシデント管理、自動化された応答プレイブックを提供し、セキュリティ担当者の運用を支援します [5]。</p></li>
<li><p><strong>セキュリティ運用 (F) & セキュリティ改善 (G)</strong>: 監視チームやセキュリティ担当者が分析結果に基づき、セキュリティポリシーの強化やインシデント対応を行います。</p></li>
</ol>
<h2 class="wp-block-heading">設定手順</h2>
<p>Microsoft Entra IDの監査ログとサインインログをLog Analyticsワークスペースに転送する手順をPowerShellまたはAzure CLIで示します。</p>
<h3 class="wp-block-heading">1. Log Analytics ワークスペースの作成</h3>
<p>まだ作成していない場合は、Log Analyticsワークスペースを作成します。
(既存のワークスペースを使用する場合はこの手順は不要です。)</p>
<div class="codehilite">
<pre data-enlighter-language="generic"># Log Analyticsワークスペースの作成 (PowerShell)
$resourceGroup = "your-resource-group"
$workspaceName = "your-log-analytics-workspace"
$location = "japaneast" # または任意のリージョン
New-AzResourceGroup -Name $resourceGroup -Location $location
New-AzOperationalInsightsWorkspace -ResourceGroupName $resourceGroup -Name $workspaceName -Location $location
# Azure CLIの場合
# az group create --name $resourceGroup --location $location
# az monitor log-analytics workspace create --resource-group $resourceGroup --name $workspaceName --location $location
</pre>
</div>
<h3 class="wp-block-heading">2. Microsoft Entra IDの診断設定の構成</h3>
<p>監査ログとサインインログをLog Analyticsワークスペースに転送するように設定します。Microsoft Entra IDの診断設定はテナント全体に適用されます。</p>
<div class="codehilite">
<pre data-enlighter-language="generic"># Microsoft Entra ID 診断設定の構成 (PowerShell)
# サブスクリプションID、Log AnalyticsワークスペースのリソースIDを事前に取得
$subscriptionId = (Get-AzContext).Subscription.Id
$logAnalyticsWorkspaceId = "/subscriptions/$subscriptionId/resourcegroups/$resourceGroup/providers/Microsoft.OperationalInsights/workspaces/$workspaceName"
$categories = @(
"AuditLogs",
"SignInLogs",
"NonInteractiveUserSignInLogs",
"ServicePrincipalSignInLogs",
"ManagedIdentitySignInLogs",
"ProvisioningLogs",
"RiskyUsers",
"UserRiskEvents"
)
# 診断設定の名前を定義
$settingName = "SendEntraLogsToLogAnalytics"
# 既存の診断設定がある場合は、まず削除してから再作成することも検討
# Get-AzDiagnosticSetting -Name $settingName -ResourceId "/providers/Microsoft.Aad/diagnosticSettings" | Remove-AzDiagnosticSetting -Force
foreach ($category in $categories) {
New-AzDiagnosticSetting `
-Name "$settingName-$category" `
-ResourceId "/providers/Microsoft.Aad/diagnosticSettings" `
-LogCategory $category `
-WorkspaceId $logAnalyticsWorkspaceId `
-Enabled $true `
-RetentionPolicyDays 0 ` # Log Analytics側で保持期間を管理するため0を設定
-RetentionPolicyEnabled $false
}
Write-Host "Microsoft Entra IDの診断設定が完了しました。"
Write-Host "ログはLog Analyticsワークスペース '$workspaceName' に転送されます。"
# Azure CLIの場合
# log_analytics_workspace_id=$(az monitor log-analytics workspace show --resource-group $resourceGroup --name $workspaceName --query id -o tsv)
#
# categories=(
# "AuditLogs"
# "SignInLogs"
# "NonInteractiveUserSignInLogs"
# "ServicePrincipalSignInLogs"
# "ManagedIdentitySignInLogs"
# "ProvisioningLogs"
# "RiskyUsers"
# "UserRiskEvents"
# )
#
# setting_name="SendEntraLogsToLogAnalytics"
#
# for category in "${categories[@]}"; do
# az monitor diagnostic-settings create \
# --name "${setting_name}-${category}" \
# --resource "/providers/Microsoft.Aad/diagnosticSettings" \
# --logs "[{category: $category, enabled: true, retentionPolicy: {enabled: false, days: 0}}]" \
# --workspace "$log_analytics_workspace_id"
# done
#
# echo "Microsoft Entra IDの診断設定が完了しました。"
# echo "ログはLog Analyticsワークspace '$workspaceName' に転送されます。"
</pre>
</div>
<p><strong>注意点</strong>: Microsoft Entra IDの診断設定は、リソースIDが <code>/providers/Microsoft.Aad/diagnosticSettings</code> となる特殊なグローバル設定です。カテゴリごとに個別の診断設定を作成するか、または一つの設定で複数のカテゴリをカバーする方法があります。上記PowerShellスクリプトはカテゴリごとに設定を作成しています。</p>
<h2 class="wp-block-heading">運用監視</h2>
<p>Log Analyticsワークスペースにログデータが収集されたら、KQL (Kusto Query Language) を使用して分析し、監視を運用します。</p>
<h3 class="wp-block-heading">KQLクエリ例</h3>
<ul class="wp-block-list">
<li><p><strong>最近の失敗したサインイン試行</strong>:</p>
<div class="codehilite">
<pre data-enlighter-language="generic">SigninLogs
| where ResultType != "0" // 0は成功を示す
| where TimeGenerated > ago(1h)
| project TimeGenerated, UserDisplayName, UserPrincipalName, IPAddress, DeviceDetail.displayName, ConditionalAccessPolicies.result
| sort by TimeGenerated desc
</pre>
</div></li>
<li><p><strong>管理者ロールの変更監査</strong>:</p>
<div class="codehilite">
<pre data-enlighter-language="generic">AuditLogs
| where Category == "RoleManagement"
| where ActivityDisplayName contains "add member to role" or ActivityDisplayName contains "remove member from role"
| project TimeGenerated, InitiatedBy.user.userPrincipalName, TargetResources[0].displayName, TargetResources[0].type, ActivityDisplayName
| sort by TimeGenerated desc
</pre>
</div></li>
</ul>
<h3 class="wp-block-heading">アラートとダッシュボード</h3>
<p>Azure Monitorのアラート機能を利用して、特定の条件(例: 連続するサインイン失敗、特定の管理者ロール変更)が満たされた場合に通知をトリガーできます。また、Azure WorkbookやAzure Dashboardsを活用し、主要なセキュリティ指標やログの傾向を視覚的に表示することで、運用チームの監視効率を向上させます。</p>
<h3 class="wp-block-heading">可用性・SLA・バックアップ/DR</h3>
<p>Log AnalyticsワークスペースはAzureの管理サービスであり、高い可用性とSLA(99.9%)が提供されます [4]。ログデータは自動的にバックアップされ、地理的なレプリケーションやゾーン冗長性も選択可能です。ユーザー自身が明示的にバックアップ操作を行う必要はありませんが、長期保持ポリシーは適切に設定する必要があります。</p>
<h2 class="wp-block-heading">セキュリティ</h2>
<p>Microsoft Entra IDのログ監視は、セキュリティ体制を強化するための重要な要素です。</p>
<h3 class="wp-block-heading">アイデンティティと権限境界</h3>
<ul class="wp-block-list">
<li><p><strong>ロールベースのアクセス制御 (RBAC)</strong>: Log AnalyticsワークスペースやMicrosoft Entra IDのログへのアクセスは、最小特権の原則に基づいて厳密に管理します。たとえば、ログの閲覧には「レポートリーダー」や「セキュリティリーダー」ロール、診断設定の構成には「監視共同作成者」ロールを付与します [6]。</p></li>
<li><p><strong>条件付きアクセス (CA)</strong>: Microsoft Entra ID P1/P2ライセンスで利用可能な条件付きアクセスは、サインインログと組み合わせて監視することで、セキュリティポリシーの効果を検証できます [8]。特に「レポート専用モード」を活用し、新しいポリシー導入前に潜在的な影響を評価することが推奨されます。</p></li>
</ul>
<h3 class="wp-block-heading">不正アクセス検知と脅威インテリジェンス</h3>
<p>Microsoft Sentinelは、Entra IDログを含む複数のデータソースを統合し、機械学習と行動分析によって異常なサインインパターン、ブルートフォース攻撃、資格情報漏洩などを検出します。Microsoft Defender for IdentityやMicrosoft Defender for Cloudとの連携により、より広範な脅威インテリジェンスを活用できます。</p>
<h2 class="wp-block-heading">コスト</h2>
<p>Microsoft Entra IDの監視には、主にLog AnalyticsワークスペースとMicrosoft Entra IDライセンスに関連するコストが発生します。</p>
<h3 class="wp-block-heading">Log Analytics コスト</h3>
<p>Log Analyticsワークスペースのコストは、主に<strong>取り込みデータ量</strong>と<strong>データ保持期間</strong>に基づいて発生します [4]。</p>
<ul class="wp-block-list">
<li><p><strong>取り込みデータ量</strong>: テラバイト単位で課金されます。Microsoft Entra IDから転送されるログの量に応じて変動します。</p></li>
<li><p><strong>データ保持期間</strong>: デフォルトは30日ですが、最大730日まで延長できます。期間が長いほどコストは増加します。</p></li>
</ul>
<h3 class="wp-block-heading">Microsoft Entra ID ライセンス</h3>
<ul class="wp-block-list">
<li><p><strong>Microsoft Entra ID Free</strong>: 診断設定を利用してLog Analyticsにログを転送することは可能ですが、サインインログの全詳細や一部の高度なレポート機能には制限があります。</p></li>
<li><p><strong>Microsoft Entra ID P1/P2</strong>: これらのライセンスは、条件付きアクセス、Identity Protection、Privileged Identity Management (PIM) などの高度なセキュリティ機能を提供し、それらの活動に関する詳細なログも取得可能になります。監視を最大限に活用するには、P1またはP2ライセンスが推奨されます [6]。</p></li>
</ul>
<h3 class="wp-block-heading">コスト最適化戦略</h3>
<ul class="wp-block-list">
<li><p><strong>データ保持期間の調整</strong>: コンプライアンス要件やセキュリティポリシーに基づき、必要な最小限の期間にログ保持期間を設定します。Log Analyticsではテーブルごとに保持期間を設定することも可能です。</p></li>
<li><p><strong>コミットメントティアの利用</strong>: 予測可能なログ取り込み量がある場合、従量課金よりもコミットメントティアを選択することで、単価を抑えることができます [4]。</p></li>
<li><p><strong>不要なログカテゴリの除外</strong>: 診断設定で、監視の要件に合致しないログカテゴリの転送を停止することで、データ取り込み量を削減します。</p></li>
</ul>
<h2 class="wp-block-heading">落とし穴</h2>
<ul class="wp-block-list">
<li><p><strong>ライセンス要件の見落とし</strong>: 特定の高度なサインインログやPIM関連のログは、Microsoft Entra ID P1またはP2ライセンスがないと利用できない場合があります。無料版のEntra IDでは詳細な監視が制限されることを理解しておく必要があります。</p></li>
<li><p><strong>ログ保持期間の設計不足</strong>: コンプライアンス要件やインシデント調査のために必要な期間、ログが保存されていないと、重要な情報が見つからない可能性があります。Log Analyticsの保持期間は事前に計画し、設定しておくべきです。</p></li>
<li><p><strong>診断設定の漏れ</strong>: 新しいMicrosoft Entra IDテナントや追加されたログカテゴリに対して診断設定を構成し忘れると、重要なログデータが収集されません。</p></li>
<li><p><strong>KQLスキル不足</strong>: Log Analyticsで効果的にログを分析するには、KQLの習熟が必要です。チーム内でKQLのトレーニングを実施するか、専門知識を持つリソースを確保することが重要です。</p></li>
<li><p><strong>条件付きアクセスの誤設定</strong>: 条件付きアクセスポリシーは強力なセキュリティツールですが、誤設定するとユーザーがサインインできなくなる可能性があります。レポート専用モードを活用し、段階的に導入することが必須です [8]。</p></li>
</ul>
<h2 class="wp-block-heading">まとめ</h2>
<p>Microsoft Entra IDの監査ログとサインインログの分析は、クラウド環境のセキュリティと運用管理において中心的な役割を担います。Azure Monitor Log AnalyticsとMicrosoft Sentinelを組み合わせたアーキテクチャにより、詳細なログ収集、高度な分析、脅威検出、自動化された応答が可能になります。適切なライセンス選択とコスト最適化を図りつつ、最小特権の原則に基づく権限管理とKQLスキルの向上を通じて、Microsoft Entra ID環境の監視体制を継続的に強化していくことが、現代のクラウドアーキテクトに求められる重要な課題です。</p>
本記事はGeminiの出力をプロンプト工学で整理した業務ドラフト(未検証)です。
Microsoft Entra ID監視: 監査ログとサインインログ分析の最適化
クラウド環境におけるアイデンティティ管理の中心であるMicrosoft Entra ID (旧 Azure AD) の監視は、セキュリティと運用の両面で極めて重要です。特に監査ログとサインインログの分析は、不正アクセスや設定変更の検知、コンプライアンス要件への対応、ユーザーエクスペリエンスの向上に不可欠となります。本記事では、Microsoft Entra IDの監視アーキテクチャ、具体的な設定手順、運用監視、セキュリティ強化、コスト最適化、そして一般的な落とし穴について、クラウドアーキテクトの視点から解説します。
監視アーキテクチャ
Microsoft Entra IDの監視は、ログデータを収集し、一元的に管理・分析できる環境を構築することが基本です。主要なコンポーネントとして、Microsoft Entra IDの診断設定、Azure Monitor Log Analyticsワークスペース、そして必要に応じてMicrosoft Sentinelを連携させます。
ログの種類
監査ログ: Microsoft Entra IDテナント内で発生したすべての変更アクティビティを記録します。これには、ユーザーアカウントの作成や削除、グループメンバーシップの変更、アプリケーションの登録、ロールの割り当てなどが含まれます。監査ログは、変更の追跡、コンプライアンス監査、セキュリティインシデント調査の基盤となります [1]。
サインインログ: ユーザーやアプリケーションがMicrosoft Entra IDに対して認証を試みたすべてのイベントを記録します。サインイン日時、ユーザー、アプリケーション、IPアドレス、デバイス、OS、ブラウザ、認証結果(成功/失敗)、条件付きアクセスの評価結果など、詳細な情報が含まれます [2]。これは、不正なサインイン試行の検知、条件付きアクセスポリシーの効果測定、ユーザーエクスペリエンスのトラブルシューティングに役立ちます。サインインログには、対話型、非対話型、サービスプリンシパル、マネージドIDのサインインタイプがあります。
アーキテクチャ図
以下のフローチャートは、Microsoft Entra IDからログを収集し、分析、監視、セキュリティ強化を行う一般的なアーキテクチャを示しています。
flowchart TD
subgraph ID管理
A["Microsoft Entra ID"]
H["ユーザー認証"] --> A;
I["管理者操作"] --> A;
end
A --> |監査ログ & サインインログ| B("診断設定");
B --> |ログ転送| C["Azure Log Analytics ワークスペース"];
subgraph 監視・分析
C --> |KQLクエリ & アラート| D["Azure Monitor"];
D --> |監視チーム| F{"セキュリティ運用"};
end
subgraph SIEM/SOAR
C --> |脅威検出 & 自動応答| E["Microsoft Sentinel"];
E --> |セキュリティ担当者| F;
end
F --> |ポリシー強化/対応| G["セキュリティ改善"];
H -.-> |監視対象| D;
I -.-> |監視対象| D;
H -.-> |脅威分析| E;
I -.-> |脅威分析| E;
解説:
Microsoft Entra ID (A): ユーザー認証 (H) や管理者操作 (I) によって監査ログやサインインログを生成します。
診断設定 (B): Microsoft Entra IDから生成されるこれらのログを、指定された宛先に転送するための設定です [3]。
Azure Log Analytics ワークスペース (C): 診断設定によって転送されたログデータを集約、保存、インデックス化する中心的なリポジトリです。Kusto Query Language (KQL) を用いて高度な分析が可能です。
Azure Monitor (D): Log Analyticsワークスペースに保存されたデータに対し、カスタムクエリ、アラート、ダッシュボード(Azure Workbook)を作成し、監視チームがリアルタイムで状況を把握できるようにします。
Microsoft Sentinel (E): SIEM/SOARソリューションとして、Log Analyticsワークスペースからログデータを取り込み、機械学習を用いた脅威検出、インシデント管理、自動化された応答プレイブックを提供し、セキュリティ担当者の運用を支援します [5]。
セキュリティ運用 (F) & セキュリティ改善 (G): 監視チームやセキュリティ担当者が分析結果に基づき、セキュリティポリシーの強化やインシデント対応を行います。
設定手順
Microsoft Entra IDの監査ログとサインインログをLog Analyticsワークスペースに転送する手順をPowerShellまたはAzure CLIで示します。
1. Log Analytics ワークスペースの作成
まだ作成していない場合は、Log Analyticsワークスペースを作成します。
(既存のワークスペースを使用する場合はこの手順は不要です。)
# Log Analyticsワークスペースの作成 (PowerShell)
$resourceGroup = "your-resource-group"
$workspaceName = "your-log-analytics-workspace"
$location = "japaneast" # または任意のリージョン
New-AzResourceGroup -Name $resourceGroup -Location $location
New-AzOperationalInsightsWorkspace -ResourceGroupName $resourceGroup -Name $workspaceName -Location $location
# Azure CLIの場合
# az group create --name $resourceGroup --location $location
# az monitor log-analytics workspace create --resource-group $resourceGroup --name $workspaceName --location $location
2. Microsoft Entra IDの診断設定の構成
監査ログとサインインログをLog Analyticsワークスペースに転送するように設定します。Microsoft Entra IDの診断設定はテナント全体に適用されます。
# Microsoft Entra ID 診断設定の構成 (PowerShell)
# サブスクリプションID、Log AnalyticsワークスペースのリソースIDを事前に取得
$subscriptionId = (Get-AzContext).Subscription.Id
$logAnalyticsWorkspaceId = "/subscriptions/$subscriptionId/resourcegroups/$resourceGroup/providers/Microsoft.OperationalInsights/workspaces/$workspaceName"
$categories = @(
"AuditLogs",
"SignInLogs",
"NonInteractiveUserSignInLogs",
"ServicePrincipalSignInLogs",
"ManagedIdentitySignInLogs",
"ProvisioningLogs",
"RiskyUsers",
"UserRiskEvents"
)
# 診断設定の名前を定義
$settingName = "SendEntraLogsToLogAnalytics"
# 既存の診断設定がある場合は、まず削除してから再作成することも検討
# Get-AzDiagnosticSetting -Name $settingName -ResourceId "/providers/Microsoft.Aad/diagnosticSettings" | Remove-AzDiagnosticSetting -Force
foreach ($category in $categories) {
New-AzDiagnosticSetting `
-Name "$settingName-$category" `
-ResourceId "/providers/Microsoft.Aad/diagnosticSettings" `
-LogCategory $category `
-WorkspaceId $logAnalyticsWorkspaceId `
-Enabled $true `
-RetentionPolicyDays 0 ` # Log Analytics側で保持期間を管理するため0を設定
-RetentionPolicyEnabled $false
}
Write-Host "Microsoft Entra IDの診断設定が完了しました。"
Write-Host "ログはLog Analyticsワークスペース '$workspaceName' に転送されます。"
# Azure CLIの場合
# log_analytics_workspace_id=$(az monitor log-analytics workspace show --resource-group $resourceGroup --name $workspaceName --query id -o tsv)
#
# categories=(
# "AuditLogs"
# "SignInLogs"
# "NonInteractiveUserSignInLogs"
# "ServicePrincipalSignInLogs"
# "ManagedIdentitySignInLogs"
# "ProvisioningLogs"
# "RiskyUsers"
# "UserRiskEvents"
# )
#
# setting_name="SendEntraLogsToLogAnalytics"
#
# for category in "${categories[@]}"; do
# az monitor diagnostic-settings create \
# --name "${setting_name}-${category}" \
# --resource "/providers/Microsoft.Aad/diagnosticSettings" \
# --logs "[{category: $category, enabled: true, retentionPolicy: {enabled: false, days: 0}}]" \
# --workspace "$log_analytics_workspace_id"
# done
#
# echo "Microsoft Entra IDの診断設定が完了しました。"
# echo "ログはLog Analyticsワークspace '$workspaceName' に転送されます。"
注意点: Microsoft Entra IDの診断設定は、リソースIDが /providers/Microsoft.Aad/diagnosticSettings となる特殊なグローバル設定です。カテゴリごとに個別の診断設定を作成するか、または一つの設定で複数のカテゴリをカバーする方法があります。上記PowerShellスクリプトはカテゴリごとに設定を作成しています。
運用監視
Log Analyticsワークスペースにログデータが収集されたら、KQL (Kusto Query Language) を使用して分析し、監視を運用します。
KQLクエリ例
最近の失敗したサインイン試行:
SigninLogs
| where ResultType != "0" // 0は成功を示す
| where TimeGenerated > ago(1h)
| project TimeGenerated, UserDisplayName, UserPrincipalName, IPAddress, DeviceDetail.displayName, ConditionalAccessPolicies.result
| sort by TimeGenerated desc
管理者ロールの変更監査:
AuditLogs
| where Category == "RoleManagement"
| where ActivityDisplayName contains "add member to role" or ActivityDisplayName contains "remove member from role"
| project TimeGenerated, InitiatedBy.user.userPrincipalName, TargetResources[0].displayName, TargetResources[0].type, ActivityDisplayName
| sort by TimeGenerated desc
アラートとダッシュボード
Azure Monitorのアラート機能を利用して、特定の条件(例: 連続するサインイン失敗、特定の管理者ロール変更)が満たされた場合に通知をトリガーできます。また、Azure WorkbookやAzure Dashboardsを活用し、主要なセキュリティ指標やログの傾向を視覚的に表示することで、運用チームの監視効率を向上させます。
可用性・SLA・バックアップ/DR
Log AnalyticsワークスペースはAzureの管理サービスであり、高い可用性とSLA(99.9%)が提供されます [4]。ログデータは自動的にバックアップされ、地理的なレプリケーションやゾーン冗長性も選択可能です。ユーザー自身が明示的にバックアップ操作を行う必要はありませんが、長期保持ポリシーは適切に設定する必要があります。
セキュリティ
Microsoft Entra IDのログ監視は、セキュリティ体制を強化するための重要な要素です。
アイデンティティと権限境界
ロールベースのアクセス制御 (RBAC): Log AnalyticsワークスペースやMicrosoft Entra IDのログへのアクセスは、最小特権の原則に基づいて厳密に管理します。たとえば、ログの閲覧には「レポートリーダー」や「セキュリティリーダー」ロール、診断設定の構成には「監視共同作成者」ロールを付与します [6]。
条件付きアクセス (CA): Microsoft Entra ID P1/P2ライセンスで利用可能な条件付きアクセスは、サインインログと組み合わせて監視することで、セキュリティポリシーの効果を検証できます [8]。特に「レポート専用モード」を活用し、新しいポリシー導入前に潜在的な影響を評価することが推奨されます。
不正アクセス検知と脅威インテリジェンス
Microsoft Sentinelは、Entra IDログを含む複数のデータソースを統合し、機械学習と行動分析によって異常なサインインパターン、ブルートフォース攻撃、資格情報漏洩などを検出します。Microsoft Defender for IdentityやMicrosoft Defender for Cloudとの連携により、より広範な脅威インテリジェンスを活用できます。
コスト
Microsoft Entra IDの監視には、主にLog AnalyticsワークスペースとMicrosoft Entra IDライセンスに関連するコストが発生します。
Log Analytics コスト
Log Analyticsワークスペースのコストは、主に取り込みデータ量とデータ保持期間に基づいて発生します [4]。
Microsoft Entra ID ライセンス
Microsoft Entra ID Free: 診断設定を利用してLog Analyticsにログを転送することは可能ですが、サインインログの全詳細や一部の高度なレポート機能には制限があります。
Microsoft Entra ID P1/P2: これらのライセンスは、条件付きアクセス、Identity Protection、Privileged Identity Management (PIM) などの高度なセキュリティ機能を提供し、それらの活動に関する詳細なログも取得可能になります。監視を最大限に活用するには、P1またはP2ライセンスが推奨されます [6]。
コスト最適化戦略
データ保持期間の調整: コンプライアンス要件やセキュリティポリシーに基づき、必要な最小限の期間にログ保持期間を設定します。Log Analyticsではテーブルごとに保持期間を設定することも可能です。
コミットメントティアの利用: 予測可能なログ取り込み量がある場合、従量課金よりもコミットメントティアを選択することで、単価を抑えることができます [4]。
不要なログカテゴリの除外: 診断設定で、監視の要件に合致しないログカテゴリの転送を停止することで、データ取り込み量を削減します。
落とし穴
ライセンス要件の見落とし: 特定の高度なサインインログやPIM関連のログは、Microsoft Entra ID P1またはP2ライセンスがないと利用できない場合があります。無料版のEntra IDでは詳細な監視が制限されることを理解しておく必要があります。
ログ保持期間の設計不足: コンプライアンス要件やインシデント調査のために必要な期間、ログが保存されていないと、重要な情報が見つからない可能性があります。Log Analyticsの保持期間は事前に計画し、設定しておくべきです。
診断設定の漏れ: 新しいMicrosoft Entra IDテナントや追加されたログカテゴリに対して診断設定を構成し忘れると、重要なログデータが収集されません。
KQLスキル不足: Log Analyticsで効果的にログを分析するには、KQLの習熟が必要です。チーム内でKQLのトレーニングを実施するか、専門知識を持つリソースを確保することが重要です。
条件付きアクセスの誤設定: 条件付きアクセスポリシーは強力なセキュリティツールですが、誤設定するとユーザーがサインインできなくなる可能性があります。レポート専用モードを活用し、段階的に導入することが必須です [8]。
まとめ
Microsoft Entra IDの監査ログとサインインログの分析は、クラウド環境のセキュリティと運用管理において中心的な役割を担います。Azure Monitor Log AnalyticsとMicrosoft Sentinelを組み合わせたアーキテクチャにより、詳細なログ収集、高度な分析、脅威検出、自動化された応答が可能になります。適切なライセンス選択とコスト最適化を図りつつ、最小特権の原則に基づく権限管理とKQLスキルの向上を通じて、Microsoft Entra ID環境の監視体制を継続的に強化していくことが、現代のクラウドアーキテクトに求められる重要な課題です。
コメント