ゼロトラストセキュリティの核心は「決して信頼せず、常に検証する」という原則ですが、従来の認証モデルでは「ログイン時に一度だけ検証し、その後はセッションが有効な限りアクセスを許可する」という静的なアプローチが一般的でした。しかし、このアプローチでは認証後に発生するリスクの変化に対応できません。ゼロトラストでは、セッション中も継続的にリスクを評価し、状況に応じて動的にアクセス制御を行う「継続的検証」が求められます。

本記事では、継続的検証について以下の内容を解説します。

  • 継続的検証(Continuous Verification)の概念と必要性
  • リスクベース認証(Risk-Based Authentication)の仕組み
  • UEBA(User and Entity Behavior Analytics)による異常検知
  • セッション中のリスク再評価と自動対応の実装
  • Microsoft Entra ID ProtectionとMicrosoft Defender for Identityの活用

この記事を読むことで、一度の認証で終わらない継続的検証の仕組みを理解し、リスクベースの動的アクセス制御を設計できるようになります。

前提知識

本記事を理解するために、以下の知識があることを前提としています。

  • ゼロトラストの基本原則を把握している
  • 条件付きアクセスポリシーの基本を理解している
  • 認証・認可の基本概念を知っている

ゼロトラストの基本原則についてはゼロトラストセキュリティ入門 - 基本原則と7つの柱を理解するを、条件付きアクセスについては条件付きアクセスポリシーの設計と実装を先に読むことをお勧めします。

期待される学習成果

本記事を読み終えると、以下のことができるようになります。

  1. 継続的検証の必要性とゼロトラストにおける役割を説明できる
  2. リスクベース認証の仕組みとリスクシグナルの種類を理解できる
  3. UEBAによる行動分析と異常検知の原理を説明できる
  4. セッション中のリスク再評価と自動対応の設計ができる
  5. Microsoft Entra ID Protectionの基本的な構成を理解できる

継続的検証とは

継続的検証(Continuous Verification)とは、ユーザーやデバイスの信頼性を初回認証時だけでなく、セッション全体を通じて継続的に評価し、リスクレベルの変化に応じてアクセス制御を動的に調整する仕組みです。

従来の静的認証モデルの限界

従来の認証モデルでは、ユーザーが一度正常にログインすれば、セッションの有効期限が切れるまでそのアクセス権限が維持されます。

flowchart LR
    subgraph traditional["従来の静的認証モデル"]
        login["ログイン<br/>(一度だけ検証)"]
        session["セッション継続<br/>(検証なし)"]
        access["リソースアクセス<br/>(自由に許可)"]
    end
    
    login -->|"認証成功"| session
    session -->|"セッション有効"| access
    access -->|"セッション終了まで"| session

この静的なモデルには、以下の重大な問題があります。

問題 説明 リスク
認証後の脅威に無防備 ログイン後にデバイスがマルウェアに感染しても検知できない データ漏洩、横展開攻撃
資格情報の窃取に脆弱 セッショントークンが盗まれると、攻撃者が正規ユーザーとしてアクセス可能 なりすまし、不正アクセス
コンテキスト変化を無視 ユーザーの行動が通常と異なっても対応できない 内部脅威の見逃し
長時間セッションのリスク セッションが長時間有効な場合、攻撃の機会が増大 攻撃対象領域の拡大

継続的検証のアプローチ

継続的検証では、セッション中も定期的にリスクを評価し、状況の変化に応じてアクセス制御を調整します。

flowchart TB
    subgraph continuous["継続的検証モデル"]
        direction TB
        login["初回認証"]
        
        subgraph evaluation["継続的評価ループ"]
            collect["シグナル収集"]
            analyze["リスク分析"]
            decide["アクセス判断"]
        end
        
        actions["対応アクション"]
    end
    
    login --> collect
    collect --> analyze
    analyze --> decide
    decide -->|"リスク低"| collect
    decide -->|"リスク中"| actions
    decide -->|"リスク高"| actions
    actions -->|"再認証要求<br/>セッション終了<br/>権限制限"| collect

