Edge Security

Edge Computing におけるセキュリティの全体像。Edge はリクエストが最初に到達する地点であり、セキュリティの最前線。DDoS 緩和、WAF、TLS 終端、Zero Trust、Bot Management、認証、Supply Chain Security、マルチテナント分離の8領域を網羅する。

1. DDoS 緩和 at the Edge

DDoS 攻撃の3分類

レイヤー攻撃種別手法目的
L3/L4VolumetricUDP flood, ICMP flood, DNS amplification帯域幅の飽和
L3/L4ProtocolSYN flood, ACK flood, Fragmented packetステート枯渇
L7Application LayerHTTP flood, Slowloris, API abuseアプリケーションリソースの枯渇

Volumetric 攻撃が最大規模に達するが、Application Layer 攻撃は正規トラフィックとの区別が困難で防御が最も難しい。

Anycast による自動分散

Anycast は DDoS 防御の構造的基盤。同一 IP を 330+ PoP が BGP でアナウンスするため、攻撃トラフィックはネットワーク全体に自動分散される。

graph TB
    Attacker["攻撃者<br/>Botnet"] -->|"攻撃トラフィック<br/>(Anycast IP)"| BGP["BGP ルーティング"]
    BGP --> Tokyo["PoP 東京<br/>攻撃の一部を緩和"]
    BGP --> London["PoP ロンドン<br/>攻撃の一部を緩和"]
    BGP --> NY["PoP NY<br/>攻撃の一部を緩和"]
    BGP --> SaoPaulo["PoP サンパウロ<br/>攻撃の一部を緩和"]

攻撃耐力 = ネットワーク全体の容量。Cloudflare: 348 Tbps、477 データセンター。1つの PoP に集中せず分散されるため、PoP 増加で耐性が線形スケールする。

Cloudflare DDoS 防御アーキテクチャ

graph TB
    subgraph "L3/L4 保護"
        MT["Magic Transit<br/>BGP でネットワークプレフィックスを<br/>Cloudflare にアナウンス<br/>→ 全 IP トラフィックを保護"]
        Spec["Spectrum<br/>任意の TCP/UDP アプリケーション<br/>(SSH, SMTP, ゲームサーバ等)"]
    end
    subgraph "L7 保護"
        HTTP["HTTP DDoS Protection<br/>HTTP/S トラフィックの<br/>アプリケーション層攻撃を緩和"]
    end
    subgraph "高度な保護"
        ATCP["Advanced TCP Protection<br/>ランダム化・偽装 ACK flood 等<br/>out-of-state 攻撃の検出"]
        ADNS["Advanced DNS Protection<br/>完全ランダム化 DNS 攻撃<br/>(Water Torture Attack) 対策"]
        PFP["Programmable Flow Protection<br/>カスタム eBPF パケットロジック<br/>UDP L7 プロトコル向け"]
    end
    MT --- ATCP
    Spec --- ATCP
    HTTP --- ADNS

Magic Transit (L3/L4): 顧客のネットワークプレフィックス (/24 以上) を BGP で Cloudflare にアナウンス。全 IP トラフィックが Cloudflare を通過し、クリーンなトラフィックのみ GRE トンネル / PNI (Private Network Interconnect) でオリジンに転送。

Spectrum (L4): HTTP/S 以外の任意の TCP/UDP アプリケーション (SSH, SMTP, ゲームサーバ, カスタムプロトコル) を Cloudflare の L4 DDoS 防御でプロキシ。

HTTP DDoS Protection (L7): 全プランで利用可能。Managed Rulesets として自律的に動作し、複数の動的緩和ルールで構成。

自律型検出 (ML ベース)

Cloudflare の DDoS 検出は完全自律型。人間の介入なしにマイクロ秒〜数秒で検出・緩和する。

コンポーネント役割
dosd (Denial of Service Daemon)パケットサンプルからヒューリスティクスで異常パターンを検出。フィンガープリント順列を生成
eBPF プログラムカーネルレベル (XDP) でパケットをドロップ。ワイヤスピードで緩和
Gossip プロトコルサーバ間で脅威インテリジェンスをグローバル共有
Adaptive DDoSEnterprise 向け。ML スコア、クライアントインテリジェンス、トラフィックプロファイリングシグナル

