CNSC 2022、eBPFをベースにしたコンテナランタイムセキュリティのツールを紹介
CloudNative Security Conference 2022から、クラスメソッド株式会社のソリューションアーキテクトが解説するコンテナランタイムのセキュリティツールに関するセッションを紹介する。タイトルは「eBPFで実現するコンテナランタイムセキュリティ」、プレゼンターは寺岡慶佑氏だ。
eBPFはiptablesに替わる技術としてトラフィックの制御に利用されており、例えばFacebookではロードバランサーとして広く使われている。この観点についてはCiliumの開発をリードするIsovalentのThomas Graf氏が2018年に行われたセッションで解説を行っている。こちらのセッションに関しては以下の記事を参照されたい。すでに2018年のセッションで、コンテナネットワークの高速化のためにeBPFが使われていることが紹介されている。
参考:iptablesを置き換えるBPFをコンテナネットワークに使うCilium
寺岡氏のセッションでは「eBPFとは何か?」を簡単に説明した後に3つのツールを挙げてインストールの方法、使い方、特徴などを解説している。
eBPFの歴史を振り返った後に「eBPFとは何か?」というスライドではカーネル内のイベントをフックして任意の処理を実行できることを紹介。パケットフィルターとしてのiptablesの持つ欠点を解消するという観点ではなく、カーネルを変えることなくユーザーが書いた処理を安全に実行できる点を評価している。
LinuxのカーネルモジュールとeBPFの関係についても触れ、カーネル内で安全に任意のコードが実行されることを紹介。
その上でeBPFの処理の流れを解説。このスライドではeBPFの仕組みを解説している。特にVerifierが、eBPFのプログラムが安全な処理かどうかを検証した上でJITコンパイラーによってコンパイルされ実行されるという部分に注目したい。このサンドボックス機能によって、プログラマーが意図せず危険なコードを書いてしまうことを防げるのだ。
BCCによるプログラミングについても触れ、実際に「Hello World」のソースコードを使って解説した後でeBPFが使われているユースケースについて紹介。Observability、Networkという2つの観点から、bpftrace、Pixie、XDP、Kataran、Calico、Ciliumなどを挙げて、すでに多くの企業で利用が進んでいることを紹介した。
特にIsovalentが発表した「サイドカーを使わないサービスメッシュ」も注目すべきプロジェクトとして紹介。これまではマイクロサービス間の通信をセキュアにするために、Podの中にサイドカー実装としてProxyを入れてアプリの実体が外部のPodと通信する際にはProxyを経由する方式が取られていた。そのサイドカーのProxyをeBPFプログラムとしてカーネルに入れて実装するのがCilium Service Meshということになる。eBPFをベースにしたサイドカーレスなサービスメッシュについては、IsovalentのLiz Rice氏が書いた以下の記事が参考になるだろう。
参考:How eBPF Streamlines the Service Mesh
Isovalentが発表したCilium Service Meshのベータプログラム開始については以下を参照されたい。参考:Try eBPF-powered Cilium Service Mesh - join the beta program!
ここからはコンテナランタイムにおけるeBPFの応用として、コンテナ実行時のセキュリティを高めるための仕組みとしてのランタイムツールを紹介する内容となった。
ランタイムにeBPFを使ったセキュリティを追加することで得られるメリットについて解説し、コンテナが悪意を持ったハッカーに侵入され、特権を奪われた結果マルウェアなどをダウンロードしてしまうという事態を防げると説明した。
またOpen Policy Agent(OPA)と組み合わせることで、ポリシーについてはOPAのRegoで記述、eBPFプログラムが実行時にそれを参照して安全かどうかを判定するという利用例も解説している。
ここからFalco、Tracee、Tetragonをそれぞれ紹介している。
3つのツールについて、アーキテクチャーや構造、ルールの概要、利用例などが解説されているが、ここからは寺岡氏による評価についてだけを紹介する。
Falco
Falcoはさまざまなモードが用意されていることが特徴であり、すでに既存のルールがあることを紹介。Sidekickという複数のFalcoからイベントを集約する機能も用意されていることも評価している。
Tracee
Traceeはチェックだけではなくイベントのトレーシングが可能で拡張性が高く、インストールが不要でコンテナへの実装が容易であることを評価している。ただルールについてはやや少ないという評価だ。
Tetragon
Tetragonについては単に検知を行うだけではなく防止する処理を追加できることを高く評価。操作の部分でも説明されたプロセスをkillできるというのが特徴だ。ただし現在はKubernetes環境だけをサポートしており、カバーする対象が狭いことを指摘。ドキュメントもまだ整備されておらず、これからに期待という希望を込めた評価となっている。
前半はeBPFの概要を紹介し、後半はコンテナランタイムに限定したオープンソースソフトウェアの紹介という形になったが、インストール方法や設定など実際に操作をする部分が多く、エンジニアにとっては感触を掴むうえでは参考になるセッションだったように思える。また寺岡氏はセッションに関する質問に対するフォローアップとして以下のブログを公開している。プロセスをkillした際の動作などについても考察を行っているので参考にされたい。
参考:CloudNative Security Conference 2022にて「eBPFで実現するコンテナランタイムセキュリティ」というタイトルで登壇しました
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- KubeCon EU開幕、前日に行われたプレカンファレンスからeBPFとTetragonを紹介
- CNDT 2022、IsovalentのアドボケイトがeBPFを解説
- eBPF Summit開催 IsovalentのCEOなどによるDay 1のキーノートを紹介
- 「KubeCon NA 2022」から、サイドカーレスを実装したサービスメッシュのIstioのセッションを紹介
- KubeCon EU、欠点から逆算するKubernetesのネットワークに関するセッションを紹介
- CloudNativeSecurityCon開催。シアトルで2日間行われたセキュリティ特化のカンファレンスを紹介
- KubeCon Europe 2023から、Linkerdの最新情報とeBPFがサービスメッシュに使えない理由を解説したセッションを紹介
- All Things OpenからSolo.ioのBrian Gracely氏にインタビュー。サイドカーレスサービスメッシュとは?
- eBPF Summit、Verizon-Mediaが利用するKatranのセッションを紹介
- CloudNativeSecurityCon、SysdigのCTOにインタビュー