ToolConvoyToolConvoyv2.6
DEV

.env ヘルパー — .env.example 生成、シークレット検出、環境差分

.env ファイルから .env.example を生成し、誤ってコミットされたシークレットをスキャンし、staging と production を比較します。すべてブラウザ内で完結し、アップロードは不要です。

● ローカル動作 · タブ内で生成ページ読み込み以降のツールによる通信:0件
DEV

.env Helper

Generate .env.example, scan for known secret formats, or diff two .env files — 100% local.

● ローカル動作 · タブ内で生成ページ読み込み以降のツールによる通信:0件
Loading…
広告
広告

.env ファイルは 12-factor アプリケーションを設定する最もシンプルな方法です。各行に KEY=value のペアを記述し、コメントは # で始まり、空行は無視され、アプリは起動時にファイルを読み込みます。形式が非常にシンプルなため、あらゆる言語・フレームワークの開発設定における事実上の標準となりました。Node.js、Python、Go、Ruby、PHP、Java のいずれにも .env を解析するライブラリが存在します。複雑になるのはライフサイクルの管理です。ローカル開発用の .env、staging サーバー用の .env.staging、本番用の .env.production、そしてリポジトリにコミットされる .env.example があり、新規開発者はこのファイルを見てどのキーを設定すべきか判断します。これらすべてを同期し続けること —— それが本ツールが解消する手間です。

.env 管理で見落とされがちなのはセキュリティ境界です。実際の値を含む .env ファイルはバージョン管理に入りません。.gitignore の 1 行目に .env が書かれています。コミットして安全なのは .env.example です。キーは同じで値だけがプレースホルダーになっており、設定ドキュメントとしての役割を果たします。多くのチームが一度は犯してしまうミスが、本物の API key、データベースパスワード、OAuth client secret を含む .env をコミットしてしまうことです。本ツールの Scan Secrets モードはそのミスに対する防波堤です。高エントロピーの文字列や既知のキープレフィックス(AWS、Stripe、GitHub、Slack、Google)をパターンマッチで検出し、本物の認証情報のように見えるものを公開リポジトリに到達する前にフラグします。

最後に運用面のまとめです。新規プロジェクトのセットアップが目的なら、自分の .env に対して Generate Example を実行して結果をコミットしましょう。新しい開発者はそれを .env にコピーして値を埋めるだけです。セキュリティ監査が目的なら、リポジトリ内のすべての .env ファイルに対して Scan Secrets を実行し、高リスクの指摘に対応しましょう。環境の比較が目的なら、staging と production の .env ファイルを指定して Diff を実行し、staging が production のキーをすべて備えていること、production 専用のキーが誤って staging に漏れていないことを確認しましょう。3 つのモードは .env 管理における 3 つの代表的なタスクをカバーします。継続的なメンテには、コミット時点で問題を食い止めるため、シークレットスキャナー(gitleaks、trufflehog)を用いた pre-commit hook を導入してください。

広告

使い方

  1. .env ファイルを貼り付ける

    .env の内容を入力エリアに貼り付けるか、.env ファイルを読み込みます。パーサーは標準的な KEY=value 行、`#` で始まるコメント、引用符付きの値、引用符で囲まれた複数行の値に対応します。

  2. ツールモードを選ぶ

    Generate Example(値を削除し、キーとコメントを保持)、Scan Secrets(AWS key、Stripe key、GitHub token など高エントロピーの文字列をフラグ)、Diff Environments(2 つの .env ファイルを並べて比較)を切り替えます。

  3. 結果をコピーまたはダウンロード

    生成された .env.example、シークレットスキャンレポート、または差分をクリップボードにコピーします。出力はプレーンテキストなので、そのままエディタや commit message に貼り付けられます。

よくある質問

スキャナーはどのようなシークレットを検出しますか?

スキャナーはパターンマッチングとエントロピー分析を組み合わせています。AWS access key(AKIA...)、Stripe secret key(sk_live_...)、GitHub token(ghp_..., gho_...)、Slack token(xoxb-...)、Google API key(AIza...)、および鍵のように見える 40 文字以上の base64/hex 文字列を検出します。

Generate Example はどのように動作しますか?

Generate Example は .env ファイルを読み込み、すべての値をプレースホルダー(空文字列、`changeme`、または値の用途に応じた `your-key-here`)に置き換えて .env.example を生成します。キーとコメントはそのまま保持されるため、結果は公開リポジトリにそのままコミットしても安全です。

環境差分は何を表示しますか?

差分は 4 つのセクションで構成されます。両方のファイルに存在するキー(値が一致または不一致)、最初のファイルにのみ存在するキー、2 番目のファイルにのみ存在するキー、値の不一致。staging が production のキーをすべて持っているか、どちらの環境にも不要なキーが残っていないかを確認する用途に便利です。

テスト用の API key もフラグされますか?

スキャナーは高エントロピーのパターンに一致する文字列をすべてフラグするため、テスト用 key も対象になります。テスト用 key が意図的にコミット可能であれば(Stripe の `sk_test_...`、GitHub の `gho_test_...`)、低リスクとしてラベル付けされます。本番環境の key は高リスクとしてフラグされます。

ツールが .env の内容を保存することはありますか?

いいえ —— ツールはすべてブラウザ内で動作します。.env の内容はメモリ上で解析され、サーバーには送信されません。ブラウザタブのメモリに保持されますが、タブを閉じるか Reset をクリックするとガベージコレクションで消去されます。

制限事項

  • パターンベースの検出シークレットスキャナーは正規表現パターンとエントロピーのヒューリスティックを用います。誤検出(シークレットではない長いランダム文字列)もあれば、検出漏れ(既知のパターンに一致しない短いシークレット)もあります。スキャナーは最後の砦として扱い、主防御にはしないでください。
  • 自動的なマスク処理は行わないスキャナーはシークレットをフラグするだけで、.env ファイル自体を書き換えません。コミット安全な版を得るには、フラグされた値を手動で置き換えるか、Generate Example を使ってください。Generate Example なら値がシークレットに見えるかどうかにかかわらず、すべての値が除去されます。
  • 差分はテキストベース環境差分はキーと値のペアをテキストとして比較します。キーの順序が入れ替わっても差分にはなりません(比較前にキーがソートされます)が、リスト型変数の値の順序変更はフラグされます。一部の環境では順序が意味を持つためです。

プラットフォーム別の注意点

macOS
macOS Terminal で同等の CLI を使うなら `diff <(grep -v '^#' .env.staging | sort) <(grep -v '^#' .env.prod | sort)` です。ブラウザ版は、チャットやメール、ドキュメントページから貼り付けた内容を再入力する手間をかけずに処理したい場合に最適です。
Windows
PowerShell での同等コマンドは `Compare-Object (Get-Content .env.staging) (Get-Content .env.prod)` です。ブラウザ版はクロスプラットフォームで一貫した動作を保証したい場合に最適です。同じ入力からどの環境でも同じ出力が得られます。
Linux
GNU coreutils で `comm -23 <(sort .env.staging) <(sort .env.prod)` を実行すると、staging にのみ存在するキーを確認できます。ブラウザ版は「生成」「スキャン」「差分」の 3 つのモードを 1 つのインターフェースにまとめており、スクリプトを書くほどでもない単発のチェックに便利です。
CLI
同じシークレット検出パターンは `gitleaks` や `trufflehog` といった CLI ツールにも実装されています。ブラウザ版は単発の .env ファイルのチェックに適しています。pre-commit hook や CI パイプラインに組み込むなら、こうした専用の CLI ツールが向いています。
Web
完全にクライアントサイドで動作し、ページのロード後はオフラインでも利用可能です。.env の内容はメモリ上で解析され、サーバーには送信されません。本番環境の認証情報でも安全に使用できますが、「ブラウザにシークレットを貼り付けない」という原則は変わりません。
広告
広告