検出から緩和まで: シングルディジットマイクロ秒 (L3/L4 既知パターン) 〜 3秒以内 (グローバル平均)。

Scrubbing Center vs Inline Mitigation

比較Scrubbing Center (従来型)Inline Mitigation (Cloudflare 方式)
アーキテクチャ攻撃検出後にトラフィックを専用洗浄センターにバックホール全トラフィックが常時全 PoP を通過。各 PoP で即座に緩和
レイテンシバックホールによる追加レイテンシ追加レイテンシなし (最寄り PoP で処理)
検出速度数分〜数十分 (手動介入が必要なケースも)マイクロ秒〜3秒 (完全自律)
容量洗浄センターの物理容量に制限ネットワーク全体の容量 (348 Tbps)
always-onオンデマンド型が多い常時オン

Inline Mitigation が優位な理由: DDoS 攻撃の 89% (L3/L4) と 75% (HTTP) が 10分以内に終了する。バックホール型では検出と切り替えに時間がかかり、短時間の攻撃に対応できない。

2025-2026 攻撃トレンド

指標数値時期
年間 DDoS 攻撃数47.1M2025年通年 (前年比 121% 増)
Q1 攻撃数20.5M2025 Q1 (前年比 358% 増)
hyper-volumetric (>1 Tbps)700+ (1日平均8件)2025 Q1
最大帯域幅攻撃7.3 Tbps2025年5月 (過去最大記録)
最大パケットレート4.8 Bpps2025 Q1
最大リクエストレート205 Mrps2025 Q4
最大 L3/L4 攻撃31.4 Tbps2025 Q4 (35秒間)

7.3 Tbps 攻撃の詳細 (2025年5月): 122,145 ソース IP、5,433 AS、161か国から発生。45秒間で 37.4 TB のデータを送信。99.996% が UDP flood。Cloudflare の自律システムが人間の介入なしに完全緩和。

Aisuru-Kimwolf ボットネット: 100万〜400万台の Android TV デバイスで構成。2025 Q4 に「Night Before Christmas」キャンペーンで 205 Mrps / 24 Tbps の攻撃を展開。

新興攻撃ベクター (2025 Q1):

DDoS 防御の料金モデル

プロバイダモデル特徴
CloudflareUnmetered Mitigation全プラン (Free 含む) で L3-L7 DDoS 防御が無制限・無課金。攻撃規模による追加料金なし
AWS Shield Standard無料 (L3/L4 のみ)Advanced は $3,000/月 + データ転送料
Akamai ProlexicScrubbing Center 型帯域幅ベースの従量課金。エンタープライズ契約

Cloudflare の unmetered mitigation は業界で異例。攻撃規模に関係なく追加料金が発生しないため、攻撃者が「課金攻撃」(Bill flooding) を仕掛けるインセンティブを排除する。

2. WAF (Web Application Firewall) at the Edge

WAF とは何か

Web アプリケーションとインターネットの間に配置されるセキュリティレイヤー。HTTP/S リクエストを検査し、OWASP Top 10 に代表される一般的な Web 攻撃を検出・ブロックする。

graph LR
    Client["Client"] --> Edge["Edge PoP"]
    subgraph WAF["WAF 処理パイプライン"]
        MR["Managed Rulesets<br/>(既知の攻撃パターン)"]
        CR["Custom Rules<br/>(独自のロジック)"]
        RL["Rate Limiting<br/>(流量制御)"]
    end
    Edge --> WAF
    WAF -->|"Clean traffic"| Origin["Origin"]
    WAF -->|"Block / Challenge"| Client

Edge WAF の利点

Edge WAF はオリジンに到達する前にリクエストをブロックするため:

  1. オリジン負荷削減: 悪意あるリクエストがオリジンに到達しない
  2. レイテンシ: ユーザーに近い場所で即座にブロック判定
  3. スケール: 全 PoP でルールが実行されるため、攻撃が分散しても対応可能
  4. 統一ポリシー: 全オリジンに一貫したセキュリティポリシーを適用

Cloudflare WAF の仕組み

Managed Rulesets