継続的検証の主要な要素は以下の通りです。

  1. リアルタイムシグナル収集: ユーザー行動、デバイス状態、ネットワーク環境など
  2. リスク分析エンジン: 収集したシグナルを分析しリスクスコアを算出
  3. 動的ポリシー適用: リスクレベルに応じたアクセス制御の実行
  4. 自動対応: 高リスク検知時の自動的な対処

リスクベース認証

リスクベース認証(Risk-Based Authentication: RBA)は、認証要求のコンテキストを分析し、リスクレベルに応じて認証要件を動的に調整する仕組みです。

リスクシグナルの種類

リスクベース認証では、様々なシグナルを組み合わせてリスクを評価します。

flowchart TB
    subgraph signals["リスクシグナルの分類"]
        direction TB
        
        subgraph user["ユーザーシグナル"]
            behavior["行動パターン"]
            history["認証履歴"]
            role["役割・権限"]
        end
        
        subgraph device["デバイスシグナル"]
            compliance["コンプライアンス状態"]
            health["デバイス正常性"]
            managed["管理状態"]
        end
        
        subgraph network["ネットワークシグナル"]
            location["地理的位置"]
            ip["IPアドレス評価"]
            connection["接続タイプ"]
        end
        
        subgraph context["コンテキストシグナル"]
            time["アクセス時刻"]
            app["対象アプリ"]
            data["データ機密度"]
        end
    end
    
    signals --> engine["リスク評価エンジン"]
    engine --> score["リスクスコア算出"]

主要なリスクシグナルの詳細は以下の通りです。

ユーザー関連シグナル

シグナル 説明 高リスクの例
認証履歴 過去のログイン成功/失敗パターン 短時間に複数回のログイン失敗
行動パターン 通常のアクセス時間、頻度、操作 深夜の異常なデータダウンロード
資格情報の状態 パスワードの漏洩有無 ダークウェブで資格情報が流出
役割の変更 最近の権限変更 突然の管理者権限付与

デバイス関連シグナル

シグナル 説明 高リスクの例
登録状態 組織のデバイス管理への登録 未登録の個人デバイス
コンプライアンス セキュリティポリシーへの準拠 OSパッチ未適用、暗号化無効
マルウェア検出 エンドポイント保護の検出結果 アクティブな脅威の検出
最終チェック 最後のコンプライアンス確認時刻 30日以上チェックなし

ネットワーク関連シグナル

シグナル 説明 高リスクの例
IPアドレス 発信元IPの評価 Torノード、匿名プロキシ
地理的位置 アクセス元の国・地域 通常と異なる国からのアクセス
あり得ない移動 物理的に不可能な移動 1時間前に東京、現在ニューヨーク
ネットワーク種別 接続ネットワークの種類 公共Wi-Fi、不明なネットワーク

リスクレベルに応じた認証要件

リスク評価の結果に基づき、認証要件を動的に調整します。

flowchart LR
    subgraph risk["リスクレベル"]
        low["低リスク"]
        medium["中リスク"]
        high["高リスク"]
    end
    
    subgraph action["認証アクション"]
        allow["アクセス許可"]
        mfa["MFA要求"]
        restrict["制限付きアクセス"]
        block["ブロック"]
        reset["パスワードリセット強制"]
    end
    
    low -->|"既知デバイス<br/>通常の場所"| allow
    medium -->|"新しいデバイス<br/>珍しい場所"| mfa
    medium -->|"機密データ<br/>アクセス"| restrict
    high -->|"漏洩資格情報<br/>不審な行動"| block
    high -->|"確認後"| reset

典型的なリスクレベルと対応アクションの例を示します。

低リスク時の対応

  • 条件: 登録済みデバイス、通常の場所、通常のアクセス時間
  • アクション: パスワードのみでアクセス許可、またはシームレスSSO

中リスク時の対応

  • 条件: 新しいデバイス、通常と異なる場所、機密リソースへのアクセス
  • アクション: 追加のMFA要求、制限付きアクセス(読み取り専用など)

高リスク時の対応

  • 条件: 漏洩した資格情報、あり得ない移動、マルウェア検出
  • アクション: アクセスブロック、セッション無効化、パスワードリセット強制

UEBA(User and Entity Behavior Analytics)

