これまでの記事では、ゼロトラストの基本原則や個々の構成要素(アイデンティティ、デバイス、ネットワーク、データ保護など)について解説してきました。本記事では、これらの要素を統合し、組織全体のゼロトラストアーキテクチャ(ZTA)を設計する方法を解説します。

NIST SP 800-207「Zero Trust Architecture」は、ゼロトラストアーキテクチャ設計における事実上の標準となっています。本記事では、このガイドラインに基づき、以下の内容を解説します。

  • ゼロトラストアーキテクチャの論理コンポーネントと役割
  • Policy Decision Point(PDP)とPolicy Enforcement Point(PEP)の詳細設計
  • 3つのデプロイメントモデル(エージェント型、エンクレーブ型、リソースポータル型)
  • 信頼アルゴリズムとアクセス判定のデータフロー
  • 実際のソリューションへのマッピング

この記事を読むことで、標準的なゼロトラストアーキテクチャを理解し、組織に適した構成を設計できるようになります。

前提知識

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

  • ゼロトラストの基本原則と7つの柱を理解している
  • 条件付きアクセスポリシーの概念を把握している
  • ネットワークセキュリティの基本(ファイアウォール、プロキシ等)を知っている

ゼロトラストの基本原則についてはゼロトラストセキュリティ入門 - 基本原則と7つの柱を理解するを先に読むことをお勧めします。

期待される学習成果

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

  1. NIST SP 800-207の論理コンポーネント構成を説明できる
  2. PDP、PA、PEPの役割と相互関係を理解できる
  3. 3つのデプロイメントモデルの特徴と使い分けを判断できる
  4. 信頼アルゴリズムの設計要素を把握できる
  5. 組織のセキュリティ要件に合わせたアーキテクチャを選択できる

NIST SP 800-207とは

NIST SP 800-207「Zero Trust Architecture」は、2020年8月に米国国立標準技術研究所(NIST)が発行したゼロトラストアーキテクチャに関する包括的なガイドラインです。政府機関向けの文書ですが、民間企業においてもゼロトラスト実装の標準的なリファレンスとして広く参照されています。

NIST SP 800-207の位置づけ

flowchart TB
    subgraph standards["ゼロトラスト関連標準・ガイドライン"]
        direction TB
        
        subgraph nist["NIST"]
            sp800207["SP 800-207<br/>Zero Trust Architecture<br/>(基本アーキテクチャ)"]
            sp800207a["SP 800-207A<br/>ZTA Cloud<br/>(クラウド向け拡張)"]
            cswp20["CSWP 20<br/>Planning for ZTA<br/>(計画ガイド)"]
        end
        
        subgraph cisa["CISA"]
            ztmm["Zero Trust<br/>Maturity Model<br/>(成熟度モデル)"]
        end
        
        subgraph dod["DoD"]
            dodzt["DoD Zero Trust<br/>Reference Architecture<br/>(国防総省参照モデル)"]
        end
    end
    
    sp800207 --> sp800207a
    sp800207 --> cswp20
    sp800207 --> ztmm
    sp800207 --> dodzt

SP 800-207は、ゼロトラストの抽象的な原則を具体的なアーキテクチャコンポーネントに落とし込んだ点で画期的です。これにより、組織はベンダーに依存しない標準的な設計指針を得ることができます。

SP 800-207が定義するゼロトラストの前提

NIST SP 800-207では、ゼロトラストアーキテクチャを設計する際に前提とすべき事項を明確に定義しています。

前提 説明
ネットワークは常に敵対的 企業ネットワーク内部であっても、攻撃者が存在する可能性を前提とする
暗黙の信頼の排除 ネットワークの場所だけでは信頼を付与しない
デバイスは企業所有とは限らない BYOD、契約先デバイスなど多様なエンドポイントを想定
すべての通信を保護 ネットワーク内部の通信であっても暗号化する
リソースアクセスは動的に許可 セッションごとに認証・認可を評価し、継続的に検証する

これらの前提に基づき、SP 800-207は論理コンポーネントとデプロイメントモデルを定義しています。

ゼロトラストアーキテクチャの論理コンポーネント

NIST SP 800-207では、ゼロトラストアーキテクチャを構成する論理コンポーネントを定義しています。これらは概念的なコンポーネントであり、実際の実装では複数のコンポーネントが単一の製品に統合されることもあります。

