KubeCon/CloudNativeCon EUが、2022年5月17日から20日にわたってスペインのバレンシアで開催された。約7000名というリアルでの参加者を集め、コロナ禍前のカンファレンスに近い形でのイベントとなった。今回は17日に行われたプレカンファレンスの中から、IsovalentのThomas Graf氏とLiz Rice氏によるセッションによるeBPF(extended Berkeley Packet Filter)の最新情報と、新しく公開されたオープンソースソフトウェアTetragonを紹介する。
eBPFの最新情報
The Future of eBPF in Cloud Nativeと題したGraf氏のセッションはeBPF Dayというプレカンファレンスのキーノートとして行われ、eBPFの現在と未来を解説するものだ。
Thomas Graf氏のキーノート:The Future of eBPF in Cloud Native – Thomas Graf, Isovalent
![](https://thinkit.co.jp/sites/default/files/article_node/1977701.jpg)
Thomas Graf氏のセッションタイトル
Graf氏のセッションではeBPFの基本として、ユーザープロセス(アプリケーション)がLinuxカーネルで実行したいコードを安全に実行するための仕組みであると紹介。
![](https://thinkit.co.jp/sites/default/files/article_node/1977702.jpg)
eBPFの構造を簡単に解説
特に比較として、JavaScriptがブラウザーで実行されることでリッチなコンテンツをブラウザー上で提供できるようになったことを挙げて、ブラウザーにおけるJavaScriptとLinuxにおけるeBPFとは同等の意味合いを持つと紹介した。
![](https://thinkit.co.jp/sites/default/files/article_node/1977703.jpg)
ブラウザーのJavaScriptと同じ意味をLinuxに対して持つeBPF
実際にはMicrosoftが主体となってWindowsの上でも同様のカーネル内で稼働するeBPF for Windowsをオープンソースとして開発しているため、Linuxに限らずWindowsの上でも特権を必要とするコードを安全に実行するための仕組みとして広く認識されていると言える。
eBPF for Windows:https://github.com/microsoft/ebpf-for-windows
またクラウドネイティブなシステムにおいてはさまざまなツールがエコシステムの拡大に貢献しており、KubernetesのCNI(Container Network Interface)であるCiliumを筆頭にPixie、Falcoなどが挙げられている。ここに新たに追加されたのが、Liz Rice氏が紹介したTetragonだ。
![](https://thinkit.co.jp/sites/default/files/article_node/1977704.jpg)
クラウドネイティブにおけるeBPF。RustもWindowsも含まれている
Graf氏はeBPFのコードから実行までを1枚のスライドを使って解説。ここではCで書かれたeBPFのコードがバイトコードに変換され、VerifierやJIT Compilerを経て実行されるまでが表現されている。ここではネットワークへのアクセスだけが例として挙げられているが、実際にはプロセスによるファイルシステムへのアクセスなどの特権を与えるような挙動をリアルタイムに検知できることを意味している。
![](https://thinkit.co.jp/sites/default/files/article_node/1977705.jpg)
eBPFのアーキテクチャーを紹介
eBPFのベースとなったBPFはそもそもネットワークパケットの監視や確認のための機能であり、パケットの検査を行うのをユーザースペースではなくLinuxのカーネルスペースで行うことが性能的にも効率であったことが出発点となっている。コードの実行を安全に行うための仕組みが現代のニーズとしてはカーネル内の怪しい挙動を即座に捕捉することに役立っていると言えるだろう。
eBPFの歴史
ここからは2014年からこれまでのeBPFの歩みを紹介した。2014年に初めてLinuxカーネルにeBPFのためのパッチがマージされたという。2014年といえばKubernetesの開発が始まった年でもあり、eBPFはクラウドネイティブと同じ時代を歩んでいると言える。
![](https://thinkit.co.jp/sites/default/files/article_node/1977706.jpg)
eBPFの歴史を振り返る。CiliumがCNCFにホストされたのは2016年だ
CiliumはeBPFをゼロから実装したソフトウェアだが、単なるネットワーク機能だけではなくオブザーバビリティやセキュリティのためのプラットフォームとして位置付けられている。Isovalentが主な開発主体として知られているが、NetflixやFacebook、Cloudflareなどが実際に本番環境で利用していることなども紹介された。2019年にはHubbleというオブザーバビリティのためのツールもオープンソースとして公開され、エコシステムが拡大している。このスライドでもAWSやGoogleが利用していることが説明された。最近ではTetragonやCilium Service Meshのリリースなど話題には欠かない状況となっている。
ちなみにIsovalentはCiscoでネットワークアーキテクトだったThomas Graf氏が、長年のLinuxカーネルでのネットワークスタックの経験を活かして開発したCiliumのためのベンチャーで、オープンソースであるCiliumをベースにしたエンタープライズ向けのソフトウェアCilium Enterpriseを商用版として提供している。前掲のHubbleやTetragonも、エンタープライズ向けのモジュールをオープンソースとして公開したものだ。最後に紹介するIKEAの事例はこのEnterpriseを使ったものだろう。
Cilium Service Mesh
![](https://thinkit.co.jp/sites/default/files/article_node/1977707.jpg)
Cilium Service Meshの紹介
このスライドではCilium Service Meshについて簡単に触れている。EnvoyやLinkerdをベースにしたPodの中にProxyを入れてサイドカーとして実装されるサービスメッシュだが、Cilium Service Meshではそのサイドカー実装について観測を行う際の性能が劣化することを語って、CiliumをPod間通信に使うサービスメッシュを推奨した。
![](https://thinkit.co.jp/sites/default/files/article_node/1977708.jpg)
クラウドネイティブなシステムにおけるeBPF
ここでクラウドネイティブなシステムにおいて存在感を増しているeBPF関連についても説明を行った。Pixie以外にもAqua Securityが開発するTraceeや継続的プロファイリングを実現するParcaなどが挙げられている。PixieはオブザーバビリティのSaaSを提供するNew Relicが2020年に買収したベンチャーが開発していたソフトウェアだ。CNCFにおけeBPF関連のソフトウェアは充実してきており、他にもSysdigが開発するFalcoなどが存在する。CNCFに関係するeBPF関連のソフトウェアについてはPixieのエンジニアが書いた以下のブログが参考になるだろう。
参考:A brief stroll through the CNCF eBPF landscape
Tetragon
![](https://thinkit.co.jp/sites/default/files/article_node/1977709.jpg)
Tetragonの紹介
ここでオブザーバビリティにおいて新しくIsovalentがオープンソースとして公開したTetragonを紹介。TetragonはPixieと同じ位置付けのオブザーバビリティとランタイムにおいてセキュリティを強化するためのソフトウェアだ。Cilium Enterpriseの一部だったものが公開されたと言う意味では、Isovalentにおいてはオープンコアのコアの部分を徐々に拡大していると言えるだろう。Tetragonはパケットの送受信の監視だけではなく特権の取得、ファイルシステムへのアクセスの監視に加えてネームスペースの監視などKubernetesに特化した機能も持っている。
![](https://thinkit.co.jp/sites/default/files/article_node/1977710.jpg)
Tetragonのカバーする領域は4つ。どれもカーネルレベルの実行が必要
ここからはLiz Rice氏のセッションから紹介しよう。ここではセキュリティの観点から「どのような行動がカーネルレベルで行われると注意が必要なのか?」を挙げてTetragonがカバーする領域機能の前提知識を解説した。そしてユーザースペースとカーネルスペースの分離、カーネルで実行される機能としてファイルアクセス、ネットワークアクセス、メモリーアクセス、そしてプロセスの特権についてさまざまな方法があることを紹介。その中でeBPFによってシステムコールをフックした上でユーザーが書いたeBPFのコードをカーネル内で実行する方式が優れていることを解説した。その実装例がTetragonであるということになる。
![](https://thinkit.co.jp/sites/default/files/article_node/1977713.jpg)
Tetragonのアーキテクチャー
またユーザースペースに実装したランタイムが悪意のあるコードを発見、削除する方法もあるが、その場合、検知してから実際にプロセスを削除するまでのズレが発生し、結果として悪意のあるコードが実行されてしまうと説明。
![](https://thinkit.co.jp/sites/default/files/article_node/1977715.jpg)
ユーザースペースのランタイムでも発見と削除は可能だが…
一方、Tetragonが採用しているeBPFによる実装では、不正なアクセスを検知すれば即座に処理が行えるとしてその違いを解説した。
![](https://thinkit.co.jp/sites/default/files/article_node/1977716.jpg)
Tetragonなら高速に攻撃を防御できる
最後にまとめとしてTetragonの概要を再度おさらいしてセッションを終えた。
Liz Rice氏のセッションは以下から試聴されたい。
動画:Real Time Security – eBPF for Preventing attacks – Liz Rice, Isovalent
eBPF Dayでは、eBPFに関連したソフトウェアとプロジェクトだけではなくユーザー事例も紹介された。最後にIKEAのセッションからCiliumをマルチクラスター、マルチホーミングで利用している事例を紹介したい。
![](https://thinkit.co.jp/sites/default/files/article_node/1977718.jpg)
IKEAによるセッションを紹介
IKEAは世界各国に展開する家具の量販チェーンだ。従来はOpenStackによる仮想マシンベースのデータセンターを利用していたが、それをKubernetesベースのクラスターに移行しようとしているという。
![](https://thinkit.co.jp/sites/default/files/article_node/1977719.jpg)
IPv6によるマルチテナントを目指すIKEAのデータセンター
また2つのNICを利用するマルチホーミングをデフォルトにしようとしているとして、未だPoCレベルながらCiliumのIPAM(IP Address Management)を利用する方向であるという。
![](https://thinkit.co.jp/sites/default/files/article_node/1977720.jpg)
Ciliumでマルチホーミングを実現する方向
マルチテナンシーはKubernetesのネームスペースをベースに実装、マルチクラスターはCiliumのCluster Meshを使うという。マルチクラスター、クラスターメッシュについては以下のCiliumのブログを参照されたい。
参考:Multi Cluster Networking with Cilium and Friends
なおCiliumのオープンソース版とエンタープライズ版の違いは以下から確認できる。
参考:Isovalent Cilium Enterprise
eBPFが高速で柔軟なセキュリティのためのキーとなるテクノロジーであることはかなり周知されているようで、現地で対話した複数の参加者からeBPFに注目しているという声をきいた。Red HatのPrincipal Software EngineerであるDave Tucker氏も、継続的プロファイリングを行うParcaとeBPFのコードをlibbpf、bccを使わずにRustで書くことを可能にするAyaという新しいプロジェクトを紹介するセッションを行っていた。eBPFに対して業界が盛り上がっていることを実感するプレカンファレンスとなった。
Red HatのDave Tucker氏のスライド(PDF):eBPF? Safety First!
IKEAのセッションは以下から参照して欲しい。
動画:IKEA Private Cloud, eBPF Based Networking, Load Balancing, and Observability with… Karsten Nielsen