虎の穴開発室ブログ

虎の穴ラボ株式会社所属のエンジニアが書く技術ブログです

MENU

『ゼロトラストネットワーク』を読んだ感想

f:id:toranoana-lab:20191108135053j:plain

皆さんこんにちは。

虎の穴ラボのY.Fです。 今回は、いつものプログラミング系の記事とは趣向を変えて、株式会社オライリー・ジャパン様から発刊されている『ゼロトラストネットワーク』を読んだので、感想などをつらつら書いていきたいと思います。

www.oreilly.co.jp

読んだ動機

弊社ではオライリーの年間定期購読に申し込んでいます。なので、なんとオライリーの新刊が発売日には読み放題です! これを活かさない手はないと発売前から気になっていた『ゼロトラストネットワーク』を読んでみた次第です。

(過去届いた書籍の一部はこちら) gramho.com

gramho.com

目次

本書の目次は以下になります。

目次

はじめに

1章 ゼロトラストの基礎
    1.1 ゼロトラストネットワークとは何か
    1.2 境界モデルの進化
    1.3 潜在的な脅威の進化
    1.4 境界モデルの弱点
    1.5 信用の在りか
    1.6 成功要因としての自動化
    1.7 境界とゼロトラスト
    1.8 クラウドへの適用
    1.9 まとめ

2章 信頼と信用の管理
    2.1 脅威モデル
    2.2 強力な認証
    2.3 公開鍵基盤
    2.4 最小権限
    2.5 変化する信頼と信用
    2.6 コントロールプレーンとデータプレーン
    2.7 まとめ

3章 ネットワークエージェント
    3.1 エージェントとは何か
    3.2 エージェントはどのように使用するか
    3.3 エージェントにはどのようにアクセスするか
    3.4 標準は存在しない
    3.5 まとめ

4章 認可の判断
    4.1 認可アーキテクチャ
    4.2 エンフォーサ
    4.3 ポリシーエンジン
    4.4 トラストエンジン
    4.5 データストア
    4.6 まとめ

5章 デバイスの信頼と信用
    5.1 信頼と信用を獲得する
    5.2 コントロールプレーンによるデバイスの認証
    5.3 インベントリ管理
    5.4 デバイスの信用の更新
    5.5 ソフトウェアの構成管理
    5.6 ユーザーの認可にデバイスデータを使用する
    5.7 信用のサイン
    5.8 まとめ

6章 ユーザーの信頼と信用
    6.1 アイデンティティ発行機関
    6.2 プライベートシステムでのアイデンティティの生成
    6.3 アイデンティティの格納
    6.4 いつ認証するか
    6.5 どのように認証するか
    6.6 グループの認証と認可
    6.7 何かを見たら報告する
    6.8 信用のサイン
    6.9 まとめ

7章 アプリケーションの信頼と信用
    7.1 アプリケーションパイプライン
    7.2 ソースコードの信用
    7.3 ビルドの信用
    7.4 ディストリビューションの信用
    7.5 人間が関わる部分を限定する
    7.6 アプリケーションの信用
    7.7 ランタイムのセキュリティ
    7.8 まとめ

8章 トラフィックの信頼と信用
    8.1 暗号化と認証
    8.2 信頼の確立:最初のパケット
    8.3 ネットワークモデルの概要
    8.4 ゼロトラストはネットワークモデルのどこに位置するか
    8.5 プロトコル
    8.6 フィルタリング
    8.7 まとめ

9章 ゼロトラストネットワークの実現
    9.1 スコープの選択
    9.2 システム図の作成
    9.3 フローを理解する
    9.4 コントロールプレーンがないアーキテクチャ
    9.5 ポリシーの定義と導入
    9.6 ゼロトラストプロキシ
    9.7 クライアント側とサーバー側の移行
    9.8 ケーススタディの紹介
    9.9 ケーススタディ:Google BeyondCorp
    9.10 ケーススタディ:PagerDutyのクラウドに依存しないネットワーク
    9.11 まとめ

10章 攻撃者の視点

監訳者あとがき

ゼロトラストネットワークと本の概要

昨今、セキュリティ事故の報道や、個人情報の流出事件は定期的に報道されています。また、外部公開しているサービスを運営している方は経験があるかと思いますが、サービスのアクセスログなどを見ると、不明なIPからSSHログインが連続試行されていたり、XSSと思わしきリクエストが飛んできていたりなど日常茶飯事な現状かと思います。

他方、現代のネットワーク構成はインターネット接続部分、DMZ、イントラネットなどに分離され、ファイアウォールやVPNを利用した境界型の防御モデルが一般的かと思います。
ゼロトラストネットワークはそのような従来の境界型の防御モデルでは、今後のセキュリティ脅威に耐えられないとし、たとえ境界毎に防御されているようなネットワークであっても、すべてのネットワークトラフィックを信用するに足らないとして扱います。
本書ではそのようなゼロトラストネットワークを構成する各概念や、要素技術について説明し、最後にはGoogleなどでの活用事例まで紹介されています。

以下では、各章ごとに気になった部分や感想などを書いていきたいと思います。

全体の感想

個人的にこの手のまだちょっと早すぎる技術書を読むときのモチベーションは将来への種まきとして読んでいます。例えば今回のゼロトラストネットワークが一気に普及するようなことがあると、我々エンジニアが常識と考えているネットワーク構成などがまるっと変わってしまうことになります。
そのようなときに全く何もわからないという状況にならないように、知識を蓄えるといった感じです。
その点では本書は具体的な設定方法の説明というより、ゼロトラストネットワークの概要や、どう実現されるのかなどの概念の説明の本になっており、とても参考になる一冊ではないかなぁと思います。
気になった方は、ぜひ一読してみてください。

