連載 :
  

CNCFがKubernetesモニタリングのFalcoをサンドボックスとしてホスト開始

2018年11月21日(水)
松下 康之 - Yasuyuki Matsushita
Sysdigが開発するKubernetesに最適化したモニタリングツールFalcoを、CNCFがサンドボックスプロジェクトとしてホスティングを開始した。

クラウドネイティブなシステムを推進する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の概要

Falcoの概要

このスライドでは、Falcoの特徴が解説されている。冒頭に記されている「Behavioral Activity Monitor」という部分が、Falcoが備える最大の差別化のポイントだろう。つまりURLやIPアドレスなどのリストに対するアクセスをモニタリングするのではなく、そのイメージがどういう行いをするのかをモニタリングすることで、アプリケーションからの悪意ある行動(例えば、ファイルの作成/消去、特定のディレクトリーへのアクセス、カメラなどデバイスへのアクセス)を検知し、それをアラートとして外部のシステムと連携するというのがFalcoの機能の最大の特徴だ。

対応プラットフォームとしてKubernetes、MesosそしてCloudFoundryなどが挙げられており、クラウドネイティブなシステムに最適なモニタリングであることをアピールしているかのようだ。また「Flexible Notification Methods」という部分では、Falcoから出されたアラートをメールやSlackなど様々な方法で出すことができる部分を強調している。これも多様なコミュニケーションツールが使われているシステム運用現場では、ありがたい機能だろう。

最後にオープンソースソフトウェアであることが強調されているが、これはCNCFがインキュベーションを行う時の大原則であることの再確認とも言える。

そして次のスライドでは、Falcoの特徴であるルールについての例を挙げて説明を行っている。

Falcoのルールが検知するふるまいの例

Falcoのルールが検知するふるまいの例

例えば「コンテナの中でシェルが起動される」「/binなどのディレクトリー以下にあるファイルが上書きされる」「コンテナのネームスペースが変更される」「カメラへのアクセスを要求する」などが挙げられているが、どれもセキュリティを確保するためには防がなければいけないイベントばかりである。これらの条件を、ルールとしてユーザーにとって可読性が高いフォーマットで記述できるのが利点だ。

ルールの例

ルールの例

このスライドではルールの記述例が挙げられている。Falcoでは、yamlファイルの中にふるまいを検知するためのMacro、List、Ruleなどを定義することになる。この例ではバイナリーが保存されているディレクトリーに書き込みを検知して、「バイナリが保存されているディレクトリーにファイルの書き込み行おうとしている」ことをOutputすることが分かる。GitHubのFalcoのページを見れば、予めどのようなルールが定義されているのかを確認できる。

参照:falco_rules.yaml

当然だが、データベースなどの他のシステムが行うアクセスや通信に使うポート番号なども定義することができる。以下のページでは、すでに分かっているものについてはルールが定義されているので、必要に応じてコメントを外して適用することもできる。

参照:Falcoのアプリケーション向けルールの例:application_rules.yaml

Falcoはユーザースペースで稼働するプロセスだが、システムコールをフックするモジュールだけはカーネルモードで実行され、Sysdigのライブラリーを経て先に挙げたルールを評価して合致したものがアラートを担当するモジュールに渡され、最終的にログやファイル、その他のアプリケーションに渡されることになる。

Falcoの構造

Falcoの構造

ルールを評価する際には、Ciliumでも使われているBPF(Berkeley Packet Filter)が使われているという。ここではルールで定義された条件式とパケットを評価する際に、高速に演算を行うことを目指しているのだろう。

FalcoとNATS、Kubelessの連携

FalcoとNATS、Kubelessの連携

このスライドでは、Falcoが送ったアラートを他のシステムと連携させる概要が解説されている。これはオープンソースのメッセージシステムNATSのPub/Subを通じてアラートを受信し、それをKubernetesのサーバーレスフレームワークであるKubelessに渡すことで、悪質な行動を行っているPodを削除するという連携の例だ。この例のようにFalcoはモニタリングに徹することで「アラート以降の処理をどうするか?」を他のツールに任せることで、より柔軟な運用が可能になる。

またメッセージングのシステムを使うことにより、1つのアラートメッセージを複数のサブスクライバーが受け取ることで、Podの消去、運用チームへのコミュニケーション、ログへの記録などを並行して実行できる。

Falcoを使った運用の例

Falcoを使った運用の例

モノリシックなアプリケーションから、分散協調する多数のコンテナ/Podが稼働するクラウドネイティブなアプリケーションに移行することで、セキュリティ対策も複雑さを増していくだろう。コンテナのリポジトリーへの脆弱性のスキャンや、ブラックリストによるアクセスコントロールなども必要だが、Falcoの「ふるまいをモニタリングする」という発想は、運用チームの負担を軽減するという意味では注目すべき方向性だ。

著者
松下 康之 - Yasuyuki Matsushita
フリーランスライター&マーケティングスペシャリスト。DEC、マイクロソフト、アドビ、レノボなどでのマーケティング、ビジネス誌の編集委員などを経てICT関連のトピックを追うライターに。オープンソースとセキュリティが最近の興味の中心。

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています