top of page

データ侵害通知・インシデントレスポンス(技術的側面)

  • 山崎行政書士事務所
  • 9月12日
  • 読了時間: 7分
ree

— Azure での検知・解析・封じ込め・証拠保全を“パラメータ”で実装する —

著者:山崎行政書士事務所 クラウド法務・アーキテクチャ支援チーム

発行日:2025-09-12


要旨(Abstract)

本稿は、Azure 環境におけるデータ侵害の検知・ログ分析・フォレンジック・自動応答・証跡化を、具体的な設定値(Retention、ポリシー、アラート閾値、テーブル名、KQL)まで掘り下げて提示する。テレメトリの取りこぼしゼロ設計(診断設定/DCR/Private Link)、ラテラル移動の早期検知(Sentinel 解析ルール/UEBA)、封じ込めの自動化(Logic Apps Playbook)、改ざん耐性ある保全(WORM/ハッシュ)を一体運用することで、MTTD/MTTR の短縮監査可能性を同時に達成する。

1. 検知ベースライン ― 収集・保持・アラート設計

1.1 Azure Monitor:診断設定と保持

対象と送信先(最小構成)

  • 送信先:Log Analytics(一次解析)Event Hubs(二次 SIEM 連携)Storage(長期保全)

  • 対象と主カテゴリ(Resource-specific がある場合は優先)

    • Entra ID:Sign-in, Audit

    • Key Vault:AuditEvent

    • Storage:StorageBlobLogs / StorageFileLogs(または AzureDiagnostics: Blob/Queue/File)

    • SQL:SQLSecurityAuditEvents / SQLInsights(または AzureDiagnostics: SQL)

    • App Gateway/WAF:ApplicationGatewayAccessLog / ApplicationGatewayFirewallLog

    • Azure Firewall:AzureFirewallApplicationRule / NetworkRule / DNATRule

    • VNet FlowVirtual Network Flow Logs(NSG Flow Logs はレガシー、移行推奨)

保持とアーカイブ(推奨初期値)

  • Log Analytics Hot:90 日(運用解析)

  • Log Analytics Archive:365 日(検索ジョブ想定)

  • 監査用 Storage(WORM):1~7 年(法令・契約に準拠)

  • 大容量ログ(Flow / Access):30~90 日 Hot、以降 Archive/Storage へライフサイクル移行

命名・タグ(例)

  • LAW:law-prd-sec-jpe(環境/用途/リージョン)

  • 監査タグ:Retention=365D, WORM=True, Residency=JP

1.2 Azure Monitor:代表アラート(KQL サンプル)

大量ダウンロード(Storage)

StorageBlobLogs
| where TimeGenerated > ago(1h)
| summarize bytes=sum(tolong(ResponseBodySize)), ops=count() by ClientIP_s, AccountName, bin(TimeGenerated, 15m)
| where bytes > 50GB or ops > 20000

Key Vault:短時間に大量の鍵操作

AzureDiagnostics
| where Category == "AuditEvent" // Key Vault
| where TimeGenerated > ago(30m)
| summarize ops=count() by identity=tolower(CallerIPAddress), operation=OperationName, bin(TimeGenerated, 5m)
| where ops > 100

不可能移動(Impossible Travel)

SigninLogs
| where TimeGenerated > ago(24h)
| extend geo = iplocation(IPAddress)
| summarize firstSeen=min(TimeGenerated), lastSeen=max(TimeGenerated),
           firstCountry=any(geo.Country), lastCountry=anyif(geo.Country, TimeGenerated==max(TimeGenerated))
  by UserPrincipalName
| where firstCountry <> lastCountry

1.3 Azure Monitor:アクション

2. Microsoft Sentinel(SIEM):接続・解析・自動応答

2.1 データコネクタ

  • 必須:Entra ID(Sign-in/Audit)、Defender(Endpoint/Identity/Cloud Apps)、Defender for Cloud、Microsoft 365(Ex/SharePoint/Teams)

  • 任意:AWS CloudTrail、Syslog/CEF(オンプレ FW/Proxy)、SaaS(Box/Okta など)

  • 取り込み後、テーブル健全性(遅延・空白期間)をワークブックで監視

2.2 解析ルール(Analytics)と UEBA

MultipleFailedLogins(失敗連続)

