はじめに
自作のWebアプリを外部に公開する際、アプリ自体のログイン機能だけに頼ると、総当たり攻撃や未実装の脆弱性を突かれるリスクが気になります。こうした場面で使われる考え方がゼロトラストであり、その実装の1つがCloudflare Accessです。
本記事では、まずゼロトラストという考え方を整理し、その上でCloudflare Accessの仕組みを見ていきます。
従来型セキュリティモデルの限界
従来のネットワークセキュリティは、しばしば「城と堀(Castle and Moat)」に例えられるモデルで語られてきました。ネットワークの外側から内側へ侵入することは難しくする一方、一度内側に入ってしまえば、その中の存在は基本的に信頼される、という考え方です。
このモデルの弱点は、攻撃者が何らかの方法で一度でも内側への侵入に成功すると、その後は比較的自由に内部を動き回れてしまうことです。
ゼロトラストとは
ゼロトラストは、この前提を覆すセキュリティモデルです。「ネットワークの内側・外側を問わず、いかなる存在もデフォルトでは信頼しない」ことを原則とし、あらゆるアクセス要求について、その都度アイデンティティ(誰か)とコンテキスト(状況)に基づいて認証・認可を行います。
主な原則は次の通りです。
- 最小権限の原則:必要最小限のアクセス権だけを付与する
- 継続的な検証:一度認証したら終わりではなく、アクセスのたびに検証する
- マイクロセグメンテーション:ネットワークを細かく区切り、万が一の侵害が起きても被害範囲を局所化する
これにより、たとえ何らかの形で一部が侵害されたとしても、被害が全体に広がりにくい構造になる、という利点があります。
Cloudflare Access(Zero Trust Network Access)
Cloudflare Accessは、このゼロトラストの考え方を実装した、VPNに代わるアクセス制御サービスです。ZTNA(Zero Trust Network Access)というカテゴリに分類されます。
従来のVPNとの違い
従来型のVPNは、一度接続を確立すると、その先の社内ネットワーク全体にアクセスできてしまうことが多く、これは前述の「城と堀」モデルに近い性質を持っています。Cloudflare Accessは、VPNのようにネットワーク全体への接続を許可するのではなく、アプリケーションごとに個別のアクセスポリシーを定義し、リクエストのたびに検証するという形を取ります。
仕組みの概要
- 保護したいアプリケーションの手前に、Cloudflare Accessによる認証ゲートを設定する
- ユーザーがそのアプリケーションへアクセスしようとすると、まずCloudflare Accessの認証画面が挟まる
- あらかじめ定義したポリシー(例:特定のメールアドレスのみ許可、特定の組織のアカウントのみ許可等)に基づいて、アクセスを許可するかどうかが判定される
- 許可された場合のみ、実際のアプリケーションへのアクセスが通る
認証方式には、メールアドレス宛のワンタイムコード、外部の認証プロバイダ(Google等)との連携など複数の選択肢があり、アプリ自体にログイン機能を実装していなくても、手前の層でアクセス制御を挟むことができます。
ポリシーの構成
Cloudflare Accessのポリシーは、最低でも1つのIncludeルール(アクセスを許可する対象を定義するルール)を含む必要があり、そこにExcludeルール(除外)やRequireルール(追加条件)を組み合わせることで、アクセス範囲を細かく絞り込めます。
自作アプリでの活用イメージ
家庭内で開発した個人利用のアプリを外部公開する場合、次のようなセキュリティ上の懸念が生じることがあります。
- サインアップ機能が誰でも使える状態のまま公開すると、無関係な第三者に新規アカウントを作られてしまう
- ログイン試行のレート制限(総当たり対策)が未実装
Cloudflare Accessを組み合わせることで、そもそもアプリ自体にリクエストが到達する前段階で「許可された特定の人物だけ」に絞り込めるため、アプリ側の認証機能の不備を補完する追加の防御層として機能します。既存のCloudflareアカウントがあれば無料枠の範囲で利用できる点も、個人運用のサーバーとの相性の良さにつながっています。
まとめ
| 概念 | 内容 |
|---|---|
| 城と堀モデル | 内側は信頼し、外側からの侵入だけを防ぐ従来型のセキュリティモデル |
| ゼロトラスト | 内側・外側を問わず何も信頼せず、都度検証するセキュリティモデル |
| ZTNA | ゼロトラストの考え方に基づくネットワークアクセス制御の分類 |
| Cloudflare Access | アプリケーションの手前に認証ゲートを挟む、VPNに代わるアクセス制御サービス |