ルールセット内容更新頻度
Cloudflare Managed RulesetCloudflare のセキュリティチームが管理。ゼロデイ脆弱性保護を含む常時 (脆弱性公開後数時間以内)
Cloudflare OWASP Core RulesetOWASP ModSecurity CRS に基づく。SQL Injection, XSS, RCE 等定期的
Cloudflare Leaked Credentials Detection漏洩した認証情報を使ったログイン試行を検出常時

OWASP Core Ruleset の Sensitivity Score: 各ルールがスコアに貢献し、合計スコアが閾値を超えるとアクションを実行。感度レベル (Low / Medium / High / Off) で閾値を調整可能。偽陽性を減らしながら検出率を維持するためのバランス機構。

Custom Rules (Wirefilter 構文)

Cloudflare の Rules Language (Wirefilter ベース) で独自のフィルタリングロジックを記述。

マッチ可能なフィールド:

# 例: 特定の国からの管理画面アクセスをブロック
(http.request.uri.path contains "/admin" and ip.geoip.country ne "JP")

Rate Limiting Rules

スライディングウィンドウ方式で特定の条件にマッチするリクエストの流量を制御。

# 例: 同一 IP から /api/login へ 1分間に 10回以上のリクエストをブロック
Expression: (http.request.uri.path eq "/api/login")
Characteristics: ip.src
Rate: 10 requests / 60 seconds
Action: Block (duration: 600 seconds)

2025年6月に旧バージョンの Rate Limiting Rules は廃止。新バージョンはゾーン単位またはアカウント単位で設定可能。

AWS WAF, Akamai との比較

比較Cloudflare WAFAWS WAFAkamai App & API Protector
デプロイモデルEdge (全 PoP)CloudFront / ALB / API Gateway に紐付けEdge (4,100+ PoP)
ルール管理Managed + Custom (Wirefilter)Managed Rules + Custom (JSON)Adaptive Security Engine
OWASP カバレッジCore Ruleset (Sensitivity Score)OWASP Top 10 Managed Rule Group独自 + OWASP
API セキュリティAPI Shield, Schema ValidationAPI Gateway 統合API Security (WAAP の一部)
料金Pro $20/月〜 (WAF 含む)Pay-as-you-go ($5/ACL + $1/ルール/月)エンタープライズ契約
セキュリティ効力 (独立テスト)中程度低 (API 攻撃 0% ブロック)最高 (WAAP テストで最高スコア)
適性SMB〜EnterpriseAWS エコシステム利用者大規模 Enterprise

独立テスト (2025): Akamai は OWASP API 攻撃の 100% をブロック、Cloudflare は 28.7%、AWS は 0%。ただし Cloudflare は SMB 向けのコストパフォーマンスと DDoS 防御の統合で優位。

Positive Security Model vs Negative Security Model

比較Negative Security (ブラックリスト)Positive Security (ホワイトリスト)
デフォルト全て許可。既知の悪意あるパターンをブロック全て拒否。明示的に許可されたものだけ通過
強み導入が容易。既存アプリへの影響が少ない未知の攻撃にも対応可能
弱み未知の攻撃をすり抜ける。ルール肥大化設定が複雑。正規トラフィックの誤ブロック
実装例WAF Managed Rulesets (署名ベース)API Schema Validation, Allowlist
現代のアプローチハイブリッド: Negative (Managed Rules) + Positive (API Schema) + ML 異常検出

WAF Bypass テクニックとその対策

手法説明対策
エンコーディングURL エンコード、Unicode (%uXXXX)、Base64、二重エンコードデコード正規化を多段で実施
難読化SQL: sElEcT, SEL/**/ECT、XSS: <img/src=x onerror=...>大文字小文字非依存 + コメント除去後の再検査
HTTP パラメータ汚染同一パラメータを複数回送信し、WAF とアプリで異なる値を解釈させるパラメータのマージルールを統一
フラグメンテーションペイロードを複数のチャンクに分割リアセンブル後に検査
パーシング不一致WAF とアプリの HTTP パーサーの差異を悪用 (WAFFLED 研究, 2025)パーサーの一致保証、ファジングテスト
パディングCVE-2025-55182 等のパディング回避正規化ルールの継続的更新

