必見の記事

【書評】ゼロトラストネットワーク

2019.10.28

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

オペレーション部 江口です。

以前から気になっていた「ゼロトラストネットワーク」の翻訳版がオライリーから発売されました。

https://www.oreilly.co.jp/books/9784873118888/

早速読んでみたのでレビューしてみたいと思います。

書籍の概要

最近新しいセキュリティの考え方として注目されている「ゼロトラストネットワーク」について取りあげた書籍です。 ゼロトラストネットワークの概念、どのように構成するか、認証をどうするべきかなどを解説し、またGoogleやPagerDutyでの実際のシステムの事例などを紹介しています。

目次

  • 1章 ゼロトラストの基礎
  • 2章 信頼と信用の管理
  • 3章 ネットワークエージェント
  • 4章 認可の判断
  • 5章 デバイスの信頼と信用
  • 6章 ユーザーの信頼と信用
  • 7章 アプリケーションの信頼と信用
  • 8章 トラフィックの信頼と信用
  • 9章 ゼロトラストネットワークの実現
  • 10章 攻撃者の視点

ゼロトラストネットワークとは

まずこの本で解説している「ゼロトラストネットワーク」とはそもそも何か、ですが、「ゼロトラスト」という言葉通り、「どんなユーザ、デバイス、ネットワークからの通信も信頼できない」ことを前提としたシステムです。

本書の概要では端的にこう解説しています。

ゼロトラストネットワークとは、ファイアウォールやVPNに代表される従来型のセキュリティ(境界防御モデル)が通用しなくなった現状を踏まえ、すべてのトラフィックを信頼しないことを前提とし、検証することで脅威を防ぐというアプローチです。

1章でこれまでのネットワークの歴史とともに詳しく述べられていますが、従来の、WAN/DMZ/LANなどといった境界で区切りその境界でセキュリティを守るようなネットワーク(境界モデル)では、基本的に「社内LANからの通信であれば信頼できる」という前提に立って、LANからの通信についてはセキュリティポリシーが緩く設定されています。

結果として、社内LANの内部にいるホストを乗っ取り、そのホストから社内のさまざまなホストへ侵入していく・・・といった攻撃が蔓延する結果となっています。

このため、社内LANであろうが盲目的に信頼することはせず、どんなネットワークも危険に晒されている可能性があることを前提として、ホストのセキュリティを高める・・・というのがゼロトラストネットワークの考え方です。

通信をどう信用するのか

では「どのネットワークも信頼できない」という前提に立ったとして、相手をどうすれば信用できるのでしょうか。ユーザで認証する、というだけではユーザの乗っ取り、なりすましを防げないし、デバイスにしても盗まれて利用されてしまう可能性があります。

そこで、ユーザやデバイス、またそのアクティビティを考慮した信用スコアを動的に計算し、そのスコアに応じて都度認可するポリシーを変更する、という「信用スコアモデル」をこの本では提唱します。またこれを実現するためのコンポーネントとして、「ネットワークエージェント」や「トラストエンジン」などが紹介されています。

ネットワークエージェント

ネットワークエージェントは、ゼロトラストネットワークのために考えられた新しい概念で、「ネットワークリクエストをするエンティティについてわかっているデータの組み合わせ」と説明されています。例えばユーザ、アプリケーション、デバイスといった情報で、通信をリクエストする側が渡すものです。ユーザ単体やデバイス単体ではなく、複数のデータの組み合わせとすることで、信用スコアの検討において、より精密な判断が可能になります。この情報を利用して信用スコアを計算/更新しますが、逆にいうと、信用スコアを検討するのに必要な情報が含まれる必要があります。

また重要なこととして、ネットワークエージェントは認可には利用するものの認証には利用しない、という点が触れられています。デバイスの認証(X.509証明書を利用するなど)やユーザの認証を行なった上で、何かしらのリクエストのたびにこのネットワークエージェントを使ってそのリクエストに対する認可を行う、という仕組みです。

