<p><!--META
{
"title": "Microsoft SentinelによるSIEM/SOAR構築:モダンセキュリティ運用の実現",
"primary_category": "クラウド>Azure",
"secondary_categories": ["セキュリティ","DevOps"],
"tags": ["MicrosoftSentinel","SIEM","SOAR","AzurePolicy","LogAnalytics","LogicApps"],
"summary": "Microsoft Sentinelを用いたSIEM/SOAR構築について、アーキテクチャ、設定、運用、セキュリティ、コスト最適化を解説します。",
"mermaid": true,
"verify_level": "L0",
"tweet_hint": {"text":"Microsoft SentinelによるSIEM/SOAR構築について、アーキテクチャ、設定、運用、セキュリティ、コスト最適化を徹底解説。モダンなセキュリティ運用を実現するためのガイドです。 #MicrosoftSentinel
#SIEM #SOAR","hashtags":["#MicrosoftSentinel","#SIEM","#SOAR"]},
"link_hints": [
"https://learn.microsoft.com/ja-jp/azure/sentinel/sentinel-release-notes",
"https://azure.microsoft.com/ja-jp/pricing/details/microsoft-sentinel/",
"https://learn.microsoft.com/ja-jp/azure/sentinel/best-practices-sentinel-deployment",
"https://learn.microsoft.com/ja-jp/azure/sentinel/roles",
"https://learn.microsoft.com/ja-jp/azure/sentinel/cost-management",
"https://learn.microsoft.com/ja-jp/azure/sentinel/automate-incident-handling-with-automation-rules",
"https://learn.microsoft.com/ja-jp/azure/sentinel/sentinel-microsoft-defender-integration"
]
}
-->
本記事は<strong>Geminiの出力をプロンプト工学で整理した業務ドラフト(未検証)</strong>です。</p>
<h1 class="wp-block-heading">Microsoft SentinelによるSIEM/SOAR構築:モダンセキュリティ運用の実現</h1>
<p>今日の複雑なサイバー脅威環境において、組織はセキュリティ運用の強化が急務となっています。Microsoft Sentinelは、Microsoftが提供するクラウドネイティブなSIEM(Security Information and Event Management)およびSOAR(Security Orchestration, Automation, and Response)ソリューションであり、膨大なデータを取り込み、脅威をインテリジェントに検出し、対応を自動化することで、セキュリティアナリストの負担を軽減し、セキュリティ体制を強化します。本記事では、Microsoft Sentinelを活用したSIEM/SOAR構築の全体像を、アーキテクチャから運用、コスト最適化まで詳細に解説します。</p>
<h2 class="wp-block-heading">1. アーキテクチャ</h2>
<p>Microsoft Sentinelは、Azureの堅牢なインフラストラクチャ上に構築されており、主要なコンポーネントとしてLog Analyticsワークスペースをデータストアとして利用します。様々なデータソースからのログを収集し、機械学習とAIを活用して脅威を分析・検出し、自動化された対応(SOAR)を実行します。</p>
<p>以下に、Microsoft Sentinelの主要なアーキテクチャコンポーネントとデータフローを示します。</p>
<div class="wp-block-merpress-mermaidjs diagram-source-mermaid"><pre class="mermaid">
graph TD
A["データソース"]|ログ生成| --> B("データコネクタ")
B|データ取り込み| --> C{"Log Analytics ワークスペース"}
C|ログデータ格納| --> D["Microsoft Sentinel"]
D|分析ルールによる検出| --> E["インシデント"]
E|オートメーションルール| --> F["SOARプレイブック (Logic Apps)"]
F|自動対応/情報収集| --> G["セキュリティアナリスト"]
G|調査/手動対応| --> E
D|脅威ハンティング| --> G
C|ワークブックによる可視化| --> G
</pre></div>
<p><strong>主要コンポーネント:</strong></p>
<ul class="wp-block-list">
<li><p><strong>データソース:</strong> Azureリソース(Azure Activity Log, Azure AD Audit Logs, Azure Firewall Logsなど)、Microsoft 365(SharePoint, Exchange, Teamsなど)、Microsoft Defender製品群(Defender for Endpoint, Identity, Cloudなど)、オンプレミス環境、他社製セキュリティソリューションなど多岐にわたります。</p></li>
<li><p><strong>データコネクタ:</strong> 各データソースからログをLog Analyticsワークスペースに取り込むための仕組みです。組み込みのコネクタやカスタムコネクタを利用します。</p></li>
<li><p><strong>Log Analyticsワークスペース:</strong> Sentinelの基盤となるデータストアであり、全てのログデータがKusto Query Language (KQL) でクエリ可能な形式で格納されます。</p></li>
<li><p><strong>Microsoft Sentinel:</strong> Log Analyticsワークスペースに格納されたログデータを活用し、脅威検出、調査、自動化機能を提供します。</p></li>
<li><p><strong>分析ルール:</strong> Log Analyticsワークスペース内のログデータに対し、脅威パターンや異常な振る舞いを検出するためのクエリを定義します。検出された場合は「アラート」を生成し、関連するアラートを自動的にグループ化して「インシデント」を作成します。</p></li>
<li><p><strong>SOARプレイブック (Logic Apps):</strong> Azure Logic Appsを基盤とし、インシデント発生時の自動応答アクション(チケット作成、ユーザー隔離、情報収集、アラート通知など)を定義します。</p></li>
<li><p><strong>オートメーションルール:</strong> 特定の条件に合致するインシデントに対して、自動的にSOARプレイブックを実行したり、インシデントのプロパティを更新したりするためのルールです[6]。</p></li>
<li><p><strong>セキュリティアナリスト:</strong> 脅威ハンティング、インシデント調査、ワークブック(ダッシュボード)による可視化を通じてセキュリティ運用を担います。</p></li>
</ul>
<h2 class="wp-block-heading">2. 設定手順</h2>
<p>Microsoft Sentinelのデプロイは、Log Analyticsワークスペースの作成とSentinelソリューションの有効化から始まります。以下に、Azure PowerShellを使用した基本的な設定手順を示します。</p>
<p><strong>前提条件:</strong></p>
<ul class="wp-block-list">
<li><p>Azureサブスクリプション</p></li>
<li><p>Azure PowerShellモジュールがインストールされていること</p></li>
</ul>
<p><strong>2.1. Log AnalyticsワークスペースとMicrosoft Sentinelのデプロイ</strong></p>
<p>まず、Log Analyticsワークスペースを作成し、その上にMicrosoft Sentinelを有効化します。</p>
<div class="codehilite">
<pre data-enlighter-language="generic"># 変数の定義
$ResourceGroupName = "Sentinel-RG"
$Location = "japaneast" # 東日本リージョン
$WorkspaceName = "SentinelWorkspace-jp"
$SentinelSolutionName = "SecurityInsights"
# リソースグループの作成(もし存在しない場合)
try {
Get-AzResourceGroup -Name $ResourceGroupName -ErrorAction Stop | Out-Null
Write-Host "Resource Group '$ResourceGroupName' already exists."
}
catch {
New-AzResourceGroup -Name $ResourceGroupName -Location $Location -ErrorAction Stop | Out-Null
Write-Host "Resource Group '$ResourceGroupName' created successfully."
}
# Log Analyticsワークスペースの作成
# SKUはPerGB2018 (従量課金) または CommitmentTier を指定可能
# データ保持期間は90日がデフォルト。必要に応じて変更可能(例: -RetentionInDays 365)
Write-Host "Creating Log Analytics Workspace '$WorkspaceName'..."
$workspace = New-AzOperationalInsightsWorkspace `
-ResourceGroupName $ResourceGroupName `
-Name $WorkspaceName `
-Location $Location `
-Sku "PerGB2018" `
-ErrorAction Stop
Write-Host "Log Analytics Workspace '$WorkspaceName' created successfully with ID: $($workspace.ResourceId)"
# Microsoft Sentinelソリューションの有効化
Write-Host "Enabling Microsoft Sentinel on workspace '$WorkspaceName'..."
New-AzResource `
-ResourceGroupName $ResourceGroupName `
-ResourceId "$($workspace.ResourceId)/providers/Microsoft.SecurityInsights/SecuritySettings/default" `
-Location $Location `
-Properties @{
"kind" = $SentinelSolutionName
} `
-ApiVersion "2023-08-01-preview" `
-Force -ErrorAction Stop
Write-Host "Microsoft Sentinel enabled successfully on workspace '$WorkspaceName'."
# 出力: SentinelワークスペースID
$sentinelWorkspaceId = (Get-AzResource -ResourceGroupName $ResourceGroupName -ResourceType "Microsoft.OperationalInsights/workspaces" -ResourceName $WorkspaceName).ResourceId
Write-Host "Microsoft Sentinel Workspace Resource ID: $sentinelWorkspaceId"
</pre>
</div>
<p><strong>コメント:</strong></p>
<ul class="wp-block-list">
<li><p><code>New-AzOperationalInsightsWorkspace</code>: Log Analyticsワークスペースを作成。<code>-Sku</code>パラメータで課金モデルを指定します。<code>PerGB2018</code>は従量課金、他にコミットメントティアSKUもあります[2]。</p></li>
<li><p><code>New-AzResource</code>: SentinelソリューションをLog Analyticsワークスペース上で有効化します。</p></li>
</ul>
<p><strong>2.2. データコネクタの有効化(例: Azure Activity Log)</strong></p>
<p>Azure Activity Logのデータコネクタを有効化し、Sentinelにアクティビティログを取り込みます。</p>
<div class="codehilite">
<pre data-enlighter-language="generic"># 前提: 上記で $sentinelWorkspaceId が取得されていること
# Azure Activity Log コネクタのIDを特定(Azure Monitor Log Analytics Data Exportルールを使用)
# Sentinelでは診断設定を通じてAzure Activity Logを取り込むのが一般的
Write-Host "Configuring Azure Activity Log to send to Log Analytics Workspace..."
# サブスクリプションレベルで診断設定を作成し、Activity LogをLog Analyticsに送信
$ActivityLogSubscriptionId = (Get-AzContext).Subscription.Id
$ActivityLogDestinationWorkspaceId = $sentinelWorkspaceId # Sentinelが有効なLog Analyticsワークスペース
New-AzDiagnosticSetting `
-Name "SendActivityLogToSentinel" `
-ResourceId "/subscriptions/$ActivityLogSubscriptionId" `
-Log AnalyticsDestinationId $ActivityLogDestinationWorkspaceId `
-Category "Action" `
-Category "Security" `
-Category "Administrative" `
-Category "ServiceHealth" `
-MetricCategory "AllMetrics" `
-Enabled $true
Write-Host "Azure Activity Log diagnostic setting created to send logs to Sentinel workspace."
Write-Host "これでSentinelのデータコネクタページでAzure Activity Logコネクタが'接続済み'と表示されます。"
</pre>
</div>
<p><strong>コメント:</strong></p>
<ul class="wp-block-list">
<li>Azure Activity Logは、サブスクリプションの診断設定を通じてLog Analyticsワークスペースに送信されます。Sentinelのデータコネクタは、このデータフローを「接続済み」として認識します。</li>
</ul>
<p><strong>2.3. 分析ルールの作成とオートメーションルールの構成</strong></p>
<p>Sentinelポータルで分析ルールを作成し、特定のインシデントタイプに対してSOARプレイブックを自動実行するオートメーションルールを設定します。例として、「Azure ADから疑わしいログインが検出されたら通知を送信する」というシナリオを想定します。</p>
<div class="codehilite">
<pre data-enlighter-language="generic"># PowerShellでの分析ルールとオートメーションルールの作成はより複雑であり、
# KQLクエリやLogic Appsの定義をJSON形式で記述し、Azure Resource Manager (ARM)
# テンプレートやAzure CLI/PowerShellの Az.SecurityInsights モジュールを通じてデプロイするのが一般的です。
# ここでは概念的な手順を示します。
# 1. 分析ルール (Analytics Rule) の作成:
# - ポータルで「構成」->「分析」->「作成」->「スケジュール済みクエリールール」を選択。
# - クエリ例: Azure AD Audit Logsから特定の失敗ログインパターンを検出するKQLクエリ。
# `SigninLogs | where ResultType != "0" and ConditionalAccessStatus == "Failure"`
# - エンティティマッピング、インシデント設定、アラートしきい値などを定義。
# - ルール名: "Suspicious Azure AD Sign-in Attempt"
# - 発表日: Microsoft Sentinelの分析ルールは頻繁に更新され、組み込みルールも追加されます。例えば、2024年7月29日にはDefender for Identity関連の機能がGAしました\[1]。
# 2. SOARプレイブック (Logic App) の作成:
# - Azure Logic Appsで「HTTP Request」トリガーを持つプレイブックを作成。
# - アクションとして、Microsoft Teamsへのメッセージ送信やチケットシステムへの登録などを設定。
# - 例えば、Teamsにインシデント名、アラート詳細、影響ユーザーなどを通知。
# 3. オートメーションルール (Automation Rule) の作成:
# - Sentinelポータルで「構成」->「オートメーション」->「作成」->「オートメーションルール」を選択。
# - ルール名: "Automate Suspicious Azure AD Sign-in Response"
# - トリガー: 「インシデントが作成されたとき」
# - 条件: 「分析ルール名が 'Suspicious Azure AD Sign-in Attempt' と等しい」
# - アクション: 「プレイブックを実行する」を選択し、作成したLogic Appを指定。
# - 発表日: オートメーションルールは2024年5月31日のドキュメントで解説されています\[6]。
</pre>
</div>
<p><strong>コメント:</strong></p>
<ul class="wp-block-list">
<li>IaC (Infrastructure as Code) を採用する場合、分析ルール、プレイブック、オートメーションルールはARMテンプレートやBicepで管理することで、バージョン管理と自動デプロイが可能です。</li>
</ul>
<h2 class="wp-block-heading">3. 運用監視</h2>
<p>Microsoft Sentinelは、日々のセキュリティ運用を効率化するための様々な機能を提供します。</p>
<ul class="wp-block-list">
<li><p><strong>インシデント管理:</strong> 検出されたアラートを相関分析し、インシデントとして一元的に管理します。セキュリティアナリストは、インシデントの詳細を確認し、調査、トリアージ、対応を行います。</p></li>
<li><p><strong>脅威ハンティング:</strong> KQLを使用してLog Analyticsワークスペース内の生ログデータを能動的に探索し、既知の脅威シグネチャに引っかからない未知の脅威や異常な活動を発見します。</p></li>
<li><p><strong>ワークブック:</strong> カスタマイズ可能なダッシュボード機能で、Log AnalyticsワークスペースのKQLクエリ結果を視覚的に表示し、セキュリティ状況の概要把握や特定のメトリックの監視に利用できます。</p></li>
<li><p><strong>可視性:</strong> Microsoft Defender XDR (旧Microsoft 365 Defender) との統合により、Defender XDRのインシデントとアラートをSentinelにシームレスに取り込み、セキュリティ運用を一元化できます[7]。</p></li>
</ul>
<p><strong>SLA、バックアップ、DRの考慮事項:</strong></p>
<ul class="wp-block-list">
<li><p><strong>SLA:</strong> Microsoft Sentinel自体に直接的なSLAは明示されていませんが、基盤となるLog AnalyticsのSLAに準じます。Log AnalyticsのSLAはデータインジェストとクエリ実行の可用性に関するもので、例えばデータインジェストで99.9%、クエリ実行で99.9%の月間稼働率が提供されます。</p></li>
<li><p><strong>バックアップ:</strong> Log Analyticsワークスペースに収集されたデータは、設定されたデータ保持期間に応じて自動的に管理されます。特別な「バックアップ」機能は不要ですが、長期保存が必要なデータは「アーカイブログ」機能を利用することで、低コストで最大7年間保存可能です[2]。</p></li>
<li><p><strong>DR (Disaster Recovery):</strong> Log Analyticsワークスペースはリージョンリソースです。地域的な災害に備える場合、複数のリージョンにワークスペースを展開し、ログデータを複製するなどの設計が必要です。ただし、ほとんどの組織では単一リージョンのデプロイで十分であり、Log Analyticsの高可用性機能に依存します。</p></li>
</ul>
<h2 class="wp-block-heading">4. セキュリティ</h2>
<p>Microsoft Sentinelにおけるセキュリティは、Azure Active Directory (現 Microsoft Entra ID) を中心としたアイデンティティとアクセス管理、およびロールベースのアクセス制御 (RBAC) によって確立されます。</p>
<ul class="wp-block-list">
<li><p><strong>Microsoft Entra ID:</strong> ユーザー、グループ、サービスプリンシパルの認証と認可の基盤となります。</p></li>
<li><p><strong>RBAC (Role-Based Access Control):</strong></p>
<ul>
<li><p><strong>Log Analytics RBAC:</strong> Log Analyticsワークスペースへのアクセスを制御します。例えば、「Log Analytics閲覧者」はログデータの参照のみ、「Log Analytics共同作成者」はデータソースの追加などの設定変更が可能です。</p></li>
<li><p><strong>Microsoft Sentinel RBAC:</strong> Sentinelの特定の機能に対するアクセスを制御します[4]。</p>
<ul>
<li><p><code>Microsoft Sentinel 閲覧者 (Reader)</code>: インシデント、データ、ワークブックなどを閲覧可能。</p></li>
<li><p><code>Microsoft Sentinel レスポンダー (Responder)</code>: 閲覧者に加え、インシデントの管理(割り当て、状態変更など)が可能。</p></li>
<li><p><code>Microsoft Sentinel 共同作成者 (Contributor)</code>: Sentinelの全ての管理操作が可能(分析ルール、プレイブック、コネクタ設定など)。</p></li>
<li><p><code>Microsoft Sentinel オートメーション共同作成者 (Automation Contributor)</code>: プレイブックの割り当てなど、SOAR機能の管理に特化。</p></li>
</ul></li>
<li><p><strong>組み合わせ:</strong> セキュリティアナリストにはLog Analytics閲覧者ロールとMicrosoft Sentinelレスポンダーロールを組み合わせるなど、最小権限の原則に基づいて割り当てます。</p></li>
</ul></li>
<li><p><strong>条件付きアクセス (Conditional Access):</strong> Entra IDの機能であり、特定の条件(デバイスの状態、場所、アプリケーションなど)に基づいてSentinelポータルへのアクセスを制限できます。例えば、マネージドデバイスからのアクセスのみを許可する、多要素認証 (MFA) を必須とする、といったポリシーを適用できます。</p></li>
<li><p><strong>Privileged Identity Management (PIM):</strong> 昇格された権限(例: Microsoft Sentinel共同作成者)をJust-In-Time (JIT) で付与し、特権アクセスの期間を制限することで、権限の悪用リスクを低減します。</p></li>
<li><p><strong>Microsoft Defender連携:</strong> Microsoft Defender for Cloud、Defender for Endpoint、Defender for Identity、Defender for Cloud AppsなどのMicrosoft Defender製品群と密に連携し、これらの製品で検出されたアラートやインシデントをSentinelに集約することで、エンドツーエンドの脅威検出・対応を強化します[7]。</p></li>
</ul>
<h2 class="wp-block-heading">5. コスト最適化</h2>
<p>Microsoft Sentinelのコストは主にLog Analyticsワークスペースへのデータ取り込み量と、Sentinel固有機能の使用料によって決定されます[2]。コストを最適化するための戦略を以下に示します。</p>
<ul class="wp-block-list">
<li><p><strong>コミットメントティアの利用:</strong> Log Analyticsワークスペースの課金は、通常、取り込みデータ量(GB/日)に基づいた従量課金(PerGB2018)ですが、一定量のデータ取り込みをコミットする「コミットメントティア」を選択することで、従量課金よりも大幅な割引(最大65%)が適用されます[5]。データ量の予測に基づき、適切なティアを選択することが重要です。</p></li>
<li><p><strong>データ保持期間の最適化:</strong> Log Analyticsワークスペースのデータ保持期間は、デフォルトで90日です。監査要件やコンプライアンス要件に応じて、必要な期間だけデータを保持するように設定を調整します。長期間の保持が必要な場合でも、頻繁にアクセスしないデータは「アーカイブログ」に移行することで、大幅にコストを削減できます[2]。</p></li>
<li><p><strong>Basic Logsの活用:</strong> セキュリティ分析やアラートに直接は必要ないが、長期的なログ監査やデバッグ目的で保持したい低価値なログデータには、「Basic Logs」を適用できます。Basic Logsはフル機能の分析ログよりも取り込みコストが大幅に低減されますが、クエリのコストや機能に制限があります[2]。</p></li>
<li><p><strong>不要なログのフィルタリングと除外:</strong> すべてのログがSentinelで分析する必要があるわけではありません。データコネクタの設定で、不要なログタイプや特定のフィールドをフィルタリングまたは除外することで、Log Analyticsワークスペースへの取り込みデータ量を削減し、コストを抑えることができます[5]。</p></li>
<li><p><strong>Scheduled Query Rulesの効率化:</strong> 分析ルールに使用するKQLクエリを最適化し、不必要なリソース消費を避けることで、Sentinelの分析コストを最適化できます。</p></li>
</ul>
<h2 class="wp-block-heading">6. 落とし穴と対策</h2>
<p>Microsoft Sentinelの導入・運用にはいくつかの落とし穴があり、適切な対策が必要です。</p>
<ul class="wp-block-list">
<li><p><strong>データ量の急増とコスト超過:</strong> 予期せぬデータ量の急増は、コミットメントティアの範囲を超えてコストが跳ね上がる原因となります。</p>
<ul>
<li><strong>対策:</strong> 定期的なデータ取り込み量の監視(Log AnalyticsのワークブックやAzure Monitorで監視)、コミットメントティアの見直し、不要なログのフィルタリングと除外を徹底します。</li>
</ul></li>
<li><p><strong>誤検知(False Positive)の多発:</strong> 不適切に設定された分析ルールは、大量の誤検知アラートを生成し、アナリストの疲弊と真の脅威の見落としにつながります。</p>
<ul>
<li><strong>対策:</strong> 分析ルールは慎重にチューニングし、実際の環境データでテストします。異常検知モデルの調整、ホワイトリストの活用、エンティティマッピングの精度向上を行います。</li>
</ul></li>
<li><p><strong>SOARプレイブックの複雑化:</strong> 過度に複雑なLogic Appsは、管理が難しく、デバッグコストが高くなります。</p>
<ul>
<li><strong>対策:</strong> プレイブックはモジュール化し、シンプルに保ちます。共通処理は共有リソースとして再利用し、バージョン管理を徹底します。</li>
</ul></li>
<li><p><strong>権限管理の複雑化:</strong> Sentinel固有のロールとLog Analyticsのロールが組み合わさることで、権限管理が複雑になることがあります。</p>
<ul>
<li><strong>対策:</strong> 最小権限の原則に基づき、必要なロールのみを割り当てます。Entra IDグループとPIMを活用し、ロール割り当てを簡素化・自動化します。</li>
</ul></li>
</ul>
<h2 class="wp-block-heading">7. まとめ</h2>
<p>Microsoft Sentinelは、クラウドネイティブなSIEM/SOARソリューションとして、組織のセキュリティ運用を大きく変革する可能性を秘めています。多岐にわたるデータソースからのログを収集・分析し、脅威の検出から自動対応までを一貫して提供することで、セキュリティアナリストの負担を軽減し、インシデント対応時間を短縮します。</p>
<p>本記事で解説したアーキテクチャ、設定手順、運用監視、セキュリティ対策、コスト最適化のプラクティスを適用することで、効果的かつ効率的なMicrosoft Sentinel環境を構築し、現代のサイバー脅威に対するレジリエンスを高めることができるでしょう。継続的な監視とチューニングを通じて、常に変化する脅威ランドスケープに対応できるモダンなセキュリティ運用体制を実現してください。</p>
本記事はGeminiの出力をプロンプト工学で整理した業務ドラフト(未検証)です。
Microsoft SentinelによるSIEM/SOAR構築:モダンセキュリティ運用の実現
今日の複雑なサイバー脅威環境において、組織はセキュリティ運用の強化が急務となっています。Microsoft Sentinelは、Microsoftが提供するクラウドネイティブなSIEM(Security Information and Event Management)およびSOAR(Security Orchestration, Automation, and Response)ソリューションであり、膨大なデータを取り込み、脅威をインテリジェントに検出し、対応を自動化することで、セキュリティアナリストの負担を軽減し、セキュリティ体制を強化します。本記事では、Microsoft Sentinelを活用したSIEM/SOAR構築の全体像を、アーキテクチャから運用、コスト最適化まで詳細に解説します。
1. アーキテクチャ
Microsoft Sentinelは、Azureの堅牢なインフラストラクチャ上に構築されており、主要なコンポーネントとしてLog Analyticsワークスペースをデータストアとして利用します。様々なデータソースからのログを収集し、機械学習とAIを活用して脅威を分析・検出し、自動化された対応(SOAR)を実行します。
以下に、Microsoft Sentinelの主要なアーキテクチャコンポーネントとデータフローを示します。
graph TD
A["データソース"]|ログ生成| --> B("データコネクタ")
B|データ取り込み| --> C{"Log Analytics ワークスペース"}
C|ログデータ格納| --> D["Microsoft Sentinel"]
D|分析ルールによる検出| --> E["インシデント"]
E|オートメーションルール| --> F["SOARプレイブック (Logic Apps)"]
F|自動対応/情報収集| --> G["セキュリティアナリスト"]
G|調査/手動対応| --> E
D|脅威ハンティング| --> G
C|ワークブックによる可視化| --> G
主要コンポーネント:
データソース: Azureリソース(Azure Activity Log, Azure AD Audit Logs, Azure Firewall Logsなど)、Microsoft 365(SharePoint, Exchange, Teamsなど)、Microsoft Defender製品群(Defender for Endpoint, Identity, Cloudなど)、オンプレミス環境、他社製セキュリティソリューションなど多岐にわたります。
データコネクタ: 各データソースからログをLog Analyticsワークスペースに取り込むための仕組みです。組み込みのコネクタやカスタムコネクタを利用します。
Log Analyticsワークスペース: Sentinelの基盤となるデータストアであり、全てのログデータがKusto Query Language (KQL) でクエリ可能な形式で格納されます。
Microsoft Sentinel: Log Analyticsワークスペースに格納されたログデータを活用し、脅威検出、調査、自動化機能を提供します。
分析ルール: Log Analyticsワークスペース内のログデータに対し、脅威パターンや異常な振る舞いを検出するためのクエリを定義します。検出された場合は「アラート」を生成し、関連するアラートを自動的にグループ化して「インシデント」を作成します。
SOARプレイブック (Logic Apps): Azure Logic Appsを基盤とし、インシデント発生時の自動応答アクション(チケット作成、ユーザー隔離、情報収集、アラート通知など)を定義します。
オートメーションルール: 特定の条件に合致するインシデントに対して、自動的にSOARプレイブックを実行したり、インシデントのプロパティを更新したりするためのルールです[6]。
セキュリティアナリスト: 脅威ハンティング、インシデント調査、ワークブック(ダッシュボード)による可視化を通じてセキュリティ運用を担います。
2. 設定手順
Microsoft Sentinelのデプロイは、Log Analyticsワークスペースの作成とSentinelソリューションの有効化から始まります。以下に、Azure PowerShellを使用した基本的な設定手順を示します。
前提条件:
2.1. Log AnalyticsワークスペースとMicrosoft Sentinelのデプロイ
まず、Log Analyticsワークスペースを作成し、その上にMicrosoft Sentinelを有効化します。
# 変数の定義
$ResourceGroupName = "Sentinel-RG"
$Location = "japaneast" # 東日本リージョン
$WorkspaceName = "SentinelWorkspace-jp"
$SentinelSolutionName = "SecurityInsights"
# リソースグループの作成(もし存在しない場合)
try {
Get-AzResourceGroup -Name $ResourceGroupName -ErrorAction Stop | Out-Null
Write-Host "Resource Group '$ResourceGroupName' already exists."
}
catch {
New-AzResourceGroup -Name $ResourceGroupName -Location $Location -ErrorAction Stop | Out-Null
Write-Host "Resource Group '$ResourceGroupName' created successfully."
}
# Log Analyticsワークスペースの作成
# SKUはPerGB2018 (従量課金) または CommitmentTier を指定可能
# データ保持期間は90日がデフォルト。必要に応じて変更可能(例: -RetentionInDays 365)
Write-Host "Creating Log Analytics Workspace '$WorkspaceName'..."
$workspace = New-AzOperationalInsightsWorkspace `
-ResourceGroupName $ResourceGroupName `
-Name $WorkspaceName `
-Location $Location `
-Sku "PerGB2018" `
-ErrorAction Stop
Write-Host "Log Analytics Workspace '$WorkspaceName' created successfully with ID: $($workspace.ResourceId)"
# Microsoft Sentinelソリューションの有効化
Write-Host "Enabling Microsoft Sentinel on workspace '$WorkspaceName'..."
New-AzResource `
-ResourceGroupName $ResourceGroupName `
-ResourceId "$($workspace.ResourceId)/providers/Microsoft.SecurityInsights/SecuritySettings/default" `
-Location $Location `
-Properties @{
"kind" = $SentinelSolutionName
} `
-ApiVersion "2023-08-01-preview" `
-Force -ErrorAction Stop
Write-Host "Microsoft Sentinel enabled successfully on workspace '$WorkspaceName'."
# 出力: SentinelワークスペースID
$sentinelWorkspaceId = (Get-AzResource -ResourceGroupName $ResourceGroupName -ResourceType "Microsoft.OperationalInsights/workspaces" -ResourceName $WorkspaceName).ResourceId
Write-Host "Microsoft Sentinel Workspace Resource ID: $sentinelWorkspaceId"
コメント:
2.2. データコネクタの有効化(例: Azure Activity Log)
Azure Activity Logのデータコネクタを有効化し、Sentinelにアクティビティログを取り込みます。
# 前提: 上記で $sentinelWorkspaceId が取得されていること
# Azure Activity Log コネクタのIDを特定(Azure Monitor Log Analytics Data Exportルールを使用)
# Sentinelでは診断設定を通じてAzure Activity Logを取り込むのが一般的
Write-Host "Configuring Azure Activity Log to send to Log Analytics Workspace..."
# サブスクリプションレベルで診断設定を作成し、Activity LogをLog Analyticsに送信
$ActivityLogSubscriptionId = (Get-AzContext).Subscription.Id
$ActivityLogDestinationWorkspaceId = $sentinelWorkspaceId # Sentinelが有効なLog Analyticsワークスペース
New-AzDiagnosticSetting `
-Name "SendActivityLogToSentinel" `
-ResourceId "/subscriptions/$ActivityLogSubscriptionId" `
-Log AnalyticsDestinationId $ActivityLogDestinationWorkspaceId `
-Category "Action" `
-Category "Security" `
-Category "Administrative" `
-Category "ServiceHealth" `
-MetricCategory "AllMetrics" `
-Enabled $true
Write-Host "Azure Activity Log diagnostic setting created to send logs to Sentinel workspace."
Write-Host "これでSentinelのデータコネクタページでAzure Activity Logコネクタが'接続済み'と表示されます。"
コメント:
- Azure Activity Logは、サブスクリプションの診断設定を通じてLog Analyticsワークスペースに送信されます。Sentinelのデータコネクタは、このデータフローを「接続済み」として認識します。
2.3. 分析ルールの作成とオートメーションルールの構成
Sentinelポータルで分析ルールを作成し、特定のインシデントタイプに対してSOARプレイブックを自動実行するオートメーションルールを設定します。例として、「Azure ADから疑わしいログインが検出されたら通知を送信する」というシナリオを想定します。
# PowerShellでの分析ルールとオートメーションルールの作成はより複雑であり、
# KQLクエリやLogic Appsの定義をJSON形式で記述し、Azure Resource Manager (ARM)
# テンプレートやAzure CLI/PowerShellの Az.SecurityInsights モジュールを通じてデプロイするのが一般的です。
# ここでは概念的な手順を示します。
# 1. 分析ルール (Analytics Rule) の作成:
# - ポータルで「構成」->「分析」->「作成」->「スケジュール済みクエリールール」を選択。
# - クエリ例: Azure AD Audit Logsから特定の失敗ログインパターンを検出するKQLクエリ。
# `SigninLogs | where ResultType != "0" and ConditionalAccessStatus == "Failure"`
# - エンティティマッピング、インシデント設定、アラートしきい値などを定義。
# - ルール名: "Suspicious Azure AD Sign-in Attempt"
# - 発表日: Microsoft Sentinelの分析ルールは頻繁に更新され、組み込みルールも追加されます。例えば、2024年7月29日にはDefender for Identity関連の機能がGAしました\[1]。
# 2. SOARプレイブック (Logic App) の作成:
# - Azure Logic Appsで「HTTP Request」トリガーを持つプレイブックを作成。
# - アクションとして、Microsoft Teamsへのメッセージ送信やチケットシステムへの登録などを設定。
# - 例えば、Teamsにインシデント名、アラート詳細、影響ユーザーなどを通知。
# 3. オートメーションルール (Automation Rule) の作成:
# - Sentinelポータルで「構成」->「オートメーション」->「作成」->「オートメーションルール」を選択。
# - ルール名: "Automate Suspicious Azure AD Sign-in Response"
# - トリガー: 「インシデントが作成されたとき」
# - 条件: 「分析ルール名が 'Suspicious Azure AD Sign-in Attempt' と等しい」
# - アクション: 「プレイブックを実行する」を選択し、作成したLogic Appを指定。
# - 発表日: オートメーションルールは2024年5月31日のドキュメントで解説されています\[6]。
コメント:
- IaC (Infrastructure as Code) を採用する場合、分析ルール、プレイブック、オートメーションルールはARMテンプレートやBicepで管理することで、バージョン管理と自動デプロイが可能です。
3. 運用監視
Microsoft Sentinelは、日々のセキュリティ運用を効率化するための様々な機能を提供します。
インシデント管理: 検出されたアラートを相関分析し、インシデントとして一元的に管理します。セキュリティアナリストは、インシデントの詳細を確認し、調査、トリアージ、対応を行います。
脅威ハンティング: KQLを使用してLog Analyticsワークスペース内の生ログデータを能動的に探索し、既知の脅威シグネチャに引っかからない未知の脅威や異常な活動を発見します。
ワークブック: カスタマイズ可能なダッシュボード機能で、Log AnalyticsワークスペースのKQLクエリ結果を視覚的に表示し、セキュリティ状況の概要把握や特定のメトリックの監視に利用できます。
可視性: Microsoft Defender XDR (旧Microsoft 365 Defender) との統合により、Defender XDRのインシデントとアラートをSentinelにシームレスに取り込み、セキュリティ運用を一元化できます[7]。
SLA、バックアップ、DRの考慮事項:
SLA: Microsoft Sentinel自体に直接的なSLAは明示されていませんが、基盤となるLog AnalyticsのSLAに準じます。Log AnalyticsのSLAはデータインジェストとクエリ実行の可用性に関するもので、例えばデータインジェストで99.9%、クエリ実行で99.9%の月間稼働率が提供されます。
バックアップ: Log Analyticsワークスペースに収集されたデータは、設定されたデータ保持期間に応じて自動的に管理されます。特別な「バックアップ」機能は不要ですが、長期保存が必要なデータは「アーカイブログ」機能を利用することで、低コストで最大7年間保存可能です[2]。
DR (Disaster Recovery): Log Analyticsワークスペースはリージョンリソースです。地域的な災害に備える場合、複数のリージョンにワークスペースを展開し、ログデータを複製するなどの設計が必要です。ただし、ほとんどの組織では単一リージョンのデプロイで十分であり、Log Analyticsの高可用性機能に依存します。
4. セキュリティ
Microsoft Sentinelにおけるセキュリティは、Azure Active Directory (現 Microsoft Entra ID) を中心としたアイデンティティとアクセス管理、およびロールベースのアクセス制御 (RBAC) によって確立されます。
Microsoft Entra ID: ユーザー、グループ、サービスプリンシパルの認証と認可の基盤となります。
RBAC (Role-Based Access Control):
Log Analytics RBAC: Log Analyticsワークスペースへのアクセスを制御します。例えば、「Log Analytics閲覧者」はログデータの参照のみ、「Log Analytics共同作成者」はデータソースの追加などの設定変更が可能です。
Microsoft Sentinel RBAC: Sentinelの特定の機能に対するアクセスを制御します[4]。
Microsoft Sentinel 閲覧者 (Reader): インシデント、データ、ワークブックなどを閲覧可能。
Microsoft Sentinel レスポンダー (Responder): 閲覧者に加え、インシデントの管理(割り当て、状態変更など)が可能。
Microsoft Sentinel 共同作成者 (Contributor): Sentinelの全ての管理操作が可能(分析ルール、プレイブック、コネクタ設定など)。
Microsoft Sentinel オートメーション共同作成者 (Automation Contributor): プレイブックの割り当てなど、SOAR機能の管理に特化。
組み合わせ: セキュリティアナリストにはLog Analytics閲覧者ロールとMicrosoft Sentinelレスポンダーロールを組み合わせるなど、最小権限の原則に基づいて割り当てます。
条件付きアクセス (Conditional Access): Entra IDの機能であり、特定の条件(デバイスの状態、場所、アプリケーションなど)に基づいてSentinelポータルへのアクセスを制限できます。例えば、マネージドデバイスからのアクセスのみを許可する、多要素認証 (MFA) を必須とする、といったポリシーを適用できます。
Privileged Identity Management (PIM): 昇格された権限(例: Microsoft Sentinel共同作成者)をJust-In-Time (JIT) で付与し、特権アクセスの期間を制限することで、権限の悪用リスクを低減します。
Microsoft Defender連携: Microsoft Defender for Cloud、Defender for Endpoint、Defender for Identity、Defender for Cloud AppsなどのMicrosoft Defender製品群と密に連携し、これらの製品で検出されたアラートやインシデントをSentinelに集約することで、エンドツーエンドの脅威検出・対応を強化します[7]。
5. コスト最適化
Microsoft Sentinelのコストは主にLog Analyticsワークスペースへのデータ取り込み量と、Sentinel固有機能の使用料によって決定されます[2]。コストを最適化するための戦略を以下に示します。
コミットメントティアの利用: Log Analyticsワークスペースの課金は、通常、取り込みデータ量(GB/日)に基づいた従量課金(PerGB2018)ですが、一定量のデータ取り込みをコミットする「コミットメントティア」を選択することで、従量課金よりも大幅な割引(最大65%)が適用されます[5]。データ量の予測に基づき、適切なティアを選択することが重要です。
データ保持期間の最適化: Log Analyticsワークスペースのデータ保持期間は、デフォルトで90日です。監査要件やコンプライアンス要件に応じて、必要な期間だけデータを保持するように設定を調整します。長期間の保持が必要な場合でも、頻繁にアクセスしないデータは「アーカイブログ」に移行することで、大幅にコストを削減できます[2]。
Basic Logsの活用: セキュリティ分析やアラートに直接は必要ないが、長期的なログ監査やデバッグ目的で保持したい低価値なログデータには、「Basic Logs」を適用できます。Basic Logsはフル機能の分析ログよりも取り込みコストが大幅に低減されますが、クエリのコストや機能に制限があります[2]。
不要なログのフィルタリングと除外: すべてのログがSentinelで分析する必要があるわけではありません。データコネクタの設定で、不要なログタイプや特定のフィールドをフィルタリングまたは除外することで、Log Analyticsワークスペースへの取り込みデータ量を削減し、コストを抑えることができます[5]。
Scheduled Query Rulesの効率化: 分析ルールに使用するKQLクエリを最適化し、不必要なリソース消費を避けることで、Sentinelの分析コストを最適化できます。
6. 落とし穴と対策
Microsoft Sentinelの導入・運用にはいくつかの落とし穴があり、適切な対策が必要です。
データ量の急増とコスト超過: 予期せぬデータ量の急増は、コミットメントティアの範囲を超えてコストが跳ね上がる原因となります。
- 対策: 定期的なデータ取り込み量の監視(Log AnalyticsのワークブックやAzure Monitorで監視)、コミットメントティアの見直し、不要なログのフィルタリングと除外を徹底します。
誤検知(False Positive)の多発: 不適切に設定された分析ルールは、大量の誤検知アラートを生成し、アナリストの疲弊と真の脅威の見落としにつながります。
- 対策: 分析ルールは慎重にチューニングし、実際の環境データでテストします。異常検知モデルの調整、ホワイトリストの活用、エンティティマッピングの精度向上を行います。
SOARプレイブックの複雑化: 過度に複雑なLogic Appsは、管理が難しく、デバッグコストが高くなります。
- 対策: プレイブックはモジュール化し、シンプルに保ちます。共通処理は共有リソースとして再利用し、バージョン管理を徹底します。
権限管理の複雑化: Sentinel固有のロールとLog Analyticsのロールが組み合わさることで、権限管理が複雑になることがあります。
- 対策: 最小権限の原則に基づき、必要なロールのみを割り当てます。Entra IDグループとPIMを活用し、ロール割り当てを簡素化・自動化します。
7. まとめ
Microsoft Sentinelは、クラウドネイティブなSIEM/SOARソリューションとして、組織のセキュリティ運用を大きく変革する可能性を秘めています。多岐にわたるデータソースからのログを収集・分析し、脅威の検出から自動対応までを一貫して提供することで、セキュリティアナリストの負担を軽減し、インシデント対応時間を短縮します。
本記事で解説したアーキテクチャ、設定手順、運用監視、セキュリティ対策、コスト最適化のプラクティスを適用することで、効果的かつ効率的なMicrosoft Sentinel環境を構築し、現代のサイバー脅威に対するレジリエンスを高めることができるでしょう。継続的な監視とチューニングを通じて、常に変化する脅威ランドスケープに対応できるモダンなセキュリティ運用体制を実現してください。
コメント