WAFFLED (2025年論文): ファジングで WAF とバックエンドアプリケーション間のパーシング不一致を体系的に発見する手法。全ての主要 WAF で回避可能な不一致が発見された。

2025-2026: AI-Powered WAF

ベンダーAI/ML 活用
CloudflareAttack Score (ML ベース)。リクエストの悪意度を 1-99 でスコアリング。AI Security for Apps (Enterprise)
AkamaiAdaptive Security Engine。攻撃パターンの自動学習
F5署名ベース + AI/ML 行動分析のデュアルレイヤー
Google Cloud ArmorML 強化型 WAF。大規模分散アプリケーション向け
FortiWeb従来署名 + ML 異常検出のデュアルモデル

AI WAF のトレンド: 署名ベース (既知の攻撃) + ML 異常検出 (未知の攻撃) のハイブリッドが標準に。CSP ポリシーの自動生成 (Google Project Fort) も進行中。

3. TLS 終端 at the Edge

なぜ Edge で TLS を終端するか

graph LR
    subgraph "Edge TLS 終端"
        C1["Client<br/>(Sydney)"] -->|"TLS 1.3<br/>1-RTT ~10ms"| E1["Edge PoP<br/>(Sydney)"]
        E1 -->|"内部暗号化"| O1["Origin<br/>(Virginia)"]
    end
    subgraph "直接接続 (Edge なし)"
        C2["Client<br/>(Sydney)"] -->|"TLS 1.3<br/>2-RTT ~700ms"| O2["Origin<br/>(Virginia)"]
    end

シドニー → バージニアの直接 TLS ハンドシェイク: 2 RTT ~700ms。Edge PoP でローカルに終端すれば ~10ms。CDN の最大の性能貢献の一つ (Anycast / CDN より)。

TLS 1.3 ハンドシェイク

比較TLS 1.2TLS 1.3
ハンドシェイク2-RTT1-RTT (30-50% レイテンシ削減)
暗号スイート多数 (脆弱なものを含む)5つに厳選 (全て AEAD + PFS)
0-RTTなしあり (再接続時)
前方秘匿性オプション必須
採用率レガシー~70% (2025年中旬)

0-RTT (Early Data): TLS セッション再開時にクライアントが最初のメッセージでアプリケーションデータを暗号化して送信。ハンドシェイクレイテンシをゼロに。ただしリプレイ攻撃のリスクがあるため、ほとんどのサイトは 0-RTT を無効化するか冪等な GET リクエストに限定。

Edge-to-Origin の暗号化モード (Cloudflare)

graph LR
    subgraph Flexible["Flexible"]
        CF1["Client"] -->|"HTTPS"| E1["Edge"]
        E1 -->|"HTTP (平文)"| O1["Origin"]
    end
    subgraph Full["Full"]
        CF2["Client"] -->|"HTTPS"| E2["Edge"]
        E2 -->|"HTTPS (証明書未検証)"| O2["Origin"]
    end
    subgraph FullStrict["Full (Strict)"]
        CF3["Client"] -->|"HTTPS"| E3["Edge"]
        E3 -->|"HTTPS (証明書検証)"| O3["Origin"]
    end
モードClient → EdgeEdge → Origin証明書要件
OffHTTPHTTPなし
FlexibleHTTPSHTTP (平文)なし (危険: オリジンは暗号化されない)
FullHTTPSHTTPS自己署名可。CN/SAN 不問
Full (Strict)HTTPSHTTPS有効な証明書必須 (CA 発行 or Cloudflare Origin CA)
Strict (SSL-Only Origin Pull)常時 HTTPS 強制HTTPS有効な証明書必須

推奨: Full (Strict) 以上。Flexible は Edge-Origin 間が平文のため MITM 攻撃に脆弱。

証明書管理

方式説明
Cloudflare Universal SSL無料。Edge 証明書を自動発行・更新。Let’s Encrypt / Google Trust Services
Cloudflare Origin CAオリジン用の無料証明書。Cloudflare 独自の CA が発行。15年有効
Advanced Certificate Managerカスタム証明書のアップロード、TLS バージョン固定、証明書ピンニング等
Let’s Encrypt (ACME)90日有効。自動更新。Edge 側は Cloudflare が管理、Origin 側は certbot 等