コアコンポーネントの全体像

flowchart TB
    subgraph subject["サブジェクト(アクセス要求者)"]
        user["ユーザー"]
        device["デバイス"]
        app["アプリケーション"]
    end
    
    subgraph controlplane["制御プレーン(Control Plane)"]
        subgraph pdp["Policy Decision Point"]
            pe["Policy Engine<br/>(ポリシーエンジン)"]
            pa["Policy Administrator<br/>(ポリシー管理者)"]
        end
    end
    
    subgraph dataplane["データプレーン(Data Plane)"]
        pep["Policy Enforcement Point<br/>(ポリシー実施点)"]
    end
    
    subgraph resources["企業リソース"]
        apps["アプリケーション"]
        data["データ"]
        services["サービス"]
    end
    
    subgraph infosources["情報源(Policy Information Point)"]
        cdm["CDMシステム<br/>(デバイス状態)"]
        idm["ID管理システム<br/>(ユーザー属性)"]
        siem["SIEMシステム<br/>(ログ・分析)"]
        threat["脅威インテリジェンス<br/>(外部脅威情報)"]
        compliance["コンプライアンス<br/>(ポリシー準拠状態)"]
        activity["アクティビティログ<br/>(行動履歴)"]
    end
    
    subject -->|"1. アクセス要求"| pep
    pep -->|"2. 認可要求"| pa
    pa -->|"3. ポリシー照会"| pe
    infosources -->|"4. 情報提供"| pe
    pe -->|"5. アクセス判定"| pa
    pa -->|"6. セッション確立指示"| pep
    pep -->|"7. アクセス許可"| resources

Policy Engine(PE)- ポリシーエンジン

Policy Engineは、アクセスの許可または拒否の最終決定を行うコンポーネントです。ゼロトラストアーキテクチャの「頭脳」として機能します。

Policy Engineの主要な責務

  1. 信頼度の評価: サブジェクト(ユーザー、デバイス)の信頼度を算出
  2. ポリシーの適用: 組織のアクセスポリシーに基づいて判定
  3. リスクの計算: 複数の情報源からのシグナルを統合してリスクスコアを算出
  4. アクセス判定: 許可、拒否、追加認証要求などの決定を下す
flowchart LR
    subgraph inputs["入力情報"]
        subject_info["サブジェクト情報<br/>・ユーザーID<br/>・ロール/グループ"]
        device_info["デバイス情報<br/>・セキュリティ状態<br/>・準拠状況"]
        resource_info["リソース情報<br/>・機密レベル<br/>・アクセス要件"]
        context_info["コンテキスト情報<br/>・時刻/場所<br/>・脅威レベル"]
    end
    
    subgraph pe["Policy Engine"]
        trust_algo["信頼アルゴリズム"]
        policy_eval["ポリシー評価"]
        risk_calc["リスク計算"]
    end
    
    subgraph outputs["出力"]
        decision["アクセス判定<br/>・許可<br/>・拒否<br/>・追加認証要求<br/>・条件付き許可"]
    end
    
    inputs --> pe
    pe --> outputs

Policy Administrator(PA)- ポリシー管理者

Policy Administratorは、Policy Engineの判定結果に基づいて、実際のアクセスパス(通信経路)を確立または終了するコンポーネントです。

Policy Administratorの主要な責務

  1. セッション確立: PEの許可に基づきPEPにセッション確立を指示
  2. 認証トークン生成: サブジェクトがリソースにアクセスするための認証情報を生成
  3. セッション終了: PEの指示やタイムアウトに基づきセッションを終了
  4. PEPの構成管理: アクセスルールをPEPに配布
sequenceDiagram
    autonumber
    participant Subject as サブジェクト
    participant PEP as Policy Enforcement Point
    participant PA as Policy Administrator
    participant PE as Policy Engine
    participant Resource as リソース
    
    Subject->>PEP: アクセス要求
    PEP->>PA: 認可要求
    PA->>PE: ポリシー判定要求
    PE->>PE: 信頼度評価・リスク計算
    PE->>PA: 判定結果(許可)
    PA->>PA: セッショントークン生成
    PA->>PEP: セッション確立指示
    PEP->>Subject: アクセス許可(トークン付与)
    Subject->>PEP: リソースアクセス(トークン提示)
    PEP->>Resource: リクエスト転送
    Resource->>PEP: レスポンス
    PEP->>Subject: レスポンス転送

