0

ENV 差分チェッカー

2 つの .env ファイル (ステージングと運用、デプロイ前と後) を比較し、どのキーが追加、削除、または変更され、シークレットのように見える値が自動的にマスクされたかを正確に確認します。

Buy Me a Coffee at ko-fi.com
処理中... 0%
両方のファイルを解析する
差分の計算
秘密のマスキング
完了

結果

ステージング .env ファイルと本番環境、または今日のデプロイ設定と先週のデプロイ設定を目で比較すると、実際の停止がどのようにして始まるかがわかります。つまり、DATABASE_URL が欠落していること、突然変更された PORT、一方の環境でローテーションされたのにもう一方の環境ではローテーションされなかった API キーなどです。両方のファイルを汎用テキスト diff に貼り付けても、あまり役に立ちません。実際にどの環境変数が変更されたかではなく、どの行が異なっているかが表示され、チームメイトと出力を共有した瞬間に、すべてのシークレット値が一目瞭然に表示されます。

このツールは、dotenv が実際にファイルを読み取る方法で両方のファイルを解析します。つまり、1 行に 1 つの KEY=value ペア、# コメントと空白行は無視され、一重引用符または二重引用符で囲まれた値は引用符で囲まれていません (dotenv 規約の指定どおりに、\n は二重引用符内でのみエスケープされません)、およびオプションのエクスポート KEY=value プレフィックスは、シェルソースの env ファイルの使用方法を許容します。各ファイルはきれいなキーと値のマップになり、次に 2 つのマップがキーによって比較されます。ファイル A にのみ存在するものは「削除」、ファイル B にのみ存在するものは「追加」、両方に存在し、異なる値を持つものは「変更」、同一の値は「未変更」でデフォルトで非表示になるため、テーブルは実際に異なるものに焦点を当てたままになります。

これを実際のシークレットで安全に使用できるようにする機能は、自動マスキングです。 diff テーブルに表示されるすべての値は、2 つの独立した信号に対してチェックされます。キー名がシークレットのように見えるかどうか (KEY、SECRET、TOKEN、PASSWORD、PRIVATE、または CREDENTIAL に対する大文字と小文字を区別しない一致)、値自体が高いシャノン エントロピーを持っているかどうか (値の文字に対する -Σ p(c) · log2(p(c)) と同じ情報理論的尺度)、API キー、トークン、ランダム パスワードにフラグを立てます。キー名が何のヒントも与えない場合でも、通常の単語とは統計的に異なります。どちらの信号でも、値を最初と最後の 2 文字までマスクするのに十分で、変更されたすべての行の古い側と新しい側に対して個別に計算されます。

解析、差分、エントロピー スコアリング、マスキングなどすべてがブラウザ内で実行されます。ファイルも、そこから抽出された値も、どこにも送信されません。これは、実際のデータベース認証情報、API キー、およびパスワードが含まれる可能性が高い 2 つのファイルを並べて確認することを全体の仕事とするツールにとって、適切な保証です。