Cloudflare

今すぐ500円で始めるゼロトラスト
ーコラムー
2019年9月6日号


今すぐ500円で始めるゼロトラスト

■ゼロトラスト・ネットワークについてぼんやりとしか理解できていないので、もう少し鮮明に理解したい。
■実際に触ってみて使用感を確かめたい。
■トライアルに際してメールでの申し込みは煩わしい。今すぐオンデマンドで試したい。

この記事は、上記のように思われている方へ向けて書いています。

最近、セキュリティ業界では「ゼロトラスト」という言葉が大変流行しています。 セキュリティ強化のための概念、設計モデルであり、アプリケーションへの接続に際してネットワークを決して信用せず、必ず強固な認証を行った上でアクセスを許可すべきという思想で、ゼロトラスト・モデル、ゼロトラスト・ネットワークなどとも呼ばれています。

当サイトはCloudflareに関する情報発信を行っていますが、そのCloudflareにゼロトラスト・モデルの実現で1つの要素となる機能が提供されていますので紹介させて頂きたいと思います。 ゼロトラスト・モデルの中でも特にSDP(Software Defined Perimeter:ソフトウェア定義型の境界)などと呼ばれる領域で、IaaSやオンプレミスのサーバへどこからでも安全に接続できるようにすることがコンセプトです。

これまでのセキュリティ・ソリューションは、世間を騒がせた象徴的なセキュリティ・インシデントに対抗すべく生まれたものが中心だったように思います。 しかし、ゼロトラストは「“こうしておけば将来にわたってかなり安全”という仕組みを作りたい!」という思いを強く感じ取れるものであり、その点で大変共感できます。

また、「セキュリティモデル」と言うとBell-LaPadula、Bibaなど、かなり抽象的なものしか思い当たるものがなく、実システムにすぐに適用できる具体性があり、且つ多くの企業が採用できる汎用性を持ったものは無かったように思います。

しかし現状で出回っている情報に対して、分かり難さや、情報量不足を感じておられる方も多いのが実情です。 このページを訪れた方も、ゼロトラストに関する様々な情報を収集していたことがきっかけで、来られたのではないかと思います。

私自身もメーカー各社の概要説明だけでは大変分かりにくく感じ、実際に触ってみてようやくイメージできた部分もあります。 そのため本記事では、実際の挙動を説明し、さらに検証作業が出来る手順を示すことにフォーカスしたいと思います。(手順書については資料ダウンロードのページにあります)

「SDP(Software Defined Perimeter)について概念は何となく分かったけど実際に使ってみて正しく理解、実感したい」と考えておられる方も多いのではないのでしょうか。

Cloudflareは料金のかからないフリープランも用意されたセキュアCDNサービスですが、そのフリープランでもゼロトラスト関連機能を使えるようになっています。 (無料の範囲ではユーザ数は5ユーザまでとなっています)

当社やCloudflare社へメール等での申し込みは不要で、オンデマンドでサインアップし気軽に評価することが可能となっています。 この記事を読んだ方はその日のうちに使い始めている可能性があります。 また、トライアル・プログラムでなくフリープランに正式に組み込まれた機能を利用する形であり、期限がありませんのでずっと使い続けることも可能です。






構成イメージ


CloudflareではAccessとArgo Tunnelという2つの機能を使って、VPNを用いないリモートアクセス環境を提供します。 構成イメージは以下の通りです。







しくみ
上記の構成イメージに沿ってしくみを説明します。

①トンネル開設
アプリケーションサーバに予めArgoのデーモン(Cloudflared)を入れておきます。

Cloudflaredは起動されるとすぐにCloudflare社のエッジサーバへセッション(トンネル)を張ります。 このトンネルはずっと張りっぱなしになります。 ファイアウォールにて当該アプリケーションサーバへのインバウンドルールは設定しない状態としておきます。

尚、Cloudflaredを実行するのはアプリケーションサーバそのものでなく、独立したサーバをトンネル終端専用のサーバとして用意して頂いても構いません。各サーバはLAN上で到達性が確保されていればそれでOKです。


②ユーザが所定のURLへアクセス
リモートユーザは管理者が予め設定しておいたCloudflare Access用のURLへHTTPS接続を行います。 クライアントデバイスにはエージェント等は不要で、ブラウザでアクセスするだけです。

この時、クライアント端末には管理者が許可した認証方式の一覧が表示されるため、1つ選んでそのリンクをクリックします。

③認証
ユーザが選択した認証方式で認証されます。認証方式にはAzure ADなどのIDaaSサービスとの連携だけでなく、Cloudflareがワンタイムパスワードを生成しEメールで通知する機能も選択することが可能です。 また、クライアント証明書によるデバイス認証も併用することも出来ます。

④ユーザの識別とポリシー判定
認証が通るとIdPがアクセストークンを発行し、Cloudflareやクライアントに共有します。 CloudflareはIdPからユーザの情報(Eメールアドレス、名前、グループなど)を取得します。 さらに、IdPから取得した情報やクライアントのIPアドレス等を元にCloudflare Accessのポリシー設定と照らし合わせ、接続を許可するか判断します。

ポリシーでは、例えば部署によって接続可能なアプリケーションをコントロールするなどの制御が可能です。

⑤リクエストの中継
ポリシー判定の結果接続が許可されると、Cloudflare Accessがリバースプロキシとなってリクエストを中継します。 リクエストは、上記①で張られたサーバサイドセッション(トンネル)を通り、目的のアプリケーションサーバへ到達することが出来ます。





ポイント整理
Access機能とArgo Tunnel機能を使用することにより、以下のような状態になります。

アプリケーションサーバへ直接は接続できない(Cloudflare経由でしかアクセスできない)
Cloudflareを経由するには定められた認証をパスしていなければならない
Cloudflare-サーバ間の通信は暗号化される
攻撃者が直接入り込む余地がない(Firewallのインバウンドルールなし)

Argo Tunnelが社内のサーバ側からイニシエートするということは大きなポイントです。

Cloudflaredがエッジサーバに対してトンネルを張り、そのトンネルを通ってユーザトラフィックが入ってきます。 この場合、Firewallのポリシーにおいてインバウンドのルールが一切不要になります。 インバウンドのルールが無ければ、悪意あるユーザが社内のアプリケーションへ侵入できる余地が排除されます。 外から内の通信が許可されていないから入れないというのもありますし、そもそも攻撃者にIPアドレスがバレません。 入って来られるのはAccess機能により認証された正規のユーザのみです。




以上のポイントにより、VPNと同等以上の機能性・安全性を実装できることになります。 さらに、このソリューションを利用すると以下のようなメリットも得られます。



◆各端末でトンネル開始の儀式が不要
      予め設定しておいたURLへブラウザで接続するのみであるため、楽だしトラブルも少ない(VPNのトンネル接続は接続時エラーなども多く、また接続アプリのバージョンアップ等も手間です)
      社内からのアクセスもAccess機能経由で行えば、社内・社外どこにいてもアプリケーションへの接続手順やURLが統一化される


◆既存のIDプロバイダーを利用出来る
      アカウント移行が不要。MFA(多要素認証)も利用できる。


◆リバースプロキシがサービスとして提供されている
      自身で立てる必要がない。
      VPN装置のようなハードウェア老朽化や、サポート終了に伴うリプレース作業がない。






料金

■Access機能
デフォルトで無料の5ユーザが付与されています。6ユーザ目以降は有償となり、1ユーザごとに以下の料金が追加されます。

ベーシック プレミアム
料金
$3/月
$5/月
利用可能なIdPの種別
ソーシャルのみ
ソーシャルとエンタープライズ
ボリュームディスカウント
なし
100ユーザ超の場合




IdPの種別は以下の通りです。

IdP種別 名称 対応プラン
ソーシャル
Facebook
Google
GitHub
Yandex
One-Time Pin
ベーシック
および
プレミアム
エンタープライズ
Okta
OneLogin
Centrify
Microsoft AzureAD
Gsuite
プレミアムのみ

無料で5ユーザ分使えますので、ちょっとした用途なら実業務でも無料状態で使えそうですね。



■Argo機能
Argo機能にはいくつかの機能が含まれており、Argo Tunnelはその1つです。

このArgo機能の基本料金は $5/月で、この額で1Gバイトまで転送することができます。
転送量1Gバイトを超えると1Gバイトごとに$0.1課金されます。

本記事タイトルの500円というのはArgo機能の基本料金のことを指しています。 以下に記載する「Argo Tunnelを使わない方法」を用いればコストを削減することも出来ます。




Argo Tunnelを使わない方法


Argo Tunnelを使わずにセキュリティを確保することも可能です。以下の2つの実装が必要になります。
▶Firewallにて、送信元アドレスがCloudflareの場合のみアプリケーションへの通信を許可するインバウンドルールを設定
▶Cloudflareが生成するトークン(JWT)をサーバ側で検証する

トークンについて説明致します。
Cloudflare Accessではポリシー判定により認可されると、そのユーザとアプリケーションをスコープとするJWT(JASON Web Tokens)を生成し、クライアントへCookieとして送ります。 JWTにはCloudflareにて非対称鍵方式を用いた署名が含まれます。

サーバ側ではリクエストに含まれるトークンを公開鍵で検証することにより、正しいユーザ(Cloudflareにより認可済み)であることを確認することが出来ます。 署名の検証処理はユーザにて実装する必要があります(サンプルコードも公開されています)。

ユーザ側の使用感を確認するなどのトライアル目的ならArgo TunnelとJWTの検証の両方を省略しても目的は達成できるかと思います。






さいごに


CloudflareのAccess機能とArgo Tunnel機能を用いたリモート接続を用いれば、いつでもどこでも働ける環境作りの一部になると思います。

私はVPN装置のサポートを行ったことがありますが、結構な苦労がありました。 VPNトンネルが切断される、エラーが出て接続できないなど、様々な問い合わせが寄せたためです。 一般企業のシステム部門のご担当者様も同じような経験をお持ちの方も多いのではないでしょうか。

ユーザ部門の働き方改革のためにシステム部門が過酷な労働を強いられていては元も子もありません。 私は利用する側・提供する側共に満足できるIT導入のお手伝いをさせて頂きたいと考えています。

また、本記事では詳細な説明は割愛致しますが、働き方改革関連の手段としてだけでなく、接続元が人間でなく自動化された機器やサービスの場合にも正しく認証する機能なども具備されています。 さらに、Webアプリケーションだけでなく、リモートデスクトップやSSH、その他任意のプロトコルでも内部リソースへ安全に接続することができます。 ゼロトラスト実装の一部としてご検討頂ければと思います。






付録


資料ダウンロードのページへアップしたAccessの設定手順(Cloudflareの初期セットアップも含む)は、以下の構成で検証した時の手順です。 Googleのアカウント(Gsuiteでない)でセキュリティキーによるFIDO U2F認証を行い、パスワード認証と組み合わせた多要素認証を行いました。




GoogleではSMSによる認証もできますし、どちらを使ってもCloudflareの設定手順は変わりません。 GoogleアカウントもCloudflareも無料ですので、是非お試し頂ければと思います。












 執筆者:角田 貴寛

三井情報株式会社
ソリューション技術本部 次世代基盤第二技術部 第一技術室
CISSP、CEH
現在、セキュリティ関連調査研究・教育業務に従事