2025-2026 の重要変更: CA/Browser Forum が TLS 証明書の有効期間を 398日 → 200日に段階的短縮 (2025年4月決定、2026年3月施行)。自動化 (ACME) が事実上必須に。

HSTS と Certificate Transparency

HSTS (HTTP Strict Transport Security): ブラウザに対して「このドメインには HTTPS でのみ接続せよ」と指示。Strict-Transport-Security: max-age=31536000; includeSubDomains; preload。Edge で HSTS ヘッダを注入するのが最も確実。

Certificate Transparency (CT): 全ての公開 CA 発行証明書を CT ログに記録。不正な証明書の発行を検出可能にする。Cloudflare は CT ログを運営し、証明書発行の透明性を確保。

Post-Quantum 暗号 at the Edge (2025-2026)

時期マイルストーン
2025年3月Cloudflare の TLS トラフィックの 1/3 超が hybrid ML-KEM で保護
2025年9月~43% に増加
2026年初頭60%+ が hybrid ML-KEM (ML-KEM-768 + X25519)
2026年6月 (目標)全 PQC 機能のロールアウト完了
2030年 (NIST)RSA / ECC 非推奨化期限

Cloudflare は 600万以上のドメインをデフォルトで Post-Quantum 対応に自動アップグレード。Edge が PQC 移行の最前線。

Edge での mTLS (Mutual TLS)

通常の TLS はサーバーのみ認証するが、mTLS はクライアントも証明書で認証する。

ユースケース説明
IoT デバイス認証デバイスごとにクライアント証明書を発行。証明書なしの接続を拒否
API 間通信サービス間の相互認証。API キーより強固
Zero TrustCloudflare Access の mTLS ポリシーでアプリケーションアクセスを制御

Cloudflare は PKI を提供し、クライアント証明書の発行・管理が可能。BYOCA (Bring Your Own CA) もサポート。2026年3月に RFC 9440 フォーマットの新フィールド追加。

4. Zero Trust at the Edge

Zero Trust Architecture の概要

従来の境界型セキュリティ (城と堀モデル) に対し、Zero Trust は「ネットワーク内部も外部も信頼しない」原則に基づく。

原則説明
Never Trust, Always Verify全てのアクセスに認証・認可を要求。ネットワーク位置は信頼の根拠にならない
Least Privilegeユーザーが必要とする最小限のリソースのみアクセスを許可
Assume Breach侵害は既に発生していると仮定し、被害の最小化を設計

BeyondCorp モデル

Google が 2014年に論文で公開した Zero Trust の実装モデル。

要素説明
アクセス判断基準ネットワーク位置ではなく、ユーザーの ID + デバイスの状態 + コンテキスト
VPN 不要全てのアプリケーションをインターネットに公開し、アクセスプロキシで保護
デバイストラストデバイスインベントリ、OS バージョン、パッチ状態等で信頼レベルを動的に算出

ZTNA vs VPN

比較VPNZTNA (Zero Trust Network Access)
アクセス範囲ネットワーク全体 (過剰な権限)アプリケーション単位 (最小権限)
認証後ネットワーク内の全リソースにアクセス可能許可されたアプリケーションのみ
侵害時の影響横方向移動 (Lateral Movement) が容易アプリケーション単位で分離。横方向移動を阻止
拡張性VPN コンセントレータの帯域幅に依存Edge 分散で無制限にスケール

Cloudflare Access / Cloudflare Tunnel

graph LR
    User["User<br/>+ WARP Client"] -->|"1. 認証要求"| Edge["Cloudflare Edge"]
    Edge -->|"2. IdP 認証<br/>(Okta, Azure AD 等)"| IdP["Identity Provider"]
    IdP -->|"3. JWT 発行"| Edge
    Edge -->|"4. ポリシー評価<br/>(ユーザー + デバイス + コンテキスト)"| Edge
    Edge -->|"5. 認可されたトラフィックのみ"| Tunnel["Cloudflare Tunnel<br/>(cloudflared)"]
    Tunnel -->|"6. アウトバウンド接続<br/>(インバウンドポート不要)"| Origin["内部アプリケーション"]

