Sysdig

SCSK株式会社

ブログ

HOME Developer Square ブログ 【SCSK技術者によるブログ】Falco初学者講座 - List/Macro編

【SCSK技術者によるブログ】Falco初学者講座 - List/Macro編

皆さんこんにちは。
第20回担当の渡邊です。
今回はFalcoのルールを構成する要素のうち、ListとMacroについて解説していきます。

Falcoって何?という方は以下の記事をご覧ください。 https://www.scsk.jp/sp/sysdig/blog/scsk/scskfalco_-_condition.html

List, Macroとは何でしょうか

「要素や式をひとまとめにしたもの」です。
Listは複数の要素を、Macroは式を扱います。

どちらも記述を抽象化し、定義は再利用可能です。
これにより、複雑なconditionを簡潔に表記することができます。

実際の例を見てみましょう。

Listの例

yaml
- list: userexec_binaries
  items: [sudo, su]

Listの定義はKey名にlist、Valueに一意の名前を指定する事で可能です。
itemsは持たせたい要素を記述します。要素とはcondition中で評価させたい個別の値です。

この定義によって、condition句の中でuserexec_binariesという語が「sudoとsuの要素を持つもの」として認識されます。

Listは主にin演算子とセットで使用し、次のように記述します。
in演算子は与えられた項目を含むか評価します。

yaml
condition: proc.name in (userexec_binaries)

上記のproc.name in (userexec_binaries)は次のように考える事ができます。

yaml
proc.name = sudo or
proc.name = su

また、in演算子もnotを利用でき、not inと指定することで「List以外の値の場合」という評価をします。

Macroの例

yaml
- macro: container
  condition: container.id != host

Macroの定義はKey名にmacro、Valueに一意の名前を指定する事で可能です。
Macroは式を扱うため、ルールと同じconditionを用いて記述します。

この定義によって、condition句の中でcontainerという単語は「コンテナIDがhostではない」という式を意味するようになります。
また、Macroの中に異なるMacroを組み込むことも可能です。

参考情報:
Lists - https://falco.org/docs/concepts/rules/basic-elements/#lists
Macros - https://falco.org/docs/concepts/rules/basic-elements/#macros

ListとMacroの活用例

yaml
- macro: container
  condition: container.id != host

- list: shell_binaries
  items: [bash, csh, ksh, sh, tcsh, zsh, dash]

- macro: shell_procs
  condition: proc.name in (shell_binaries)

- rule: shell_in_container
  desc: notice shell activity within a container
  condition: >
    spawned_process and
    container and 
    shell_procs

上記のうち、アラート通知の条件となるのは rule であるshell_in_container のconditionのみです。
このconditionにはshell_binaries, shell_procsというListとMacroが用いられています。

shell_in_containerのconditionは概ね次のような解釈となります。

プロセスが新たに立ち上げられた時、かつ
コンテナ環境での実行、かつ
プロセス名が[bash, csh, ksh, sh, tcsh, zsh, dash]のいずれか

これはdocker exec <container名> /bin/shの様なアクティビティをトリガーにアラート通知するルールですが、ListやMacroを使う事で簡潔な記述となっていることが分かります。

理解度クイズ

ListやMacroの理解を深めていただけたでしょうか。
最後に理解度を確かめるための問題を出します。よく考えてみてくださいね。

問題
1. 「q1_list」という名称のlistを用い、proc.nameが[cat, echo]のプロセスの場合。というconditionを持つMacro「q1_macro」を作成してください。

回答
問題1:
- list: q1_list
items: [cat, echo]

- macro: q1_macro
condition: proc.name in (q1_list)

最後に

今回はListとMacroの仕組みを解説しました。初めてFalcoに触れる方の学習の一助になれば幸いです。 Falcoはカスタマイズ性が非常に高いため、自分でカスタマイズできるようになると、今まであきらめていたセキュリティ要件を実現するなど、ワンランク上のSysdig活用術を身につけることができます。

今後もFalco Ruleに関する情報をご紹介できればと思います。

担当者紹介

SCSK 渡邊
担当者名
渡邊
コメント
コード好き。アニメやドラマにターミナルの画面が出てくると、その内容がどのぐらい正確か必ずチェックします。
保有資格
Certified Kubernetes Administrator
Certified Kubernetes Application Developer

SCSK技術者ブログ

Platform Engineering Kaigi 2025 参加レポート

Platform Engineering Kaigi 2025 参加レポート

検知から対応をシームレスに! Sysdigの新機能「Response Action」でインシデント対応を迅速化

検知から対応をシームレスに! Sysdigの新機能「Response Action」でインシデント対応を迅速化

【SCSK技術者によるブログ】生成AIでSysdigエージェントのアップグレードを効率化 〜Helm values.yamlの移行作業を自動化〜

【SCSK技術者によるブログ】生成AIでSysdigエージェントのアップグレードを効率化 〜Helm values.yamlの移行作業を自動化〜

【SCSK技術者によるブログ】Sysdigの「Search」機能を体験!生成AIでクエリの学習コスト無しに脆弱性調査

【SCSK技術者によるブログ】Sysdigの「Search」機能を体験!生成AIでクエリの学習コスト無しに脆弱性調査

【SCSK技術者によるブログ】ゼロトラスト文脈でのクラウドセキュリティ、そしてSysdig

【SCSK技術者によるブログ】ゼロトラスト文脈でのクラウドセキュリティ、そしてSysdig

【SCSK技術者によるブログ】Sysdigと組み合わせて効果的なソリューションのご紹介 ~ネットワークポリシー編~