UEBA(User and Entity Behavior Analytics)は、ユーザーおよびエンティティ(デバイス、アプリケーション、サービスアカウントなど)の行動を分析し、異常を検知するセキュリティ技術です。

UEBAの基本原理

UEBAは、機械学習とデータ分析を活用して、以下のプロセスでセキュリティ脅威を検知します。

flowchart TB
    subgraph ueba["UEBA分析プロセス"]
        direction TB
        
        subgraph collect["データ収集"]
            logs["ログデータ"]
            network["ネットワークトラフィック"]
            endpoint["エンドポイントデータ"]
            cloud["クラウドアクティビティ"]
        end
        
        subgraph baseline["ベースライン構築"]
            profile["ユーザー/エンティティ<br/>プロファイル作成"]
            pattern["行動パターン学習"]
            peer["ピアグループ分析"]
        end
        
        subgraph detect["異常検知"]
            compare["ベースラインとの比較"]
            score["リスクスコア算出"]
            alert["アラート生成"]
        end
    end
    
    collect --> baseline
    baseline --> detect
    detect -->|"継続的な学習"| baseline

ベースライン構築

UEBAは、各ユーザーやエンティティの「通常の行動」を学習してベースラインを構築します。ベースラインには以下の要素が含まれます。

  • 時間的パターン: 通常のログイン時間、作業時間帯
  • 地理的パターン: よくアクセスする場所、使用するIPレンジ
  • アクセスパターン: 頻繁に利用するアプリケーション、リソース
  • データ操作パターン: 通常のダウンロード量、ファイルアクセス頻度
  • ピアグループとの比較: 同じ役割・部門のユーザーとの行動比較

UEBAで検知できる異常

UEBAは、以下のような異常行動を検知できます。

アカウント侵害の兆候

異常パターン 説明 検知例
あり得ない移動 物理的に不可能な場所からの連続アクセス 東京で15:00にログイン、ロンドンで15:30にログイン
異常な認証パターン 通常と異なる認証行動 深夜3時のログイン、週末の大量アクセス
新しいデバイス/IP 初めて見るアクセス元 過去に使用歴のないIPからのアクセス

内部脅威の兆候

異常パターン 説明 検知例
大量データアクセス 通常を超えるデータ操作 1日で通常の10倍のファイルダウンロード
権限外アクセス試行 本来アクセスできないリソースへの試行 他部門の機密フォルダへのアクセス試行
異常な特権操作 通常行わない管理操作 突然のユーザー作成、権限変更

ラテラルムーブメントの兆候

異常パターン 説明 検知例
パスザハッシュ 認証情報の不正使用 複数システムへの同時認証試行
サービスアカウント異常 サービスアカウントの人的操作 バッチアカウントからの対話型ログイン
横展開パターン システム間の不審な移動 短時間での複数サーバーへの接続

リスクスコアリング

UEBAは、検知した異常を評価してリスクスコアを算出します。

flowchart TB
    subgraph scoring["リスクスコアリングの要素"]
        direction TB
        
        anomaly["異常の重大度"]
        frequency["発生頻度"]
        context["コンテキスト"]
        asset["対象資産の重要度"]
        history["過去のインシデント"]
    end
    
    scoring --> calculate["スコア計算"]
    
    calculate --> low["0-39: 低リスク<br/>監視継続"]
    calculate --> medium["40-69: 中リスク<br/>調査推奨"]
    calculate --> high["70-100: 高リスク<br/>即時対応"]

スコアリングの考慮要素は以下の通りです。

  • 異常の重大度: 検知された異常がセキュリティにどの程度影響するか
  • 発生頻度: 同様の異常が繰り返し発生しているか
  • コンテキスト: 異常が発生した状況(時間、場所、関連イベント)
  • 対象資産の重要度: アクセス対象のシステムやデータの機密性
  • 過去の履歴: ユーザーやエンティティの過去のリスクイベント

セッション中のリスク再評価

継続的検証では、セッション確立後も定期的にリスクを再評価し、状況の変化に対応します。

トークン保護とセッション管理

モダンな認証システムでは、トークンを使用してセッションを管理します。継続的検証では、これらのトークンのライフサイクル管理が重要になります。

