新しいセキュリティアプローチ、CalicoとIstio、Kubernetesによるゼロトラストネットワークとは
![](https://thinkit.co.jp/sites/default/files/styles/main_image_730x/public/main_images/13276_main.jpg?itok=CYEkr6NY)
Linux Foundationと協調するプロジェクトとして2015年に設立されたCloud Native Computing Foundation(以下、CNCF)は、テキサス州オースチンにてKubeCon+CloudNativeConを2017年12月5日~8日の日程で開催した。これまでキーノートやコンテナランタイムに関して紹介してきたが、今回は数あるセッションの中からマイクロサービス内のセキュリティを高めるためのアプローチ「Zero Trust Network」について紹介しよう。まずサンフランシスコのベンチャーであるTigeraのエンジニアが行った5分間のプレゼンテーションについて紹介した後で、より詳細な解説としてZero Trust Networkを実現するためのIstio、Kubernetes、Calicoに関するセッションを紹介する。
5分という短い時間の中で紹介を行ったのは、Calicoの開発をリードするTigeraのSpike Curtis氏だ。ちなみにTigeraは、MetaswitchでSoftware Defined Networkとして開発されていたCalicoがオープンソースソフトウェアとして公開された後に、その開発を推進している会社だ。Tigeraは他にもCoreOSが開発を行うコンテナネットワークのプロジェクトであるflannel、そしてKubernetes、CNI(Container Network Interface)などにもコントリビューションを行っているという。コンテナやネットワーク関連に経験があるだろうということは充分に理解できる。
Curtis氏は、これまでのモノリシックなアプリケーションを実行してきたデータセンターが、Kubernetesによってマイクロサービス化されてきたために、セキュリティに対する要件が変わってきたことを解説した。つまりアプリケーションの前にファイアウォールを置いて、外と中を隔離する方法では充分なセキュリティを確保できなくなったということだ。これは悪意のあるプロセスが一旦、中に入ってしまえば、ファイアウォールなどの前方を守る壁は役に立たないということを解説したものだ。
そして次の流れとしては、隔離するエリアを細かく分ける「マイクロセグメンテーション」に向かうと語った。これは守るべき領域を狭めて、プロセスが攻撃されないように守るという方法論だ。しかし「ではネットワークトラフィック自体がどこかでキャプチャーされたら? その時はもうなにもできない」と説明して、マイクロサービスの間を流れるネットワークトラフィックが暗号化されている必要がある点を強調した。その場合、エンドツーエンドで暗号化(mTLS=Mutual TLS)を行うことが必要となり、それを実現できるのがIstioであると説明。特にアプリケーションを何も変更せずに暗号化できるところが、Istioの良さであると解説した。
具体的には、システム的にはKubernetesの実行の単位であるPodに対して、CNCFがホストする別のプロジェクトであるEnvoyというProxyサーバーをPodの中に配置し、Pod間を行き来するトラフィックをEnvoyで中継した上でPodの中のコンテナに渡すという構造を取る。この際、Envoy間の通信が全てmTLSによって暗号化されるという。このPodの中にEnvoyを配置することは「Sidecar」と呼ばれる。対象となるコンテナのすぐ横で実行されているということを表現しているが、実に分かりやすい表現だ。
IstioによってPod間の通信は暗号化され、マイクロサービスであってもセキュリティは確保できることになる。しかしKubernetesとIstioの両方を、必要とするセキュリティポリシーに従ってセットアップするのは難しい、そのためにSDNであるCalicoを使ってその双方を統合する、というのが今回のメインのトピックだ。またKubernetesのネットワークポリシーに沿ったCalicoの設定を行うことで、管理者にとって負担が減ることが説明された。
なおCalicoに関しては、Tigeraの事例としても紹介されているヤフージャパンのエンジニアが書いたブログが参考になるだろう。
参考:CalicoによるKubernetesピュアL3ネットワーキング
「ゼロトラストネットワーク」と言う命名については、データセンターの中のネットワークですら常に危険に晒されている、つまり信頼できるものは何もない(ゼロトラストである)という発想で設計すべき、というのがCurtis氏の主張だ。「全てのデバイス、プロセス、ネットワークが暗号化され認証されることで、ハッカーからのアタックを避けることができる」と語った。
プレゼンテーションの最後にあるCalicoのアプリケーションポリシーについては、以下を参照されたい。より詳細に理解ができるだろう。
Calico Application Layer Policy Preview
この5分間のトークをより詳細に掘り下げる解説とデモを行ったのが、次に紹介するセッションだ。
Istio: Sailing to a Secure Services Mesh [I] - Spike Curtis
これはキーノートでの解説を行ったTigeraのCurtis氏とIBMのDan Berg氏によるセッションで、より詳細にCalicoを使ってKubernetesとIstioによるセキュアなコンテナ通信の実装を解説するものだ。実際にデモとして、上述のリポジトリーにも記述されているデモ環境を実演した。これはオンラインバンキングのサイトをハックした上で、Calicoのネットワークポリシーによってデータの改竄が行えなくなるところを実演するもので、非常に分かりやすいものになっている。
他にもIstio関連の動画がいくつかあるので参考にして欲しい。
Setting Sail with Istio [B] - Lachlan Evenson
IoK: Istio-on-Kubernetes Deep Dive [I] - Daneyon Hansen
今回のKubeConで様々なプレゼンテーションやデモを見て感じたのは、複数のプロセスが協調して稼働することで、スケーラブルで信頼性の高いシステムを構築する、つまりはクラウド的なシステムを構築するということが、いよいよエンタープライズにも近づいてきたということだ。中心となるKubernetesもIstioもTigeraのCalicoも、シンプルながらも複数のプロセスが協調して動くことで目的を達成する。まるでインターネット全体が縮小コピーされてクラスターの中に再現されているような錯覚に陥るのだ。
DNSやスケジューラーを持つKubernetes、IstioではPodの中にインジェクションされたEnvoyというProxyサーバーと暗号化に必要なCA(Certification Authority)という構造、CalicoがBGPを使い、Raftによるマスターを持たないコンセンサス合意を行う辺りにも、インターネットの構造が模写されているように見える。そしてそれを補完する様々なプロジェクト、企業、サービス、そして何よりもエンジニアが集まって来ていることで、エンタープライズにとって柔軟でありつつ、自動に修復する堅牢さを持つシステムが姿を現して来ているような気がする。パブリッククラウドの大手3社、AWS、Microsoft、Googleが肩入れするのも、中国のベンダーが積極的なのもそこに未来があると信じているからではないだろうか。引き続き、CNCFの動向を注目していきたい。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- Kubernetesをサービスメッシュ化するIstioとは?
- Project Calicoとはなにか
- コンテナをさらに活用しよう! 「マイクロサービス」と「サーバーレス」
- Oracle Cloud Hangout Cafe Season 4 #2「Kubernetesのネットワーク」(2021年5月12日開催)
- Oracle Cloud Hangout Cafe Season6 #1「Service Mesh がっつり入門!」(2022年9月7日開催)
- Keycloakと認可プロダクトを利用したマイクロサービスにおける認証認可の実現
- コンテナのセキュアな運用のために
- Istioの全貌
- CNSC 2022、eBPFをベースにしたコンテナランタイムセキュリティのツールを紹介
- 「KubeCon NA 2022」から、サイドカーレスを実装したサービスメッシュのIstioのセッションを紹介