ゼロトラストネットワーク 第1章 を読む


ゼロトラストネットワーク 第1章 を読む

O'Reilly Japan - ゼロトラストネットワーク を買ったので、自分なりの言葉でまとめようと思いました。
今回は、第1章「ゼロトラストの基礎」です。

FW の誕生

インターネットのはじめのころは、インターネットを使いたい理由の多くは「メールを利用したいから」でした。
メールを利用するにはメールサーバーをインターネットに接続する必要がありますので、変なやつに変な使われ方をされてないか、メールサーバーを監視する必要が生じました。

そのような監視の素朴な実装は、単純に TCP/IP パケットのアドレスとポートによる制御ですね。
これは パケットフィルタリング とよばれる方法です。
また、パケットフィルタリングで制御に用いる認可・否認のリストは ACL (acess control list) として知られていますので、パケットフィルタリングと ACL はセットで頻繁に登場する単語です。

世の中には賢い科学者がたくさんいますので、さらに改良をくわえる努力がなされました。
例えば、ステートフルな制御などです。
こうしてできたのが ファイアーウォール (firewall; FW) と呼ばれるハードウェア・ソフトウェアです。
そして、FW を活用して [private-net] -- FW -- [mail server] -- FW -- [internet] のような 非武装地帯 (demilitarized zone; DMZ) が生まれることになります。

グローバル IP アドレスの枯渇と NAT

周知の通り、インターネット初期では、クライアント全員がグローバル IP アドレスを付与されていましたが、インターネットが便利であることに一般の人が気づき始めたころには、IP アドレスの枯渇問題はすでに表層化していました。
そこで、「みんな使いすぎじゃない?」となったので、1994 年に発表された RFC 1597 で、以下の3つのアドレス範囲はインターネットに接続されない(グローバル IP としては使わない)ものとして定義されたのです。

  • 10.0.0.0/8
  • 172.16.0.0/12
  • 192.168.0.0/16

プライベート IP アドレスしかもたないホストが、インターネットに対して通信を送るには、グローバル IP アドレスを持つホストに中継をお願いしなくてはいけません。
アプリケーションごとにそうした中継者を置くのはめんどくさいので、任意のプライベートアドレスを一時的にグローバル IP のように見せる仕組みが生まれました。
それが、NAT と呼ばれる技術です。

NAT は Network Address Translation の略で、RFC 1631 で規格されています。
一般にはグローバルアドレスをプライベートアドレスに変換するものとして知られていますが、先程述べたように、プライベートなホストを一時的にグローバル ホストに昇格させる機能と NAT を捉えると、情報セキュリティとの関連性が見えてきます。
実際、NAT するタイミングでアクセス制御をすればいいじゃないかというアイディアが生まれました。
こうして NAT と FW の機能を一緒にしたデバイスが誕生し、プライベート アドレスはよりセキュアにインターネットと分離され、世界に平和がもたらされました。
とっぴんぱらりのぷう👏👏

人間が悪いのか、NAT が悪いのか

ところが!
NAT は便利でしかもセキュアであるがゆえに、NAT を利用したネットワークはセキュアではなくなってしまうのです。

一見矛盾していますが、ここで言いたいのは、つまり、こういうことです。
NAT を利用するとネットワーク内側のホストを信用でき過ぎるが故に、その内側から外側への通信の監視が疎かになってしまうのです。
人間が悪いのか、NAT が悪いのか、それは明らかですね・・・。

この "内部の人を信用しすぎる問題" を利用するマルウェアが出現するのは、時間の問題でした。
マルウェアが一旦なんらかの方法で内部に侵入できてしまうと、もう好き放題できます。
具体的には、マルウェアはかんたんに通常の通信を装い、すなわち、あくまで通常のインターネットに公開されたサービスとやりとりするかのように、攻撃者が管理するサーバーと通信することができます。
ちなみに、この攻撃者が管理するサーバーは Command and Control (C2C) サーバー と呼ばれています。

ゼロトラストモデルの登場

実を言うと DMZ はもうだめです。突然こんなこと言ってごめんね。でも本当です。 6、7週間後にものすごくすごいハッキングがあります。 それが終わりの合図です。 程なく大きめの地震が来るので気をつけて。

上で、外側からはもちろん、内部ネットワークからの通信も信用してはいけないという教訓を学びました。
学びは活かしましょう。

ということで生まれたのが ゼロトラスト ネットワーク モデルです。
かっこいい名前ですね。
ゼロトラストモデルは、名前の通り「どのホストにも信用を置かないことを前提にネットワークを制御する」というアーキテクチャです。
言い換えれば、任意のホストがインターネットに存在すると思って通信しましょうね、ということです。

ゼロトラストモデルと対比する文脈では、従来のネットワークモデルは「境界モデル」と言われます。
境界モデルは、ある境界を設けて、その範囲内 (これを信頼ゾーンと言います) にいるか否かでホストの信頼度合を変えるというモデルですので、静的な戦略を採用しているとも捉えることができます。
一方、ゼロトラスト モデルでは、動的に信頼度合が変わります。
この動的な信頼度判定を支えるのは、ユーザー・アプリケーション認証、デバイス認証、信用スコアという 3 つの要素です。

ゼロトラストモデルの 3 大要素

1.ユーザー・アプリケーション認証

ユーザー・アプリケーション認証は、ホストの認証よりさらに一般化された認証の概念です。
というのも、ホスト単位で認証するのではなく、ホストで走ってるアプリケーション (またはホストを利用するユーザ) 単位で認証するからです。
基本的には、ユーザの属性やアプリケーションの提示するトークンを見ることで、そのエージェントが信頼できるかどうかを判定します。

2.デバイス認証

一方、デバイス認証は、デバイスそのものの認証です。
Virtual Private Network (VPN) や Network Access Control (NAC) といった技術を用いて、デバイスの認証をチェックすることができます。

3.信用スコア

そして最後に、2つの認証結果に基づいて、エージェントの総合的な信用スコアが計算されます。
具体的な計算方法はゼロトラストモデルの実装方法に依存するので一概には言えませんが、この計算方法も動的に変更されることが重要となります。

最後に

ゼロトラストモデルの延長には、プライベートネットワークの存在がなくなります。
認証という概念は暗号化技術によって挿げ替えされるので、もはや IP アドレスによるコントロールがなくなるからです。
その世界には VPN ももはや存在せず、あらゆるところがインターネットの、まるでバトルロイヤルみたいな世界ですね。

ゼロトラストモデルの歴史・思想やメリットを良いように語ったところで今回は終わりです。
次の記事ではゼロトラストを支える細かな技術をみていこうと思います。