sequenceDiagram
    participant User as ユーザー
    participant App as アプリケーション
    participant IdP as IdP/PDP
    participant UEBA as UEBA/リスクエンジン
    
    User->>IdP: 1. 初回認証
    IdP->>UEBA: リスク評価要求
    UEBA-->>IdP: リスク: 低
    IdP-->>User: アクセストークン発行(有効期限: 1時間)
    
    User->>App: 2. リソースアクセス
    App->>IdP: トークン検証
    IdP-->>App: 有効
    App-->>User: アクセス許可
    
    Note over UEBA: 異常行動を検知
    
    User->>App: 3. リソースアクセス(30分後)
    App->>IdP: トークン検証
    IdP->>UEBA: リスク再評価
    UEBA-->>IdP: リスク: 高(異常検知)
    IdP-->>App: トークン無効化
    App-->>User: 再認証要求

Continuous Access Evaluation(CAE)

Microsoft Entra IDでは、Continuous Access Evaluation(CAE)という機能により、重要なイベント発生時にリアルタイムでセッションを再評価できます。

CAEで評価されるクリティカルイベント

イベント 説明 対応アクション
ユーザーアカウント無効化 管理者がアカウントを無効化 即時セッション終了
パスワード変更/リセット ユーザーまたは管理者がパスワードを変更 再認証を要求
MFA変更 MFA設定の変更 セッション再検証
ユーザーリスク上昇 Identity Protectionがリスク上昇を検知 リスクレベルに応じた対応
管理者によるセッション無効化 明示的なセッション取り消し 即時セッション終了

CAEの有効化による効果

flowchart LR
    subgraph before["CAEなし"]
        direction TB
        b1["イベント発生"]
        b2["トークン有効期限まで待機<br/>(最大1時間)"]
        b3["アクセス継続"]
    end
    
    subgraph after["CAEあり"]
        direction TB
        a1["イベント発生"]
        a2["即時通知"]
        a3["リアルタイム対応"]
    end
    
    before --> problem["セキュリティギャップ"]
    after --> solution["リアルタイム保護"]

セッションライフタイム管理

継続的検証を効果的に実装するためには、適切なセッションライフタイム管理が必要です。

セッション管理のベストプラクティス

設定項目 推奨値 根拠
アクセストークン有効期限 1時間以下 リスク再評価の機会を確保
リフレッシュトークン有効期限 24時間(機密アプリは短縮) 長時間セッションのリスク軽減
サインイン頻度 リスクに応じて調整 高リスク環境では毎回認証
永続的ブラウザセッション 無効化推奨 セッションハイジャック対策

自動対応の実装

継続的検証で検知したリスクに対して、人手を介さず自動的に対応することで、脅威への対応時間を大幅に短縮できます。

リスクベースの自動対応フロー

flowchart TB
    subgraph detection["検知"]
        signal["リスクシグナル検知"]
        analyze["リスク分析"]
        score["リスクスコア算出"]
    end
    
    subgraph response["自動対応"]
        direction TB
        
        subgraph low["低リスク対応"]
            l1["追加ログ記録"]
            l2["監視強化"]
        end
        
        subgraph medium["中リスク対応"]
            m1["MFA要求"]
            m2["セッション制限"]
            m3["アラート生成"]
        end
        
        subgraph high["高リスク対応"]
            h1["セッション終了"]
            h2["アカウントロック"]
            h3["パスワードリセット強制"]
            h4["SOC通知"]
        end
    end
    
    signal --> analyze --> score
    score -->|"0-39"| low
    score -->|"40-69"| medium
    score -->|"70-100"| high

自動対応アクションの種類

認証関連のアクション

アクション トリガー条件 実装方法
ステップアップ認証 中リスク検知、機密リソースアクセス 条件付きアクセスでMFA要求
パスワードリセット強制 資格情報漏洩検知 ID Protectionのリスクポリシー
アカウント一時ロック 複数回の認証失敗 Smart Lockout設定

セッション関連のアクション

アクション トリガー条件 実装方法
セッション終了 高リスク検知、アカウント無効化 CAEによる即時無効化
トークン再発行要求 リスクレベル変更 リフレッシュトークンの無効化
アクセス権限制限 中リスク検知 アプリ制限セッション