【SCSK技術者によるブログ】Sysdigと組み合わせて効果的なソリューションのご紹介 ~ネットワークポリシー編~

【SCSK技術者によるブログ】生成AIで過検知対策を効率化!Sysdig Sageの実力検証

【SCSK技術者によるブログ】生成AIで過検知対策を効率化!Sysdig Sageの実力検証

【SCSK技術者によるブログ】なぜ今、Sysdigが選ばれるのか?動画で解説!クラウドネイティブセキュリティの最前線 - SCSKの日本語伴走サポートで安心導入

【SCSK技術者によるブログ】なぜ今、Sysdigが選ばれるのか?動画で解説!クラウドネイティブセキュリティの最前線 - SCSKの日本語伴走サポートで安心導入

【SCSK技術者によるブログ】Serverless AgentがAzure Container Appsに対応しました

【SCSK技術者によるブログ】Serverless AgentがAzure Container Appsに対応しました

【SCSK技術者によるブログ】システムコール分析における生成AIの活用

【SCSK技術者によるブログ】システムコール分析における生成AIの活用

【SCSK技術者によるブログ】Sysdig情報アップデート~AWS連携にS3オプションが追加されました~

【SCSK技術者によるブログ】Sysdig情報アップデート~AWS連携にS3オプションが追加されました~

【SCSK技術者によるブログ】Falco初学者講座 - Exceptions編

【SCSK技術者によるブログ】Falco初学者講座 - Exceptions編

【SCSK技術者によるブログ】Falco初学者講座 - List/Macro編

【SCSK技術者によるブログ】Falco初学者講座 - List/Macro編

【SCSK技術者によるブログ】コンテナの電力消費をSysdig Monitorで監視してみよう

【SCSK技術者によるブログ】コンテナの電力消費をSysdig Monitorで監視してみよう

【SCSK技術者によるブログ】Sysdigの脅威検知はFalcoだけじゃない ~Contianer Drift編~

【SCSK技術者によるブログ】Sysdigの脅威検知はFalcoだけじゃない ~Contianer Drift編~

【SCSK技術者によるブログ】~Falco初学者に送る~ Sysdig SageでFalcoを勉強してみよう②

【SCSK技術者によるブログ】~Falco初学者に送る~ Sysdig SageでFalcoを勉強してみよう②

【SCSK技術者によるブログ】~Falco初学者に送る~ Sysdig SageでFalcoを勉強してみよう①

【SCSK技術者によるブログ】~Falco初学者に送る~ Sysdig SageでFalcoを勉強してみよう①

【 SCSK技術者によるブログ】Sysdigの設定をTerraformで管理してみた(Monitor編)

【 SCSK技術者によるブログ】Sysdigの設定をTerraformで管理してみた(Monitor編)

【SCSK技術者によるブログ】Falco初学者講座 - condition編

【SCSK技術者によるブログ】Falco初学者講座 - condition編

【SCSK技術者によるブログ】Sysdig Sageを使ってみた

【SCSK技術者によるブログ】Sysdig Sageを使ってみた

【SCSK技術者によるブログ】Sysdigと組み合わせて効果的なソリューションのご紹介 ~ポリシーエンジン編②~

【SCSK技術者によるブログ】Sysdigと組み合わせて効果的なソリューションのご紹介 ~ポリシーエンジン編②~

【SCSK技術者によるブログ】Sysdigをセキュアに使おう~IP Allowlist編~

【SCSK技術者によるブログ】Sysdigをセキュアに使おう~IP Allowlist編~

【SCSK技術者によるブログ】Node ExporterをSysdig Monitorに連携してみた

【SCSK技術者によるブログ】Node ExporterをSysdig Monitorに連携してみた

【SCSK技術者によるブログ】Sysdigの設定をTerraformで管理してみた

【SCSK技術者によるブログ】Sysdigの設定をTerraformで管理してみた

【SCSK技術者によるブログ】CNAPPの理解とSysdigのカバレッジ

【SCSK技術者によるブログ】CNAPPの理解とSysdigのカバレッジ

【SCSK技術者によるブログ】Sysdigの脅威検知はFalcoだけじゃない ~マルウェア検知編~

【SCSK技術者によるブログ】Sysdigの脅威検知はFalcoだけじゃない ~マルウェア検知編~

【SCSK技術者によるブログ】Sysdigのライセンス体系

【SCSK技術者によるブログ】Sysdigのライセンス体系

【SCSK技術者によるブログ】Sysdig とMicrosoft Entra ID間でSAML認証設定を試してみた

【SCSK技術者によるブログ】Sysdig とMicrosoft Entra ID間でSAML認証設定を試してみた

【SCSK技術者によるブログ】Sysdigと組み合わせて効果的なソリューションのご紹介 ~ポリシーエンジン編~

【SCSK技術者によるブログ】Sysdigと組み合わせて効果的なソリューションのご紹介 ~ポリシーエンジン編~

【SCSK技術者によるブログ】Sysdigの脅威検知はFalcoだけじゃない ~AWSサインインなりすまし検知編~

【SCSK技術者によるブログ】Sysdigの脅威検知はFalcoだけじゃない ~AWSサインインなりすまし検知編~

【SCSK技術者によるブログ】Sysdig SecureのRisks機能を試してみた

【SCSK技術者によるブログ】Sysdig SecureのRisks機能を試してみた

【SCSK技術者によるブログ】Sysdigの防御機能Kill Processを試してみた

【SCSK技術者によるブログ】Sysdigの防御機能Kill Processを試してみた

ページトップへ