Policy Enforcement Point(PEP)- ポリシー実施点

Policy Enforcement Pointは、サブジェクトとリソースの間に配置され、アクセス制御を実際に実施するコンポーネントです。ゲートキーパーとして機能し、許可されたアクセスのみを通過させます。

Policy Enforcement Pointの主要な責務

  1. アクセス要求の受付: サブジェクトからのアクセス要求を受け付ける
  2. 認可の確認: PAから受けた指示に基づきアクセスを許可/拒否
  3. 通信の仲介: 許可されたトラフィックをリソースに転送
  4. セッションの監視: 確立されたセッションを継続的に監視
  5. ログの記録: すべてのアクセス試行を記録
flowchart TB
    subgraph pep_detail["Policy Enforcement Pointの機能"]
        direction TB
        
        subgraph ingress["入口処理"]
            receive["リクエスト受信"]
            validate["トークン検証"]
            authz["認可確認"]
        end
        
        subgraph process["処理"]
            decision{"許可?"}
            proxy["プロキシ処理"]
            encrypt["暗号化/復号"]
        end
        
        subgraph egress["出口処理"]
            forward["リクエスト転送"]
            log["ログ記録"]
            monitor["セッション監視"]
        end
        
        receive --> validate
        validate --> authz
        authz --> decision
        decision -->|"Yes"| proxy
        decision -->|"No"| log
        proxy --> encrypt
        encrypt --> forward
        forward --> monitor
        monitor --> log
    end

Policy Information Point(PIP)- 情報提供元

Policy Information Pointは、Policy Engineがアクセス判定を行うために必要な情報を提供する各種システムの総称です。SP 800-207では、以下の情報源を定義しています。

情報源 提供する情報 具体例
CDMシステム デバイスのセキュリティ状態 パッチ適用状況、マルウェア検知結果、暗号化状態
ID管理システム ユーザーの属性・権限 ロール、グループ、認証履歴
脅威インテリジェンス 外部の脅威情報 既知の悪意あるIP、攻撃パターン
アクティビティログ 過去の行動履歴 アクセスパターン、異常行動検知
データアクセスポリシー リソースのアクセス要件 機密レベル、必要なクリアランス
PKIシステム 証明書情報 証明書の有効性、失効状況
SIEMシステム セキュリティイベント インシデント検知、相関分析結果

信頼アルゴリズム(Trust Algorithm)

Policy Engineの中核となるのが信頼アルゴリズムです。複数の情報源から収集したシグナルを統合し、アクセス要求の信頼度を数値化します。

信頼アルゴリズムの評価要素

flowchart TB
    subgraph factors["信頼度評価要素"]
        direction TB
        
        subgraph identity["アイデンティティ要素"]
            auth_strength["認証強度<br/>(MFA、パスワードレス等)"]
            user_risk["ユーザーリスクスコア<br/>(過去の行動、漏洩情報)"]
            session_age["セッション経過時間"]
        end
        
        subgraph device["デバイス要素"]
            compliance["コンプライアンス状態<br/>(ポリシー準拠)"]
            health["デバイスヘルス<br/>(マルウェア、パッチ)"]
            managed["管理状態<br/>(MDM登録、企業所有)"]
        end
        
        subgraph context["コンテキスト要素"]
            location["アクセス元<br/>(地理、ネットワーク)"]
            time["アクセス時刻<br/>(業務時間内外)"]
            behavior["行動パターン<br/>(通常との乖離)"]
        end
        
        subgraph resource["リソース要素"]
            sensitivity["機密レベル"]
            access_type["アクセス種別<br/>(読取、書込、削除)"]
        end
    end
    
    subgraph algorithm["信頼アルゴリズム"]
        calc["スコア計算"]
        threshold["閾値判定"]
    end
    
    subgraph result["判定結果"]
        allow["許可"]
        deny["拒否"]
        stepup["追加認証要求"]
        conditional["条件付き許可"]
    end
    
    factors --> algorithm
    algorithm --> result

信頼度計算の例

信頼アルゴリズムは、各要素にスコアと重みを割り当て、総合的な信頼度を計算します。以下は概念的な例です。

flowchart LR
    subgraph input["入力シグナル"]
        s1["認証: MFA済み<br/>スコア: 90"]
        s2["デバイス: 準拠<br/>スコア: 85"]
        s3["場所: 社内ネットワーク<br/>スコア: 80"]
        s4["行動: 通常パターン<br/>スコア: 95"]
    end
    
    subgraph calc["スコア計算"]
        weighted["重み付け平均<br/>= (90×0.3 + 85×0.3 + 80×0.2 + 95×0.2)<br/>= 87.5"]
    end
    
    subgraph threshold["閾値判定"]
        t1["高機密リソース: 90以上"]
        t2["中機密リソース: 70以上"]
        t3["低機密リソース: 50以上"]
    end
    
    subgraph decision["判定"]
        d1["高機密: 追加認証要求<br/>(87.5 < 90)"]
        d2["中機密: 許可<br/>(87.5 ≥ 70)"]
    end
    
    input --> calc
    calc --> threshold
    threshold --> decision

動的なポリシー適応

信頼アルゴリズムの重要な特徴は、状況に応じて動的にアクセス判定を変更できる点です。

シナリオ例:同一ユーザーの異なる状況での判定

シナリオ 認証 デバイス 場所 総合スコア 判定
通常業務 MFA 管理端末 社内 88 許可
在宅勤務 MFA 管理端末 自宅 82 許可
出張中 MFA 管理端末 海外 70 条件付き許可
不審なアクセス パスワードのみ 未登録端末 未知のIP 35 拒否

デプロイメントモデル

NIST SP 800-207では、ゼロトラストアーキテクチャを実装する3つのデプロイメントモデルを定義しています。組織の既存インフラ、セキュリティ要件、運用能力に応じて最適なモデルを選択します。

モデル1:デバイスエージェントとゲートウェイモデル

エンドポイントにエージェントをインストールし、ゲートウェイと連携してアクセス制御を行うモデルです。最も一般的に採用されているアプローチです。

flowchart TB
    subgraph subject["サブジェクト"]
        device["デバイス"]
        agent["エージェント<br/>(PEP機能)"]
    end
    
    subgraph controlplane["制御プレーン"]
        pdp["PDP<br/>(クラウド/オンプレミス)"]
    end
    
    subgraph gateway["ゲートウェイ"]
        gw_pep["ゲートウェイPEP"]
    end
    
    subgraph resources["リソース"]
        r1["オンプレミスアプリ"]
        r2["クラウドサービス"]
        r3["データベース"]
    end
    
    agent -->|"認証・認可要求"| pdp
    pdp -->|"アクセストークン"| agent
    agent -->|"暗号化トンネル"| gw_pep
    gw_pep --> r1
    gw_pep --> r3
    agent -->|"直接アクセス"| r2

特徴

項目 内容
適用場面 管理対象デバイスからの企業リソースアクセス
メリット デバイス単位での詳細な制御、オフライン時のローカルポリシー適用
デメリット エージェントのインストールが必要、BYODへの適用が難しい
実装例 Microsoft Entra ID + Intune、Zscaler Private Access、Cloudflare Access

エージェントの役割

  1. デバイス認証情報の提供(証明書、ハードウェアアテステーション)
  2. デバイスコンプライアンス状態の報告
  3. 暗号化トンネルの確立
  4. ローカルでのアクセス制御実施

モデル2:エンクレーブベースモデル

ネットワークの特定セグメント(エンクレーブ)をゲートウェイで保護し、エンクレーブ内のリソースへのアクセスを一括制御するモデルです。

flowchart TB
    subgraph subject["サブジェクト"]
        user["ユーザー/デバイス"]
    end
    
    subgraph controlplane["制御プレーン"]
        pdp["PDP"]
    end
    
    subgraph enclave1["エンクレーブA(開発環境)"]
        gw1["ゲートウェイPEP"]
        dev1["開発サーバー"]
        dev2["テストDB"]
        dev3["CIツール"]
    end
    
    subgraph enclave2["エンクレーブB(本番環境)"]
        gw2["ゲートウェイPEP"]
        prod1["本番アプリ"]
        prod2["本番DB"]
    end
    
    subgraph enclave3["エンクレーブC(機密データ)"]
        gw3["ゲートウェイPEP"]
        sensitive["機密データストア"]
    end
    
    user -->|"開発アクセス"| gw1
    user -->|"本番アクセス"| gw2
    user -->|"機密データアクセス"| gw3
    
    gw1 --> dev1 & dev2 & dev3
    gw2 --> prod1 & prod2
    gw3 --> sensitive
    
    pdp --> gw1 & gw2 & gw3

特徴

項目 内容
適用場面 レガシーシステムの保護、データセンター内のマイクロセグメンテーション
メリット エージェントレスで導入可能、既存インフラへの影響が小さい
デメリット エンクレーブ内での横方向移動は制御できない
実装例 ネットワークファイアウォール、マイクロセグメンテーション製品

エンクレーブの設計原則

  1. 機密レベルによる分離: 機密度の異なるリソースを別エンクレーブに配置
  2. 機能による分離: 開発、本番、バックアップなど環境ごとに分離
  3. 規制要件による分離: PCI DSS対象システムなど規制要件ごとに分離

モデル3:リソースポータルモデル

Webポータル経由でリソースにアクセスさせ、ポータルがPEPとして機能するモデルです。エージェントのインストールが不要で、BYODや外部パートナーのアクセスに適しています。

flowchart TB
    subgraph subject["サブジェクト"]
        user["ユーザー<br/>(ブラウザのみ)"]
    end
    
    subgraph controlplane["制御プレーン"]
        pdp["PDP<br/>(IdP統合)"]
    end
    
    subgraph portal["リソースポータル(PEP)"]
        proxy["リバースプロキシ"]
        session["セッション管理"]
        rendering["画面レンダリング"]
    end
    
    subgraph resources["バックエンドリソース"]
        webapp["Webアプリ"]
        legacy["レガシーアプリ"]
        file["ファイルサーバー"]
    end
    
    user -->|"HTTPS"| portal
    portal -->|"認証・認可"| pdp
    pdp -->|"トークン"| portal
    portal --> resources

特徴

項目 内容
適用場面 BYOD、外部パートナー、契約社員のアクセス
メリット エージェント不要、ブラウザのみでアクセス可能
デメリット ポータルがボトルネックになる可能性、レイテンシの増加
実装例 Azure AD Application Proxy、Citrix Secure Private Access

リソースポータルの追加機能

  1. シングルサインオン(SSO): 一度の認証で複数リソースにアクセス
  2. セッション録画: 特権アクセスの監査証跡
  3. クリップボード制御: データの外部持ち出し防止
  4. ウォーターマーク: 画面キャプチャへの抑止

デプロイメントモデルの比較と選択

flowchart TB
    start["アクセス要件の確認"]
    
    q1{"管理対象デバイス<br/>からのアクセス?"}
    q2{"エージェント<br/>インストール可能?"}
    q3{"レガシーシステム<br/>の保護が主目的?"}
    q4{"外部ユーザー<br/>のアクセスが多い?"}
    
    m1["モデル1<br/>エージェント+ゲートウェイ"]
    m2["モデル2<br/>エンクレーブベース"]
    m3["モデル3<br/>リソースポータル"]
    hybrid["ハイブリッド<br/>(複数モデルの組合せ)"]
    
    start --> q1
    q1 -->|"Yes"| q2
    q1 -->|"No"| q4
    q2 -->|"Yes"| m1
    q2 -->|"No"| q3
    q3 -->|"Yes"| m2
    q3 -->|"No"| m3
    q4 -->|"Yes"| m3
    q4 -->|"No"| hybrid

選択基準のまとめ

選択基準 モデル1 モデル2 モデル3
管理対象デバイス中心 最適 適用可 適用可
BYOD・外部ユーザー 不向き 適用可 最適
レガシーシステム保護 適用可 最適 適用可
導入の容易さ
きめ細かい制御

実際の組織では、これら3つのモデルを組み合わせたハイブリッドアプローチが一般的です。たとえば、社内ユーザーにはモデル1、外部パートナーにはモデル3、レガシーシステムにはモデル2を適用するといった構成です。

制御プレーンとデータプレーンの分離

ゼロトラストアーキテクチャでは、アクセス判定を行う「制御プレーン」と、実際のトラフィックが流れる「データプレーン」を明確に分離することが重要です。

分離の意義

flowchart TB
    subgraph controlplane["制御プレーン(Control Plane)"]
        direction LR
        pdp["PDP<br/>(認証・認可判定)"]
        policy["ポリシーDB"]
        logs["監査ログ"]
    end
    
    subgraph dataplane["データプレーン(Data Plane)"]
        direction LR
        pep["PEP<br/>(トラフィック制御)"]
        tunnel["暗号化トンネル"]
        traffic["アプリケーショントラフィック"]
    end
    
    controlplane -->|"判定結果のみ"| dataplane

分離のメリット

  1. スケーラビリティ: データプレーンの負荷と制御プレーンの負荷を独立してスケール
  2. セキュリティ: 制御プレーンを隔離することで攻撃対象を限定
  3. 可用性: データプレーン障害時も制御プレーンは影響を受けない
  4. 監査性: ポリシー判定とトラフィック処理を別々にログ取得

暗黙的信頼ゾーンの排除

従来のネットワークでは、「DMZ」「内部ネットワーク」「信頼済みゾーン」といった暗黙の信頼ゾーンが存在しました。ゼロトラストでは、これらの暗黙的な信頼を排除します。

flowchart TB
    subgraph traditional["従来のゾーンベースセキュリティ"]
        direction TB
        internet1["インターネット<br/>(非信頼)"]
        dmz1["DMZ<br/>(半信頼)"]
        internal1["内部ネットワーク<br/>(信頼)"]
        
        internet1 -->|"FW"| dmz1
        dmz1 -->|"FW"| internal1
    end
    
    subgraph zerotrust["ゼロトラストアーキテクチャ"]
        direction TB
        any["あらゆる場所<br/>(すべて非信頼)"]
        pep2["PEP"]
        resource["リソース<br/>(個別に保護)"]
        
        any -->|"毎回検証"| pep2
        pep2 -->|"許可時のみ"| resource
    end

実際のソリューションへのマッピング

NIST SP 800-207の論理コンポーネントは、実際の製品・サービスにどのようにマッピングされるのでしょうか。代表的なソリューションでの対応関係を示します。

Microsoft Entra ID + Intune

flowchart TB
    subgraph nist["NIST SP 800-207コンポーネント"]
        direction LR
        pe_nist["Policy Engine"]
        pa_nist["Policy Administrator"]
        pep_nist["Policy Enforcement Point"]
        pip_nist["Policy Information Point"]
    end
    
    subgraph microsoft["Microsoftソリューション"]
        direction LR
        ca["Conditional Access<br/>(条件付きアクセス)"]
        entra["Entra ID<br/>(Azure AD)"]
        intune["Intune<br/>(デバイス管理)"]
        defender["Defender for Endpoint"]
        sentinel["Microsoft Sentinel"]
    end
    
    pe_nist -.->|"実装"| ca
    pa_nist -.->|"実装"| entra
    pep_nist -.->|"実装"| intune
    pip_nist -.->|"実装"| defender
    pip_nist -.->|"実装"| sentinel
NISTコンポーネント Microsoftソリューション 役割
Policy Engine Conditional Access リスク評価・アクセス判定
Policy Administrator Entra ID セッション管理・トークン発行
Policy Enforcement Point Intune、Defender for Cloud Apps デバイス制御・アプリアクセス制御
Policy Information Point Defender for Endpoint、Sentinel 脅威情報・デバイス状態提供

Google BeyondCorp Enterprise

flowchart TB
    subgraph nist["NIST SP 800-207コンポーネント"]
        direction LR
        pe_nist2["Policy Engine"]
        pa_nist2["Policy Administrator"]
        pep_nist2["Policy Enforcement Point"]
    end
    
    subgraph google["Googleソリューション"]
        direction LR
        access["BeyondCorp Enterprise"]
        iap["Identity-Aware Proxy"]
        workspace["Google Workspace"]
        endpoint["Endpoint Verification"]
    end
    
    pe_nist2 -.->|"実装"| access
    pa_nist2 -.->|"実装"| workspace
    pep_nist2 -.->|"実装"| iap

Zscaler Zero Trust Exchange

NISTコンポーネント Zscalerソリューション 役割
Policy Engine Zero Trust Exchange 中央集中型ポリシー判定
Policy Administrator Zscaler Admin Portal ポリシー管理・配布
Policy Enforcement Point Zscaler Client Connector デバイスエージェント
Policy Enforcement Point Zscaler Private Access アプリケーションアクセス制御

アーキテクチャ設計のベストプラクティス

ゼロトラストアーキテクチャを設計する際の重要な考慮事項とベストプラクティスを紹介します。

設計原則

1. アイデンティティを中心に設計する

ネットワークの場所ではなく、アイデンティティ(ユーザー、デバイス、ワークロード)を中心にアクセス制御を設計します。

flowchart LR
    subgraph identity_centric["アイデンティティ中心の設計"]
        id["誰が(Who)"]
        device["何で(What device)"]
        context["どこから(Where)"]
        resource["何に(What resource)"]
        action["何を(What action)"]
    end
    
    id --> device --> context --> resource --> action

2. 最小権限の原則を徹底する

すべてのアクセスにおいて、必要最小限の権限のみを付与します。Just-In-Time(JIT)アクセスとJust-Enough-Access(JEA)を組み合わせます。

3. 暗号化をデフォルトとする

ネットワークの場所に関係なく、すべての通信を暗号化します。内部ネットワークであってもTLS/mTLSを適用します。

4. 継続的な検証を実装する

初回認証だけでなく、セッション中も継続的にリスクを評価し、必要に応じてアクセス権限を動的に調整します。

データフロー設計のポイント

flowchart TB
    subgraph design_points["データフロー設計のポイント"]
        direction TB
        
        p1["1. 単一障害点の排除<br/>PDPの冗長化"]
        p2["2. レイテンシの最小化<br/>PEPの分散配置"]
        p3["3. スケーラビリティ<br/>水平スケール可能な設計"]
        p4["4. フェイルセーフ<br/>PDP障害時のフォールバック"]
    end

フェイルクローズ vs フェイルオープン

モード 動作 適用場面
フェイルクローズ PDP障害時はすべてのアクセスを拒否 高機密リソース
フェイルオープン PDP障害時はキャッシュされたポリシーで判定 業務継続性重視

一般的には、フェイルクローズをデフォルトとし、業務継続性が特に重要なリソースに対してのみフェイルオープンを検討します。

移行時の共存アーキテクチャ

既存の境界型セキュリティからゼロトラストへ移行する際は、段階的なアプローチが必要です。

flowchart TB
    subgraph phase1["フェーズ1: 共存期"]
        direction TB
        legacy1["既存境界セキュリティ"]
        zt1["ゼロトラスト(パイロット)"]
        
        legacy1 --> |"大部分のアクセス"| resources1["リソース"]
        zt1 --> |"特定ユーザー/アプリ"| resources1
    end
    
    subgraph phase2["フェーズ2: 拡張期"]
        direction TB
        legacy2["既存境界セキュリティ<br/>(縮小)"]
        zt2["ゼロトラスト<br/>(拡大)"]
        
        legacy2 --> |"レガシーアクセス"| resources2["リソース"]
        zt2 --> |"主要アクセス"| resources2
    end
    
    subgraph phase3["フェーズ3: 完了期"]
        direction TB
        zt3["ゼロトラスト<br/>(全面適用)"]
        
        zt3 --> resources3["リソース"]
    end
    
    phase1 --> phase2 --> phase3

まとめ

本記事では、NIST SP 800-207に基づくゼロトラストアーキテクチャの設計について解説しました。

論理コンポーネントの理解

  • Policy Engine(PE): アクセス判定の中核、信頼アルゴリズムを実行
  • Policy Administrator(PA): セッション確立・終了の管理
  • Policy Enforcement Point(PEP): 実際のアクセス制御を実施
  • Policy Information Point(PIP): 判定に必要な情報を提供

3つのデプロイメントモデル

  1. エージェント+ゲートウェイモデル: 管理デバイス向けの標準的なアプローチ
  2. エンクレーブベースモデル: レガシーシステム保護に適したセグメント型
  3. リソースポータルモデル: BYODや外部ユーザー向けのエージェントレス型

設計のポイント

  • 制御プレーンとデータプレーンの分離
  • アイデンティティを中心とした設計
  • 継続的な検証の実装
  • 段階的な移行アプローチ

次の記事では、ゼロトラスト成熟度モデルと段階的導入ロードマップについて解説し、CISAの成熟度モデルを活用した導入計画の策定方法を紹介します。

参考リンク