⛏️

dotenvxを使用した環境変数の暗号化

に公開

dotenvx とは

dotenvx は、従来の .env ファイルによる環境変数管理をより安全かつ柔軟にするために開発されたツールです。

https://dotenvx.com/

https://github.com/dotenvx/dotenvx

インストール方法

# npm
npm install @dotenvx/dotenvx --save-dev

# macOS
brew install dotenvx/brew/dotenvx

基本的な使い方

https://github.com/dotenvx/dotenvx?tab=readme-ov-file#run-anywhere

暗号化機能

ファイル全体の暗号化

dotenvx encrypt -f .env.local
dotenvx encrypt -f .env.production

暗号化すると .env.local ファイル内の値が encrypted: 形式になり、同時に .env.keys ファイルが生成されます。このファイルには復号に必要な秘密鍵が含まれており、絶対に Git 管理しないように注意が必要です。

# .env.local ファイル(暗号化後)
SECRET_KEY="encrypted:xxxxxxxxx=="

# .env.keys ファイル
DOTENV_PRIVATE_KEY="xxxxxxxxxxxx"

個別の変数を暗号化する方法

dotenvx set SECRET_KEY "base64:xxx..." -f .env.local --encrypt
dotenvx set DATABASE_PASSWORD "password" -f .env.local --encrypt

必要な変数だけ暗号化することもできます。

暗号化された値の確認

# 復号して変数の値を確認
dotenvx get DATABASE_PASSWORD -f .env.local

# 復号出力を grep で抽出
dotenvx decrypt -f .env.local --stdout | grep SECRET_KEY

メリットとデメリット

メリット

  • セキュリティの向上
    環境変数を暗号化し、機密情報の漏洩リスクを低減できます。

  • チーム開発の効率化
    暗号化された .env ファイルと .env.keys を共有することで、全員が同じ設定を簡単に利用できます。

  • 言語非依存
    JavaScript や PHP など特定の言語に依存しないため、多言語構成のプロジェクトでも使用可能です。

デメリット

  • 導入時の学習コスト
    チーム内での共有やルールの徹底が必要です。

使用上の注意点

  • .env.keys ファイルは Git 管理しないでください。第三者に流出した場合、すべての暗号化ファイルが解読可能になります。
  • 秘密鍵の共有には細心の注意が必要です。メールやチャットでの平文共有は避けましょう。
  • 本番環境では定期的にキーやパスワードのローテーションを行うことを推奨します。
  • .env.keys を紛失すると復号できなくなるため、安全な方法で必ずバックアップをとってください。

参考

https://zenn.dev/moozaru/articles/edb09434f0680b
https://zenn.dev/yumemi_inc/articles/fff1cf90a0fead
https://zenn.dev/channnnsm/articles/db16df97eda696

Discussion