Skip to content

デフォルトルール

ccchain init で生成されるデフォルトルールセットの詳細です。

テンプレート

primitive

安全な出力先コマンド(読み取り専用):

template primitive
  |,>>
    allow cat, echo, head, tail, wc, sort, uniq

safeRead

読み取り指向の処理コマンド。primitive を継承:

template safeRead
  next: primitive
  |,>>
    allow grep, awk, sed

bulkExec

一括処理コマンド。破壊的コマンドからの保護付き:

template bulkExec
  extends: safeRead
  |,>>
    deny rm    "don't pipe into destructive commands"
  exec:
    deny rm    "expand to tempfile first"
    allow cp, mv, touch

コマンドルール

コマンドアクションテンプレート説明
lsallowprimitiveディレクトリ一覧。パイプ先は cat, head 等のみ
findallowbulkExecパイプで rm に流すのを防止、-exec rm も防止
xargsallowbulkExecfind と同じ保護
grepallowsafeRead読み取り専用のフィルター処理
rmaskユーザーに確認を求める
curl | bashdenyリモートコード実行を防止
curl | shdenyリモートコード実行を防止
evaldeny静的解析不能なため拒否

設定

settings:
  max_context_depth: 2    # audit 展開の最大深度
  max_rules_per_cmd: 5    # audit でのコマンドあたりのルール数上限
  fallback: ask           # ルールにマッチしないコマンドのデフォルト動作

fallback の選択肢

効果
askユーザーに確認(デフォルト、推奨)
allow全て許可(テスト用)
deny全て拒否(厳格モード)

カスタマイズ

デフォルトルールの後にルールを追加すると、last-rule-wins で上書きできます:

# .ccchain.conf に追記

# プロジェクトでは rm を許可
allow rm

# プロジェクト固有のビルドツール
allow gradle
  next: bulkExec

個人用の上書きは .ccchain.local.conf に:

# .ccchain.local.conf(.gitignore 対象)

# 自分の環境では全て許可
allow rm
allow eval

Released under the MIT License.