1章 ゼロトラストの基礎

1章では従来の境界型での防御方法が如何に確立していったかの歴史から、具体的な構成が説明されます。現代では境界型の防御モデルでは耐えられない場合があるということを、具体的な攻撃方法を例に説明されています。
既存の境界型防御モデルでは攻撃を防げないのであれば、境界内であろうともネットワーク全体は信用できず、悪用される危険性があるとして扱うものがゼロトラストモデルとされています。そのゼロトラストモデルというものがなにか、境界型の欠点と対比する形で概要が説明されています。

感想としては、自分でも思い込んでしまいがちな、イントラネットだから大丈夫だとか、ファイアウォールがあるから・・・みたいなことは現代では迷信に近いんだなと改めて思い直させられました。
ネットワークが分離されていようとも、ホストに何かしら仕込まれてしまうとそれはネットワーク全体が危機にさらされていることと変わらないというのは実際に起こり得ることなどが例に出されているのもあって納得感があります。

2章 信頼と信用の管理

ネットワーク全体を常に悪意にさらされているとして扱うということは、何もなしにはネットワーク参加者を常に信頼も信用もしないという状態です。このような状態で、どのようにユーザーやデバイスに対して信用や信頼を確立すべきか、どう管理すべきかについて書かれています。
ゼロトラストではこのような信用の確立に、デバイスの状態(アクセス元の地理的な場所やOSのバージョンなど)や、ユーザーの操作に従って動的に変化する信用スコアというものを利用して参加者を信用しています。

この点についてはゼロトラスト特有の概念なこともあり、非常に興味深く読みすすめることができると思います。また、公開鍵暗号での認証についても説明されており、エンジニアの方々もすんなり読めるのではないでしょうか?

3章 ネットワークエージェント、4章 認可の判断

こちらは先程の認証などとは別の、認可について説明される章になります。 4章はトラストエンジンなどを利用した具体的な認可の流れになります。 ゼロトラストネットワークでは、ユーザーとデバイスを別々に扱うのでは不十分とし、同時に考慮されます。
ネットワークエージェントとは、そのようなエンティティのデータの組み合わせとして定義され、ユーザー、アプリケーション、デバイス情報などのデータが含まれます。
最初に述べた認可についてですが、エージェントに対しては認可が行われることになります。注意すべきなのは、認証はまた別となるという点です。(認証については、X.509証明書などが利用されます。)

このネットワークエージェントをもとに信用スコアが計算されることになります。ただ、残念ながらエージェントに対する標準規格が存在せず、各企業ごとに独自実装であることなども触れられています。

デバイスとユーザーを合わせてエージェントとして定義される点など、一昔前に流行っていたBYODなどにも絡むのかなぁと感じました。また、プログラマの方でOAuth2とか利用しているなら一度は目にしたことがある認証/認可の違いなどしつこいくらいに書かれていて、注意しないといけないなと思いました。

5章〜8章 各種の信頼と信用

5章から8章までは、4章までで説明された信頼と信用、認証と認可を各デバイス/人に対してどう検証、付与するのかという点にてついて説明されていきます。

この辺りに関しては、TLSや公開鍵暗号についての話が出てきたりなど、既存の技術を複合的に活用する形になっている印象を受けました。

特に、プログラマであれば7章については興味深く読めると思います。7章ではアプリケーションをどうやって信用するかについて書かれています。
普通によくあるセキュアコーディングから、Gitを使ったバージョン管理の重要性、レビューの重要性、CIなどを使った場合に注意すべきことなどが書かれています。
特に印象に残ったのは、 7.5 人間が関わる部分を限定する の節です。手間や繰り返し作業を無くすためにシステムにビルドを任せることはよくあると思いますが、セキュリティが担保されたシステムにビルドを任せるべきだという点はなるほどと思いました。一方で、リリースバージョンを最後に選択するのは人間にするべきだと書かれていてこの点もなるほどと思わされました。

9章 ゼロトラストネットワークの実現

9章ではGoogleなどでの導入事例について触れられています。他にも、そもそもゼロトラストネットワークと従来の境界型は完全直行しているわけではなく、徐々にゼロトラストネットワークに移行できることなども書かれています。

今まで書いたのでわかると思いますが、ゼロトラストネットワークは既存のネットワーク構成とまるで異なるので、移行には大変なパワーが必要なようです。本書の中でもGoogleだからできた旨書かれています。なので、できるところから少しずつ実施していくのが良さそうかなぁと感じました。

10章 攻撃者の視点

DDoSやソーシャルエンジニアリングなど既存の攻撃手法を例に、その攻撃を仕掛けるユーザーからゼロトラストネットワークがどう見えるかについて書かれている章です。

この章に関しては、ゼロトラストネットワーク関係なく攻撃手法などの振り返りにもなるなぁと思います。個人的には章末の方に書いてあった、「執拗な攻撃者の手にかかれば、ゼロトラストネットワークでさえ攻略されることがある。」という部分が現実味があって気に入っています。

P.S.

虎の穴では一緒に働く仲間を絶賛募集中です! 興味のある方は是非採用サイトを御覧ください! yumenosora.co.jp

11/13(水)には第二回となるアーツ千代田での説明会を行います。こちらも是非ご応募ください! yumenosora.connpass.com

また、11/26(火)には記念すべき10回目となるLT会を秋葉原アーツ千代田で開催します! 発表者枠、参加者枠ともにまだ余裕ありますので是非ご応募ください! yumenosora.connpass.com