rule コマンドの完全なリファレンスはカスタムルールを参照してください。
公式 rulebook は
rulebook_version: 2 を使用し、CC Safety Net 2.3.0 以降が必要です。カタログ
cc-safety-net/rulebooks リポジトリは CLI ごとに 1 つの rulebook を提供します:
各 rulebook は識別可能な誤操作を精選してカバーするものであり、プロバイダー API を完全にモデル化したものではありません。
aws s3 rm --dryrun、terraform state rm -dry-run、aws ec2 terminate-instances --dry-run などの安全なプレビューは許可されたままです。各 rulebook にはリポジトリ内に根拠ページがあり、各ルールが存在する理由、安全なプレビュー、意図的な除外、既知のギャップを記録しています:terraform · aws · gcloud · azure。
導入
基本はユーザースコープに導入してください。terraform や aws はプロジェクトをまたいで使うので、保護も特定のリポジトリではなく自分自身に付いてくるべきです:
--only と --ref はリポジトリの設定元でしか意味を持たないため、設定元を指定せずにどちらかを渡すと、cc-safety-net/rulebooks が選ばれます。リポジトリを自分で指定しても、これまでどおり動作します。このリポジトリが公開する rulebook をすべて導入する場合は、この指定が必要です。
--global を省くとプロジェクトスコープに導入されます。取り込まれたファイルはリポジトリの .cc-safety-net/ 配下に置かれるため、コミットすればチームメイト全員のクローンにルールが届きます。チームセットアップを参照してください。
正式な形式の指定で rulebook を 1 つだけ追加することもできます。rule list が表示し、rule remove が受け取るのもこの形式です:
導入時に行われること
rule add は選択した各 rulebook を取得し、スキーマを検証して同梱のテストフィクスチャを実行したうえで、ファイルを自分のスコープの rules/<name>/rulebook.json に取り込み(vendor)、内容の取得元コミットを報告します。以降、ランタイムはツール呼び出しのたびにこの取り込み済みのコピーを読み取ります。バックグラウンドでの取得も自動更新もありません。
コピーが変わるのは、次のコマンドを実行したときだけです:
--ref v1.0.0 での導入は常に同じ内容を取り込みます。ref を切り替えるまで、その設定元への rule update は何も変更しません。
ルールの上書きと rulebook の削除
ルールを無効化したりブロック理由を差し替えたりするには、rule.json のルール単位の上書きを使います。rulebook ファイル自体は変更されないため、rule update と競合しません。構文は rule.json のスキーマを参照してください。rulebook ごと削除するには:
任意のリポジトリから導入する
公式リポジトリに特別な仕組みはありません。.cc-safety-net/rules/<name>/rulebook.json という配置で rulebook を公開している GitHub リポジトリなら、どれでも rule add owner/repo で導入できます。チームやベンダーも同じ方法で独自のカタログを公開できます。
rulebook が効かないとき
npx -y cc-safety-net rule list は有効な各 rulebook とそのルール数を表示し、npx -y cc-safety-net explain "terraform destroy" は判定がどのルールによるものかをトレースします。設定元が無効と表示される場合の修復手順は、rulebook はライブファイルを参照してください。