SigninLogs
| where TimeGenerated > ago(24h)
| where ResultType == "50126"
| summarize Count=count(), IPs=make_set(IPAddress) by UserPrincipalName
| where Count > 5
  • スケジュール:5 分/継続 1 時間

  • 抑制(Suppression):60 分

  • 重大度:High / 中規模なら Medium

Data Exfiltration(疑い)

union isfuzzy=true StorageBlobLogs, AzureDiagnostics
| where TimeGenerated > ago(1h)
| summarize bytes=sum(tolong(ResponseBodySize)) by UserIdentity_s, bin(TimeGenerated, 10m)
| join kind=leftouter (
    SigninLogs | where TimeGenerated > ago(24h)
    | summarize lastAuth=max(TimeGenerated) by UserPrincipalName
) on $left.UserIdentity_s == $right.UserPrincipalName
| where bytes > 20GB

UEBA(ユーザーとエンティティのふるまい分析)

  • 直近 7~30 日の平常時プロファイルを学習させ、深夜帯の大量アクセスなど逸脱を優先度上げ。

2.3 自動応答(Playbook:Logic Apps)

  • BlockMaliciousIP-Playbook

    • トリガ:Sentinel アラート

    • 処理:

      1. Entra ID:対象アカウントサインイン無効(必要に応じセッション失効)

      2. NSG/Firewall:攻撃元 IP を一時ブロック(タグ IR-TempBlock、TTL=2h)

      3. Teams/Email:インシデント通知・トリアージ票起票

      4. ServiceNow/Jira:自動チケット

    • 承認ゲート:本番環境のネットワーク変更は Approvals を必須

3. Defender for Cloud:広域評価と“即時是正”

3.1 プラン・ポリシー

  • プラン:Defender for Cloud Plan 2(サーバ・データ・ID 横断)

  • コンプライアンス:ISO 27001 / NIST SP 800‑53 / CIS を有効化

  • 推奨事項:deny/modify の Azure Policyと連携(公開 Endpoint 無効化、TLS1.2+、Key Vault RBAC)

3.2 代表アラートと一次対応

  • Unusual data access pattern(Storage) → Sentinel 検証、IP ブロック、SAS キー再発行

  • Elevation of privilege(ID) → 直ちに PIM 監査、該当ロール無効化、セッション失効

  • Malicious activity on VM → Defender for Endpoint で隔離スナップショット取得

4. ログ分析とフォレンジック ― 証拠の“改ざん耐性”と再現性

4.1 初動 30 分(Preserve & Scope)

  • モニタリング停止はしない(証跡喪失防止)

  • 影響範囲を時系列で把握(最初のアラート→横展開)

  • 観測ログ(Activity、Sign-in、Resource-specific テーブル、Flow、WAF、FW)をインシデント ID でタグ

横展開の KQL 例(疑わしい IP の踏み台探索)

let suspiciousIP = "X.X.X.X";
union SigninLogs, AzureDiagnostics, StorageBlobLogs, ApplicationGatewayAccessLog
| where TimeGenerated > ago(7d)
| where tostring(IPAddress) == suspiciousIP or tostring(ClientIP_s) == suspiciousIP
| summarize events=count() by Target=tostring(UserPrincipalName), Resource=tostring(ResourceId), bin(TimeGenerated, 1h)

4.2 スナップショットと保全

  • VM ディスク:OS/データディスクの読み取り専用スナップショットを作成

  • ハッシュ:SHA-256 を取得し、ハッシュログをWORM へ保存

  • 保全先:st-forensic-prd(immutable/バージョニング有効、Private Link、アクセスキー無効で RBAC のみ)

  • 取得順序:メタ→ディスク→特定ログ(変化しやすい順に注意)

ハッシュ取得(例)

Windows: certutil -hashfile evidence.vhdx SHA256
Linux  : sha256sum evidence.vhd

4.3 メモリ/プロセス(可能な範囲)

  • Windows:ProcDump 等による対象プロセスのダンプ(EDR 連携の Live Response で収集)

  • Linux:gcore / dd(安全な停止計画のもと)

  • 収集物は専用の隔離サブスクリプションへ移送し解析

5. 封じ込めと根絶 ― “自動化+承認”のバランス

5.1 自動封じ込め(テンプレ)

  • ID:Revoke-AzureADUserAllRefreshToken 相当(サインイン無効化と併用)

  • NW:NSG/FW に一時ブロックルール(タグ/期限で管理)

  • キーStorage SAS/Account Key / SQL 接続文字列を即時ローテーション

  • アプリ:App Service/Function の構成シークレット再デプロイ

