はじめに
こんばんは。
Laravelで知らない機能があったので試してみました。
本題
Laravel 9.32.0 以降では、.env ファイルを暗号化できる機能が追加されてるみたいです。
だいぶ前の機能だなおい。
知らなくてごめんなさい。
暗号化してみる
まず暗号化コマンドを実行します。
$ php artisan env:encrypt ┌ What encryption key would you like to use? ──────────────────┐ │ Generate a random encryption key │ └──────────────────────────────────────────────────────────────┘ INFO Environment successfully encrypted. Key .......................................................................................... base64:h1SEMkC5MxPgL+WD0niElLR4qh0wRn+N1ujjc6FzZb8= Cipher ............................................................................................................................... AES-256-CBC Encrypted file .................................................................................................................... .env.encrypted
これで .env.encrypted というファイルができます。
このファイルは .env 全体が暗号化されたものなので、これを Git にコミットしても安全です。
復号してみる
次に復号化してみます。
$ php artisan env:decrypt ┌ What is the decryption key? ─────────────────────────────────┐ │ ••••••••••••••••••••••••••••••••••••••••••••••••••• │ └──────────────────────────────────────────────────────────────┘ INFO Environment successfully decrypted. Decrypted file .............................................................................................................................. .env
暗号化したときに表示された Key を入力すると、.env ファイルが復号されます。
チーム開発での使い方
この機能の便利なところは:
- 新メンバー参加時: 暗号化された
.env.encryptedは Git にあるので、Key だけ共有すれば復号できる - 環境変数追加時:
.envを更新して暗号化してコミット。他メンバーは pull して復号するだけ - セキュリティ: 暗号化された状態で Git 管理できるから、履歴にも残せる
Key の管理は 1Password とかで共有すれば良さそうですね。
dotenvx というツールもあるらしい
調べてると dotenvx というツールも見つけました。
こっちは言語非依存のツールで、Laravel じゃなくても使えるみたいです。
Laravel との違い
違いをざっくりまとめると:
Laravel env:encrypt:
- Laravel 専用の機能
.env全体を暗号化して.env.encryptedという別ファイルに保存- キー名も含めて全部暗号化される
dotenvx:
- 言語非依存(Node.js、Python、Ruby など全部で使える)
.envファイル内の各変数の値を個別に暗号化- キー名は見えるけど、値だけが
encrypted:xxxという形式で暗号化される
どちらも同じ課題(チーム開発での .env 共有)を解決するけど、アプローチが違うって感じですね。
Laravel 使ってるなら標準機能で対応できるし、他の言語も使うプロジェクトなら dotenvx の方が良さそう。
まぁ自分はLaravelプロジェクトばっかりなんで dotenvx使う場面は今のところをなさそう...
終わりに
チーム開発での .env 共有問題、地味にストレスだったので、こういう機能があるのは助かります。
新メンバーに「Key送るから復号しといて」で済むのは楽ですね。
ではでは。
