【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に関する情報をご紹介できればと思います。
担当者紹介
- 担当者名
 - 渡邊
 - コメント
 - コード好き。アニメやドラマにターミナルの画面が出てくると、その内容がどのぐらい正確か必ずチェックします。
 - 保有資格
 - Certified Kubernetes Administrator
Certified Kubernetes Application Developer
 
SCSK技術者ブログ
クラウドにおけるサーバーレスワークロードの保護:Sysdig Secureによるアプローチ
Platform Engineering Kaigi 2025 参加レポート
検知から対応をシームレスに! Sysdigの新機能「Response Action」でインシデント対応を迅速化
【SCSK技術者によるブログ】生成AIでSysdigエージェントのアップグレードを効率化 〜Helm values.yamlの移行作業を自動化〜
【SCSK技術者によるブログ】Sysdigの「Search」機能を体験!生成AIでクエリの学習コスト無しに脆弱性調査
【SCSK技術者によるブログ】ゼロトラスト文脈でのクラウドセキュリティ、そしてSysdig
【SCSK技術者によるブログ】Sysdigと組み合わせて効果的なソリューションのご紹介 ~ネットワークポリシー編~
【SCSK技術者によるブログ】生成AIで過検知対策を効率化!Sysdig Sageの実力検証
【SCSK技術者によるブログ】なぜ今、Sysdigが選ばれるのか?動画で解説!クラウドネイティブセキュリティの最前線 - SCSKの日本語伴走サポートで安心導入
【SCSK技術者によるブログ】Serverless AgentがAzure Container Appsに対応しました
【SCSK技術者によるブログ】システムコール分析における生成AIの活用
【SCSK技術者によるブログ】Sysdig情報アップデート~AWS連携にS3オプションが追加されました~
【SCSK技術者によるブログ】Falco初学者講座 - Exceptions編
【SCSK技術者によるブログ】Falco初学者講座 - List/Macro編
【SCSK技術者によるブログ】コンテナの電力消費をSysdig Monitorで監視してみよう
【SCSK技術者によるブログ】Sysdigの脅威検知はFalcoだけじゃない ~Contianer Drift編~
【SCSK技術者によるブログ】~Falco初学者に送る~ Sysdig SageでFalcoを勉強してみよう②
【SCSK技術者によるブログ】~Falco初学者に送る~ Sysdig SageでFalcoを勉強してみよう①
【 SCSK技術者によるブログ】Sysdigの設定をTerraformで管理してみた(Monitor編)
【SCSK技術者によるブログ】Falco初学者講座 - condition編
【SCSK技術者によるブログ】Sysdig Sageを使ってみた
【SCSK技術者によるブログ】Sysdigと組み合わせて効果的なソリューションのご紹介 ~ポリシーエンジン編②~
【SCSK技術者によるブログ】Sysdigをセキュアに使おう~IP Allowlist編~
【SCSK技術者によるブログ】Node ExporterをSysdig Monitorに連携してみた
【SCSK技術者によるブログ】Sysdigの設定をTerraformで管理してみた
【SCSK技術者によるブログ】CNAPPの理解とSysdigのカバレッジ
【SCSK技術者によるブログ】Sysdigの脅威検知はFalcoだけじゃない ~マルウェア検知編~
【SCSK技術者によるブログ】Sysdigのライセンス体系
【SCSK技術者によるブログ】Sysdig とMicrosoft Entra ID間でSAML認証設定を試してみた
【SCSK技術者によるブログ】Sysdigと組み合わせて効果的なソリューションのご紹介 ~ポリシーエンジン編~
【SCSK技術者によるブログ】Sysdigの脅威検知はFalcoだけじゃない ~AWSサインインなりすまし検知編~
【SCSK技術者によるブログ】Sysdig SecureのRisks機能を試してみた