5.2 人手を介すステップ

  • 本番ネットワークの経路変更、重大ロールの剥奪、広域キーのローテは承認ゲート必須

  • 回避策(Feature flag/WAF ルール調整)で短期封じ込め → 事後に恒久対策

6. 侵害通知のための“技術パック”

インシデント・サマリ(技術)

  • タイムライン(Z 時刻)/初検知~封じ込め所要時間(MTTD/MTTR)

  • 影響資産(サブスクリプション/RG/リソース ID)

  • データカテゴリ・件数・推定流出量(上限/下限)信頼度

  • 攻撃ベクタ(初回認証、ラテラル移動、外部送出経路)

  • 措置(封じ込め/根絶/再発防止)と残留リスク

  • 監査証跡(アラート ID、KQL、エビデンスのハッシュ、WORM 保管 URL)

7. 運用メトリクスと演習

  • SLA/OKR:MTTD ≤ 15 分、MTTR ≤ 2 時間、High 重大度の 24h 以内根絶 100%

  • 四半期演習(Purple Team)

    • フィッシング→トークン奪取→外部送出の再現試験

    • ルールの誤検知率取りこぼしを平衡化

  • ポストモーテム教訓→是正計画→再試験を 30 日でクローズ

付録 A:実装チェックリスト(技術・パラメータ)

[収集]
  全リソース Diagnostic settings = On(Resource-specific優先)
  送信先:LAW(Hot=90d, Archive=365d) / Storage(WORM=1-7y) / Event Hubs(任意)
  VNet Flow Logs = On(NSG Flow Logs から移行)

[監視・検知]
  Sentinel Connectors:EntraID, Defender, M365, Defender for Cloud(+必要SaaS/CEFs)
  Analytics:失敗認証、データ大量DL、Impossible Travel、特権昇格、KV大量操作
  UEBA = On(7-30日学習)
  Action Group:メール/Teams/Webhook

[自動応答]
  Playbook:アカウント無効化/セッション失効/NSG/FW一時ブロック/チケット起票
  Approvals:ネットワーク変更系は必須

[保全]
  Snapshot:OS/データディスク(ReadOnly)、SHA-256 取得
  保全先:Storage(Immutable+Versioning, Private Link, RBACのみ)
  ログ:KQL・クエリ結果・アラートIDを WORM に保存

[是正]
  Key/SAS/Secrets ローテ、App 設定再デプロイ
  ルールチューニング(誤検知/取りこぼし評価)

[演習]
  四半期:表計画(シナリオ/期待反応時間/承認者)
  指標:MTTD/MTTR、誤検知率、取りこぼし率、再現試験合格率

付録 B:代表 KQL ライブラリ(抜粋)

特権ロールの異常付与

AuditLogs
| where TimeGenerated > ago(24h)
| where OperationName has "Add member to role"
| summarize by TargetResources, InitiatedBy, bin(TimeGenerated, 5m)

AppGW WAF:ブロック急増

ApplicationGatewayFirewallLog
| where TimeGenerated > ago(1h)
| summarize blocks=count() by RuleSetVersion, bin(TimeGenerated, 5m)
| where blocks > 1000

Azure Firewall:外向き高帯域

AzureFirewallNetworkRule
| where TimeGenerated > ago(1h)
| summarize totalBytes=sum(tolong(SentBytes)) by SourceIp, DestinationIp, bin(TimeGenerated, 10m)
| where totalBytes > 10000000000 // ~10GB

山崎行政書士事務所のご支援(PR)

技術(Monitor/Sentinel/Defender/Key Vault/Private Link)× 法務(APPI/GDPR/通知義務・契約)を同じ運用・証跡パッケージに束ね、**“検知→封じ込め→通知→監査”**を最短で回す体制を設計・実装します。

  • アセスメント→ブループリント導入→KQL/Playbook 提供→演習→監査同席まで伴走。

  • 金融・医療・公共での高規制案件のパターンをテンプレ化し、MTTD/MTTR 改善監査適合を両立させます。


参照リンク集

Storage の改ざん耐性(WORM/イミュータブル)https://learn.microsoft.com/azure/storage/blobs/immutable-policy-configure-versioning

Microsoft Incident Response(支援)https://learn.microsoft.com/security/incident-response/

 
 
 

コメント


bottom of page