通知・エスカレーション

アクション トリガー条件 実装方法
セキュリティアラート 中〜高リスク検知 SIEM連携、メール通知
SOCチケット作成 高リスクインシデント SOAR連携
管理者通知 クリティカルイベント リアルタイムアラート

Microsoft Entra ID Protectionの活用

Microsoft Entra ID Protectionは、継続的検証を実現するためのMicrosoftのソリューションです。リスク検知、調査、修復のワークフローを自動化できます。

ID Protectionのアーキテクチャ

flowchart TB
    subgraph signals["シグナルソース"]
        entra["Microsoft Entra ID"]
        defender["Microsoft Defender"]
        external["外部脅威情報"]
    end
    
    subgraph idp["ID Protection"]
        detect["リスク検知エンジン"]
        
        subgraph risks["リスクの種類"]
            signin["サインインリスク"]
            user["ユーザーリスク"]
        end
        
        policy["リスクポリシー"]
    end
    
    subgraph response["対応"]
        ca["条件付きアクセス"]
        remediate["自動修復"]
        report["レポート・調査"]
    end
    
    signals --> detect
    detect --> risks
    risks --> policy
    policy --> response

リスク検知の種類

ID Protectionは、サインインリスクとユーザーリスクの2種類のリスクを検知します。

サインインリスク検知

サインインリスクは、特定のサインイン要求が正規のユーザーによるものではない可能性を示します。

検知タイプ 説明 リアルタイム/オフライン
匿名IPアドレス 匿名プロキシIPからのサインイン リアルタイム
通常と異なるサインインプロパティ 過去に見られなかったプロパティでのサインイン リアルタイム
マルウェアにリンクしたIPアドレス マルウェア関連IPからのサインイン オフライン
パスワードスプレー 複数アカウントへの同一パスワード試行 オフライン
あり得ない移動 物理的に不可能な場所からの連続サインイン オフライン
新しい国 過去の履歴にない国からのサインイン オフライン

ユーザーリスク検知

ユーザーリスクは、ユーザーのアカウント自体が侵害されている可能性を示します。

検知タイプ 説明 リアルタイム/オフライン
漏洩した資格情報 ダークウェブ等で資格情報が確認された オフライン
異常なユーザーアクティビティ 通常と異なるユーザー行動 オフライン
ユーザーから報告された不審なアクティビティ ユーザー自身がMFAプロンプトを拒否 リアルタイム
確認済み脅威アクター Microsoft脅威インテリジェンスで確認された攻撃者 オフライン

リスクポリシーの設定

ID Protectionでは、リスクレベルに応じた自動対応ポリシーを設定できます。

サインインリスクポリシーの設定例

1
2
3
4
5
6
7
8
9
# サインインリスクポリシー
ポリシー名: 中〜高リスクサインインにMFA要求
対象ユーザー: すべてのユーザー
除外: 緊急アクセスアカウント
サインインリスク: 中以上
制御: 
  - 多要素認証を要求
セッション:
  - サインイン頻度: 毎回

ユーザーリスクポリシーの設定例

1
2
3
4
5
6
7
8
# ユーザーリスクポリシー
ポリシー名: 高リスクユーザーにパスワードリセット強制
対象ユーザー: すべてのユーザー
除外: 緊急アクセスアカウント
ユーザーリスク: 
制御:
  - 多要素認証を要求
  - パスワード変更を要求

条件付きアクセスとの統合

ID Protectionのリスクシグナルは、条件付きアクセスポリシーの条件として使用できます。これにより、より柔軟なリスクベースアクセス制御が可能になります。

flowchart LR
    subgraph conditions["条件付きアクセスの条件"]
        user["ユーザー/グループ"]
        app["クラウドアプリ"]
        device["デバイス状態"]
        location["場所"]
        signin["サインインリスク"]
        userrisk["ユーザーリスク"]
    end
    
    subgraph controls["アクセス制御"]
        grant["許可制御"]
        session["セッション制御"]
    end
    
    conditions --> evaluate["ポリシー評価"]
    evaluate --> controls

Microsoft Defender for Identityによる高度な検知

