CNCFがKubernetesモニタリングのFalcoをサンドボックスとしてホスト開始
クラウドネイティブなシステムを推進するCloud Native Computing Foundation(CNCF)のサンドボックスプロジェクトとして、Sysdigが開発をリードするFalcoが採用された。Falcoはコンテナレベルのモニタリングを可能にするソフトウェアだ。コンテナのふるまいを観測して、ルールによってアラートを配信、Slackやメッセージングソフトウェアなどと連携することができるという。
詳しくはWikiを参照して欲しい。About Falco
Falcoに関するSysdigのブログポスト:SELinux, Seccomp, Sysdig Falco, and you: A technical discussion
この記事では2018年8月に公開されたWebinarの内容を紹介しながら、Falcoの概要をお伝えしたい。Webinarは、以下のサイトから視聴できる。視聴には登録が必要だが、英語のヒアリングに支障がない方はぜひ、見て欲しい。
Building an Open Source Container Security Stack
この動画ではSysdigのFalcoだけではなく、Anchoreと呼ばれるアプリケーションイメージの脆弱性をスキャンするツールの紹介も行われているが、今回はFalcoに限定して紹介する。
このスライドでは、Falcoの特徴が解説されている。冒頭に記されている「Behavioral Activity Monitor」という部分が、Falcoが備える最大の差別化のポイントだろう。つまりURLやIPアドレスなどのリストに対するアクセスをモニタリングするのではなく、そのイメージがどういう行いをするのかをモニタリングすることで、アプリケーションからの悪意ある行動(例えば、ファイルの作成/消去、特定のディレクトリーへのアクセス、カメラなどデバイスへのアクセス)を検知し、それをアラートとして外部のシステムと連携するというのがFalcoの機能の最大の特徴だ。
対応プラットフォームとしてKubernetes、MesosそしてCloudFoundryなどが挙げられており、クラウドネイティブなシステムに最適なモニタリングであることをアピールしているかのようだ。また「Flexible Notification Methods」という部分では、Falcoから出されたアラートをメールやSlackなど様々な方法で出すことができる部分を強調している。これも多様なコミュニケーションツールが使われているシステム運用現場では、ありがたい機能だろう。
最後にオープンソースソフトウェアであることが強調されているが、これはCNCFがインキュベーションを行う時の大原則であることの再確認とも言える。
そして次のスライドでは、Falcoの特徴であるルールについての例を挙げて説明を行っている。
例えば「コンテナの中でシェルが起動される」「/binなどのディレクトリー以下にあるファイルが上書きされる」「コンテナのネームスペースが変更される」「カメラへのアクセスを要求する」などが挙げられているが、どれもセキュリティを確保するためには防がなければいけないイベントばかりである。これらの条件を、ルールとしてユーザーにとって可読性が高いフォーマットで記述できるのが利点だ。
このスライドではルールの記述例が挙げられている。Falcoでは、yamlファイルの中にふるまいを検知するためのMacro、List、Ruleなどを定義することになる。この例ではバイナリーが保存されているディレクトリーに書き込みを検知して、「バイナリが保存されているディレクトリーにファイルの書き込み行おうとしている」ことをOutputすることが分かる。GitHubのFalcoのページを見れば、予めどのようなルールが定義されているのかを確認できる。
当然だが、データベースなどの他のシステムが行うアクセスや通信に使うポート番号なども定義することができる。以下のページでは、すでに分かっているものについてはルールが定義されているので、必要に応じてコメントを外して適用することもできる。
参照:Falcoのアプリケーション向けルールの例:application_rules.yaml
Falcoはユーザースペースで稼働するプロセスだが、システムコールをフックするモジュールだけはカーネルモードで実行され、Sysdigのライブラリーを経て先に挙げたルールを評価して合致したものがアラートを担当するモジュールに渡され、最終的にログやファイル、その他のアプリケーションに渡されることになる。
ルールを評価する際には、Ciliumでも使われているBPF(Berkeley Packet Filter)が使われているという。ここではルールで定義された条件式とパケットを評価する際に、高速に演算を行うことを目指しているのだろう。
このスライドでは、Falcoが送ったアラートを他のシステムと連携させる概要が解説されている。これはオープンソースのメッセージシステムNATSのPub/Subを通じてアラートを受信し、それをKubernetesのサーバーレスフレームワークであるKubelessに渡すことで、悪質な行動を行っているPodを削除するという連携の例だ。この例のようにFalcoはモニタリングに徹することで「アラート以降の処理をどうするか?」を他のツールに任せることで、より柔軟な運用が可能になる。
またメッセージングのシステムを使うことにより、1つのアラートメッセージを複数のサブスクライバーが受け取ることで、Podの消去、運用チームへのコミュニケーション、ログへの記録などを並行して実行できる。
モノリシックなアプリケーションから、分散協調する多数のコンテナ/Podが稼働するクラウドネイティブなアプリケーションに移行することで、セキュリティ対策も複雑さを増していくだろう。コンテナのリポジトリーへの脆弱性のスキャンや、ブラックリストによるアクセスコントロールなども必要だが、Falcoの「ふるまいをモニタリングする」という発想は、運用チームの負担を軽減するという意味では注目すべき方向性だ。
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- KubernetesネイティブなポリシーエンジンKyverno
- CI/CDから障害の復旧までハイレベルの運用自動化を実現するKeptnとは
- コンテナセキュリティのSysdigのCEOに、オープンコアベンダーとは異なる戦略について訊いた
- Oracle Cloud Hangout Cafe Season5 #3「Kubernetes のセキュリティ」(2022年3月9日開催)
- コンテナ環境のモニタリングやセキュリティ対策を一気通貫で提供、世界300社以上に採用が進むSysdigの真価
- CloudNativeSecurityCon、SysdigのCTOにインタビュー
- CNDO 2021、KubernetesのセキュリティをHPEのアーキテクトが解説
- Microsoftがリードするモダンな分散システム用ランタイムDaprとは?
- Sysdig、アクティビティモニタリングツール「Falco 0.1.0」をリリース
- KubeCon EU開幕、前日に行われたプレカンファレンスからeBPFとTetragonを紹介