Cloudflare Access: IdP 統合型の ZTNA。ユーザー/デバイス/IP/国/mTLS 証明書等の条件でアクセスポリシーを定義。認証後に JWT (Cf-Access-Jwt-Assertion) を発行し、6週間ごとにキーをローテーション。

Cloudflare Tunnel: cloudflared デーモンがオリジンからアウトバウンド接続を確立。パブリック IP やインバウンドポートが不要。2026年から QUIC (HTTP/3) がデフォルト。UDP トラフィックの分離により DNS 等のレイテンシ改善。

Edge で Zero Trust を実装するメリット

メリット説明
グローバル分散認証330+ PoP で認証を実行。ユーザーに近い場所で低レイテンシ
DDoS + Zero Trust の統合DDoS 緩和と認証が同一プラットフォーム。攻撃トラフィックは認証前にブロック
インバウンドポート不要Tunnel のアウトバウンド接続により攻撃対象面を劇的に縮小
ポスト量子対応2026年から hybrid ML-KEM で Tunnel 通信を保護

5. Bot Management at the Edge

Bot の分類

分類例割合 (全トラフィック)
Good Bots (Verified)Googlebot, Bingbot, Slackbot~15%
Bad Bots (Known)スクレイパー、クレデンシャルスタッフィング~30%
Advanced Botsブラウザ自動化、ML 回避、レジデンシャルプロキシ使用~5%
人間正規ユーザー~50%

Bot Score / Bot Detection の仕組み

Cloudflare Bot Management は各リクエストに Bot Score (1-99) を割り当てる。

スコア範囲分類説明
1Definite Bot確実に Bot (静的リソースと Verified Bot を除く)
2-29Likely BotBot の可能性が高い。少量の正規トラフィックを含む場合あり
30-99Likely Human人間の可能性が高い

検出シグナル:

Challenge メカニズム

Challenge仕組みユーザー体験
JS ChallengeJavaScript を実行させ、ブラウザ環境を検証数秒の待機画面
Managed Challenge適応型。Bot Score に応じてフリクションを段階的に調整Bot → 不可視 Challenge / CAPTCHA。人間 → ほぼフリクションなし
Interactive Challenge明示的なユーザー操作 (旧 CAPTCHA)画像選択等
Turnstile匿名フロー向けの軽量 Challenge。CAPTCHA なしフォーム送信前の不可視検証。プライバシー重視

Managed Challenge が推奨。クライアントの特性に応じて最適な Challenge を自動選択し、人間のユーザーへの影響を最小化しつつ Bot を効果的にブロック。

Cloudflare Bot プラン体系

プラン機能
FreeBot Fight Mode (基本的なパターンマッチ)
Pro / BusinessSuper Bot Fight Mode (設定可能、Skip ルール対応)
EnterpriseBot Management (Bot Score, Detection IDs, ML モデル自動更新, WAF 統合)

Super Bot Fight Mode は 2025年に設定可能になり、Skip ルールとの併用で柔軟なデプロイが可能に。

6. Edge での認証・認可パターン

JWT 検証 at the Edge

Edge で JWT を検証する最大の利点: 不正なトークンを持つリクエストがオリジンに到達しない。

// Cloudflare Workers での JWT 検証
import { jwtVerify, createRemoteJWKSet } from 'jose'

const JWKS = createRemoteJWKSet(
  new URL('https://example.cloudflareaccess.com/cdn-cgi/access/certs')
)

export default {
  async fetch(request: Request): Promise<Response> {
    const token = request.headers.get('Cf-Access-Jwt-Assertion')
    if (!token) return new Response('Unauthorized', { status: 401 })

    try {
      const { payload } = await jwtVerify(token, JWKS, {
        issuer: 'https://example.cloudflareaccess.com',
        audience: 'aud-tag-from-dashboard',
      })
      // 検証成功 → オリジンに転送
      return fetch(request)
    } catch {
      return new Response('Forbidden', { status: 403 })
    }
  }
}

JWKS キャッシュ戦略

Edge での JWKS (JSON Web Key Set) 取得はネットワーク往復が発生するため、パフォーマンスのために:

OAuth 2.0 / OIDC トークン検証

Edge での OIDC フロー:

  1. Edge Middleware がリクエストの Authorization ヘッダを検査
  2. Bearer トークンを抽出し、IdP の .well-known/openid-configuration から JWKS エンドポイントを取得
  3. トークンの署名検証 + iss, aud, exp クレーム検証
  4. 検証成功 → リクエストをオリジンに転送。失敗 → 401/403

Akamai EdgeWorkers は OIDC + Keycloak の統合パターンを提供。

Edge での Session 管理

戦略説明適性
JWT (ステートレス)トークンに全情報を含む。Edge で検証完結最も Edge 向き
KV バック セッションセッション ID を Cookie で受け取り、KV から状態をルックアップEventual consistency 許容時
Durable Objectsセッション単位で DO を割り当て。Strong consistencyリアルタイムアプリ

制約: Edge での認証はステートレス検証 (JWT 署名検証 + 有効期限チェック) に限定すべき。セッション DB への同期的ルックアップはレイテンシを発生させる (Edge 設計パターン のアンチパターン参照)。

Cloudflare Access の JWT 検証フロー

sequenceDiagram
    participant User as User
    participant Edge as Cloudflare Edge
    participant IdP as Identity Provider
    participant Origin as Origin Server

    User->>Edge: リクエスト (保護されたアプリ)
    Edge->>Edge: Access ポリシー評価
    Edge->>IdP: 認証リダイレクト
    IdP->>User: ログインページ
    User->>IdP: 認証情報送信
    IdP->>Edge: 認証成功 + ID トークン
    Edge->>Edge: JWT 生成 (RS256 署名)
    Edge->>User: JWT (Cf-Access-Jwt-Assertion ヘッダ + CF_Authorization Cookie)
    User->>Edge: 後続リクエスト (JWT 付き)
    Edge->>Edge: JWT 検証 (署名 + iss + aud + exp)
    Edge->>Origin: Cf-Access-Jwt-Assertion ヘッダ付きで転送
    Origin->>Origin: JWT 検証 (公開鍵で署名確認)

7. Supply Chain Security

Edge ランタイムのサプライチェーンリスク

Edge で実行されるコードはサプライチェーン攻撃の新しい攻撃対象面を持つ:

リスク説明
npm 依存関係悪意あるパッケージの混入。Edge で実行される Worker が汚染
CDN ポイズニングCDN から配信されるスクリプトの改ざん
ランタイム脆弱性V8 / workerd の脆弱性。パッチまでの window
ビルドパイプラインCI/CD の侵害で悪意あるコードを注入

SRI (Subresource Integrity)

CDN 等のサードパーティから読み込むリソースの完全性を暗号ハッシュで検証するブラウザセキュリティ機能。

<script src="https://cdn.example.com/app.js"
  integrity="sha384-oqVuAfXRKap7fdgcCY5uykM6+R9GqQ8K/uxy9rx7HNQlGYl1kPzQho1wx4JwY8wC"
  crossorigin="anonymous">
</script>

Signature-based SRI: 従来のハッシュベースに加え、署名ベースの完全性検証を追加する拡張仕様が W3C WICG で策定中。コンテンツの更新を許容しつつ、発行者の署名で正当性を保証。

WASM モジュールのセキュリティ

WASM at the Edge のセキュリティ特性:

現時点で WASM モジュールの標準的な署名・検証メカニズムは確立されていないが、WASM at the Edge のリニアメモリモデルが本質的な分離を提供。

8. Edge 固有のセキュリティ課題

マルチテナントの分離

V8 Isolates のマルチテナント環境における分離は、Cloudflare の多層防御で担保される:

graph TB
    subgraph L3["Layer 3: Cordon"]
        C["信頼度ベースのプロセス分離<br/>Free と Enterprise は同一プロセスで実行しない"]
    end
    subgraph L2["Layer 2: プロセスサンドボックス"]
        P["Linux namespaces + seccomp<br/>外部通信は UNIX domain socket のみ"]
    end
    subgraph L1["Layer 1: V8 Sandbox + PKU"]
        V["40-bit サンドボックスオフセット<br/>Memory Protection Keys<br/>クロス Isolate アクセスをハードウェアトラップで阻止"]
    end
    L3 --> L2 --> L1

