コンテンツにスキップ

設定ファイル

はじめに

本サイトにつきまして、【IT技術の知見】はじめに - 俺の技術ノート をご認識のほど宜しくお願いいたします。


01. セットアップ

インストール

▼ チャートとして

チャートリポジトリからチャートをインストールし、Kubernetes リソースを作成する。

$ helm repo add <チャートリポジトリ名> https://falcosecurity.github.io/charts

$ helm repo update

$ kubectl create namespace falco

$ helm install <Helmリリース名> <チャートリポジトリ名>/falco -n falco --version <バージョンタグ>


02. 設定ファイル

設定ファイルの例


rules_file

切り分けて定義した Falco の設定ファイルを設定する。

rules_file:
  # デフォルトのルールを定義したファイル
  - /etc/falco/falco_rules.yaml
  # ユーザー定義のルールを定義したファイル
  - /etc/falco/falco_rules.local.yaml
  - /etc/falco/rules.d


plugins

Falco の拡張プラグインを設定する。

plugins:
  - name: k8saudit
    library_path: libk8saudit.so
    init_config: null
    open_params: "http://:9765/k8s-audit"
  - name: cloudtrail
    library_path: libcloudtrail.so
  - name: json
    library_path: libjson.so


load_plugins

plugins で定義したプラグインのうち、実際に読み込むプラグインの名前を設定する。

load_plugins: []


watch_config_files

設定ファイルやルールファイルの変更を監視し、変更を検知したときに Falco を再読み込みするかどうかを設定する。

watch_config_files: "true"


time_format_iso_8601

アラートの日時を ISO 8601 形式で出力するかどうかを設定する。

time_format_iso_8601: "false"


json_output

アラートを JSON 形式で出力するかどうかを設定する。

json_output: "false"


json_include_output_property

JSON 形式のアラートに、ルールの output で整形したメッセージを output キーとして含めるかどうかを設定する。

json_include_output_property: "true"


json_include_tags_property

JSON 形式のアラートに、ルールのタグを tags キーとして含めるかどうかを設定する。

json_include_tags_property: "true"


log_stderr

Falco 自身のログを標準エラー出力に出力するかどうかを設定する。

log_stderr: "true"


log_syslog

Falco 自身のログを syslog に出力するかどうかを設定する。

log_syslog: "true"


log_level

Falco 自身のログのうち、出力する最低のログレベルを設定する。

log_level: info


libs_logger

Falco が内部で使用するライブラリのログを出力するかどうかと、出力する最低の重要度を設定する。

libs_logger:
  enabled: "false"
  severity: debug


priority

アラートを出力するルールの最低の優先度を設定する。この優先度より低いルールに合致しても、アラートは出力しない。

priority: debug


buffered_outputs

アラートの出力をバッファリングするかどうかを設定する。

buffered_outputs: "false"


syscall_event_drops

システムコールのイベントを取りこぼしたと判定するしきい値と、取りこぼしたときに実行するアクションを設定する。

syscall_event_drops:
  threshold: 0.1
  actions:
    - log
    - alert
  rate: 0.03333
  max_burst: 1
  simulate_drops: "false"


syscall_event_timeouts

イベントを受信できずにタイムアウトした回数が、何回連続したらアラートを出力するかを設定する。

syscall_event_timeouts:
  max_consecutives: 1000


syscall_buf_size_preset

カーネルから Falco にシステムコールのイベントを受け渡すバッファのサイズを、プリセットの番号で設定する。

syscall_buf_size_preset: 4


output_timeout

アラートの出力処理が停止したとみなすまでの時間をミリ秒で設定する。

output_timeout: 2000


outputs

アラートの出力の流量を、トークンバケット方式の rate と max_burst で制限する。

outputs:
  rate: 0
  max_burst: 1000


syslog_output

アラートを syslog に出力するかどうかを設定する。

syslog_output:
  enabled: "true"


file_output

アラートをファイルに出力するかどうかと、出力先のファイルを設定する。

file_output:
  enabled: "false"
  keep_alive: "false"
  filename: ./events.txt


stdout_output

アラートを標準出力に出力するかどうかを設定する。

stdout_output:
  enabled: "true"


webserver

Falco が起動する Web サーバーを設定する。この Web サーバーは、ヘルスチェック用のエンドポイントなどを公開する。

webserver:
  enabled: "true"
  threadiness: 0
  listen_port: 8765
  k8s_healthz_endpoint: /healthz
  ssl_enabled: "false"
  ssl_certificate: /etc/falco/falco.pem


program_output

アラートを指定したプログラムの標準入力に渡すかどうかと、そのプログラムを設定する。

program_output:
  enabled: "false"
  keep_alive: "false"
  program: >-
    jq '{text: .output}' | curl -d @- -X POST
    https://hooks.slack.com/services/XXX


http_output

アラートを指定した URL に HTTP で送信するかどうかと、送信先の URL を設定する。

http_output:
  enabled: "false"
  url: "http://some.url"
  user_agent: falcosecurity/falco


grpc

Falco の gRPC サーバーを起動するかどうかと、gRPC サーバーが待ち受けるアドレスを設定する。

grpc:
  enabled: "false"
  bind_address: "unix:///run/falco/falco.sock"
  threadiness: 0


grpc_output

アラートを gRPC サーバー経由で出力するかどうかを設定する。

grpc_output:
  enabled: "false"


metadata_download

Kubernetes などからメタデータをダウンロードするときの最大サイズ、待機時間、監視の頻度を設定する。

metadata_download:
  max_mb: 100
  chunk_wait_us: 1000
  watch_freq_sec: 1