ただ、残念ながらネットワークエージェントについては現在標準があるわけではなく、各自で実装する必要があるようです。標準化をするには、組織によって必要なデータやそのフォーマットは異なると思われ、それらに柔軟に対応する必要があります。本の中では、SNMPにおけるMIBを参考として標準化ができるのではないか、と提言されています。

認可を判断するコンポーネント(トラストエンジンなど)

認可を判断するためのコンポーネントとしては、以下の4つが挙げられています。これらは緊密に連携しあって、通信のリクエストを認可するべきかどうかを判断・適用します。

  • エンフォーサ:データプレーンにあって、実際にポリシーに基づいた制御を行うコンポーネント。ロードバランサ、プロキシ、ファイアウォールなどとして実装される。
  • ポリシーエンジン:認可の可否を判断するコンポーネント。エンフォーサに送られてくるリクエストについて、ポリシーとの比較を行う。ポリシーはトラストエンジンによって計算される信用スコアを用いて定義することが望ましい。
  • トラストエンジン:ゼロトラストネットワークにおいて、リクエストやアクションのリスク分析を行うコンポーネント。ネットワークエージェントやデータストアに蓄積された履歴情報を元に、信用スコアを計算する。静的なルール以外に、機械学習モデルを導入することが望ましい。
  • データストア:システムの過去と現在の状態を保管する情報源。ユーザやデバイス、ワークロードのインベントリ情報、認証管理情報、フロー情報などを提供し、認可の判断に利用される。

上記が本書で示されるゼロトラストネットワークの概要となります。これまでのネットワークのモデルとはかなり異なり、新しいコンポーネントが必要であることも分かると思います。

実際の実装はどうなるんだ?と気になるところと思いますが、すでに述べたように、後半(9章)でGoogleやPagerDutyでの実際のシステムの事例が紹介されています。これらの概念をどう実装に落とし込んでいるのか、という点をぜひ実際の書籍でお確かめください。

感想

「ゼロトラストネットワーク」という新しい概念に対して、丁寧に解説された書籍だと思います。従来のネットワークのモデルと大きく異なり、また構成する要素の標準化が行われていないため、実装は大変そうだなあ・・・というのが読んだ率直な感想ではあります。Googleですでに「BeyondCorp」という名前で実際に実装され、運用されている実例があり、それを取り上げてくれている点が非常に参考になりますが、とはいえ書籍中でも「規模に見合ったリソース量はGoogleだからこそ用意できた」と書いているように、かなりパワーが必要な印象は受けました。

また、当社もそうですがリモートワークが普及し、社外からの内部リソースへのアクセスが頻繁に必要とされる昨今、デバイスが内部ネットワークにあることを前提とした考え方は見直した方が良いように思いますし、巧妙化するサイバー攻撃の前に内部ネットワークからのアクセスといえど最早信頼はできない、ということは確かです。 そうしたわけで、この新しい考え方に今のうちから目を向けておくのは良いかなと思います。興味のある方は是非。

以上、「ゼロトラストネットワーク」書評でした。

余談

ところで、この書籍では「信頼」と「信用」という似た単語が出てきて、使い分けられています。

一体どう使い分けられているんだろう?と読んでいて気になったのですが、じつは原書ではどちらも「Trust」という単語で記述されているところを、訳者の方が場合によって使い分けている、ということが「監訳者あとがき」で明かされていました。

  • 「信用」は「人や物事の持つ価値や評判」
  • 「信頼」は「ある人や物を高く評価して、すべて任せられる気持ちを抱くこと」(信用より感情的な行為に近い)

として、過去や現在の事実・実績を評価するTrustや各種技術的なTrustなどは「信用」、認証局のトラストアンカーなどは「信頼」と訳しているそうです。

そこまで気を使って翻訳しているのか、翻訳の世界は深いな・・・と感銘を受けました。