Microsoft Defender for Identityは、オンプレミスのActive Directory環境を監視し、高度な脅威を検知するソリューションです。クラウドとオンプレミスのハイブリッド環境における継続的検証に重要な役割を果たします。

Defender for Identityの検知カテゴリ

カテゴリ 検知内容
偵察活動 攻撃者による情報収集 LDAPクエリによるアカウント列挙
資格情報侵害 認証情報の窃取・悪用 ブルートフォース、パスワードスプレー
ラテラルムーブメント 組織内での横展開 Pass-the-Hash、Pass-the-Ticket
ドメイン支配 高権限の取得 DCSync、Golden Ticket

ハイブリッド環境での継続的検証

flowchart TB
    subgraph onprem["オンプレミス"]
        dc["ドメインコントローラー"]
        adfs["AD FS"]
        sensor["Defender for Identity<br/>センサー"]
    end
    
    subgraph cloud["クラウド"]
        entra["Microsoft Entra ID"]
        idp["ID Protection"]
        xdr["Microsoft Defender XDR"]
    end
    
    dc --> sensor
    adfs --> sensor
    sensor -->|"シグナル送信"| xdr
    entra --> idp
    idp --> xdr
    xdr -->|"統合ビュー"| soc["SOC/セキュリティチーム"]

継続的検証の設計ベストプラクティス

継続的検証を効果的に実装するためのベストプラクティスを紹介します。

段階的な導入アプローチ

flowchart LR
    subgraph phase1["フェーズ1: 可視化"]
        p1a["リスクシグナル収集開始"]
        p1b["ベースライン学習"]
        p1c["レポートモードで評価"]
    end
    
    subgraph phase2["フェーズ2: 検知強化"]
        p2a["リスクポリシー有効化"]
        p2b["アラート調整"]
        p2c["誤検知の削減"]
    end
    
    subgraph phase3["フェーズ3: 自動対応"]
        p3a["自動修復の有効化"]
        p3b["SOAR連携"]
        p3c["継続的改善"]
    end
    
    phase1 --> phase2 --> phase3

リスク許容度に応じた設定

組織のリスク許容度に応じて、継続的検証の厳格さを調整します。

設定項目 低リスク許容度 高リスク許容度
サインインリスクポリシー 低以上でMFA 高のみMFA
ユーザーリスクポリシー 中以上でリセット強制 高のみリセット強制
セッション有効期限 短い(30分〜1時間) 長め(1日〜数日)
CAE 有効 有効
トークン保護 厳格 標準

モニタリングと継続的改善

継続的検証の効果を測定し、改善を続けることが重要です。

測定すべきKPI

KPI 説明 目標例
検知率 真のリスクを検知できた割合 95%以上
誤検知率 誤ってリスクと判定した割合 5%以下
平均検知時間(MTTD) リスク発生から検知までの時間 1分以内
平均対応時間(MTTR) 検知から対応完了までの時間 自動対応: 即時
ユーザー影響 誤検知による業務影響の件数 週1件以下

まとめ

継続的検証は、ゼロトラストセキュリティを実現するための核心的な要素です。本記事で解説した重要なポイントを振り返ります。

  1. 静的認証から継続的検証へ: 一度の認証で終わらず、セッション全体を通じてリスクを評価することで、認証後の脅威にも対応できます。

  2. リスクベース認証: ユーザー、デバイス、ネットワーク、コンテキストの多様なシグナルを組み合わせてリスクを評価し、認証要件を動的に調整します。

  3. UEBAによる行動分析: 機械学習を活用してベースラインを構築し、異常行動を検知することで、従来のルールベースでは検知できなかった脅威を発見できます。

  4. 自動対応の重要性: 検知したリスクに自動的に対応することで、攻撃者に時間を与えず、被害を最小化できます。

  5. Microsoft Entra ID ProtectionとDefender for Identity: Microsoftのソリューションを活用することで、クラウドとオンプレミスの両方で継続的検証を実現できます。

継続的検証は、「常に検証する」というゼロトラストの原則を具現化するものです。次の記事では、SIEM/SOARによるセキュリティ監視と自動対応について解説し、継続的検証で収集したログをどのように統合・分析し、組織全体のセキュリティ運用に活かすかを学びます。

参考リンク