V8 Isolate のリスク: 1プロセス内で数千のテナントが共存するため、JIT コンパイラのバグによるサンドボックスエスケープが全テナントに波及するリスクがある。V8 Sandbox (Chrome 123〜) がこのリスクを大幅に軽減: ヒープ内ポインタを 40-bit オフセットに変換し、外部メモリアクセスを間接テーブル経由に制限。

Spectre / Meltdown

マイクロアーキテクチャ攻撃は V8 Isolates のソフトウェア分離を迂回する理論上のリスク:

攻撃影響Edge での対策
Spectre v1 (Bounds Check Bypass)投機的実行で境界外メモリを読み取りV8 のサイトアイソレーション + タイマー無効化
Spectre v2 (Branch Target Injection)分岐予測を操作して任意コード実行Retpoline, eIBRS
Meltdownカーネルメモリの読み取りKPTI (Kernel Page Table Isolation)
VMScape (2025)VM エスケープの新手法HW 分離の強化

Cloudflare Workers の Spectre 対策 (V8 Isolates より):

エッジノードの物理セキュリティ

Edge PoP は世界中の ISP、データセンター、IXP (Internet Exchange Point) に物理配置される。中央 DC と比べて物理セキュリティの管理が分散・困難。

リスク対策
物理的なサーバーアクセスコロケーション施設のセキュリティ基準 (SOC 2, ISO 27001)
ディスク抜き取り保存データの暗号化 (at-rest encryption)。暗号鍵は中央管理
サプライチェーン (HW)TPM (Trusted Platform Module) によるブート検証
内部者脅威最小権限原則、監査ログ、多要素認証

Cloudflare は全サーバーで full-disk encryption + Secure Boot を実施。鍵は中央の KMS から配布。

セキュリティヘッダの自動注入パターン

Edge でセキュリティヘッダを一元管理する定石パターン (Edge 設計パターン より):

const SECURITY_HEADERS: Record<string, string> = {
  'Strict-Transport-Security': 'max-age=31536000; includeSubDomains; preload',
  'X-Content-Type-Options': 'nosniff',
  'X-Frame-Options': 'DENY',
  'Referrer-Policy': 'strict-origin-when-cross-origin',
  'Permissions-Policy': 'camera=(), microphone=(), geolocation=()',
  'X-XSS-Protection': '0', // 無効化推奨 (CSP に置き換え)
}

export default {
  async fetch(request: Request): Promise<Response> {
    const response = await fetch(request)
    const modified = new Response(response.body, response)
    for (const [key, value] of Object.entries(SECURITY_HEADERS)) {
      modified.headers.set(key, value)
    }
    return modified
  }
}

動的 CSP (Nonce ベース): Edge で各リクエストにランダムな nonce を生成し、CSP ヘッダと HTML の <script nonce="..."> に注入。XSS 防御を強化しつつ、インラインスクリプトを安全に許可。

Edge でヘッダを一元管理するメリット:

Edge Security の全体像

graph TB
    Client["Client"] --> DDoS["1. DDoS 緩和<br/>Anycast 分散 + 自律検出<br/>マイクロ秒で緩和"]
    DDoS --> Bot["2. Bot Management<br/>ML Score + Challenge<br/>Bad bot をフィルタ"]
    Bot --> WAF["3. WAF<br/>Managed Rules + Custom Rules<br/>OWASP Top 10 対策"]
    WAF --> TLS["4. TLS 終端<br/>1-RTT / 0-RTT<br/>PQC hybrid ML-KEM"]
    TLS --> ZT["5. Zero Trust<br/>Access + Tunnel<br/>JWT 検証"]
    ZT --> Auth["6. 認証/認可<br/>JWT / OAuth / mTLS"]
    Auth --> Headers["7. ヘッダ注入<br/>HSTS, CSP, X-Frame"]
    Headers --> Origin["Origin Server"]

リクエストは Edge に到達した瞬間から7層のセキュリティを通過する。各層は独立に動作し、前段で弾かれたリクエストは後段に到達しない。これにより、オリジンには検証済みの正規トラフィックのみが到達する。

押さえどころ (カード化候補)

関連

Graph