はじめに
こんにちは、adreaでエンジニアをしている押久保です。
最近、X(Twitter)を眺めていたら、dotenvxというものを知りました。
どうやら、環境変数を暗号化し、Git管理できるようになるらしいです。
この記事では、dotenvxについて調べてまとめています。
従来の.envの取り扱い
自分たちのチームでは、ローカル開発に必要な環境変数を.env.sampleなどに記載し、基本的にそれをコピーした.envを使用して開発をしています。
.env.sampleはGit管理しており、Git管理に向かないAPIキーなどの情報は開発者同士DMなどで共有を行なっています。
また、プロジェクトによっては.env自体をGoogle Driveで共有しているケースもあります。
どのチームも数人のため、このような運用でも問題はないのですが、以下のような問題点があります
①環境変数を特定のメンバーに聞かないと設定できない
②更新時の共有がめんどくさい
dotenvxとは
従来の.envはAPIキーなどを平文で保存しているため、漏洩したときのリスクが高くGitでの管理はしないことが常識になってます。
dotenvxでは、.envをBitcoinと同じアルゴリズムで暗号化されます。
これにより、セキュアに.envをGit管理することができます。
実際にやってみた
とりあえずサクッと試してみました
1. インストール
$ brew install dotenvx/brew/dotenvx
2. ファイル作成
$ touch .env
$ echo "console.log('Hello ' + process.env.HELLO)" > index.js
3. 暗号化して環境変数を追加
$ dotenvx set HELLO "world" -f .env
この段階で、.env.keysが生成されました。これは暗号の秘密鍵となります。
設定値の確認はdotenvx getでも可能なようです。
ファイルの内容
.envはちゃんと暗号化されていました
#/-------------------[DOTENV_PUBLIC_KEY]--------------------/
#/ public-key encryption for .env files /
#/ [how it works](https://dotenvx.com/encryption) /
#/----------------------------------------------------------/
DOTENV_PUBLIC_KEY="03785ae71827e43d196bad62d8030f00892e7ba344d3368bd5676a7a0e555c65a9"
# .env
HELLO="encrypted:BHhbXt2XwYLfHgEuCTfzRwmE41aLvHcIH1f8Rhg0w2PRCWu/6WFVrt+3FSKY8UNFlVGVor2LbIzmWCjt+1Oou+puEMV6wGOzvxo5zRBZZWDuxzB+dk9z5rOklbaSA9iUgT1TsZj2XtprJ91JnLdJEA=="
#/------------------!DOTENV_PRIVATE_KEYS!-------------------/
#/ private decryption keys. DO NOT commit to source control /
#/ [how it works](https://dotenvx.com/encryption) /
#/ backup with: `dotenvx ops backup` /
#/----------------------------------------------------------/
# .env
DOTENV_PRIVATE_KEY=41595788b620f4d733d2dcb6ab0791b7d0015e83735d2c304dae3124d1082ece
4. 実行してみる
$ dotenvx run -f .env -- node index.js
Hello world
まとめ
dotenvxを使った環境変数をGit管理することで以下のようなメリットがあります
- 環境変数更新時に各メンバーが更新しなくて良くなる
git pullするだけで、全員のローカル環境が最新(暗号化済み)の状態になります - 管理するものが秘密鍵のみになる
大量のAPIキーを個別に共有する必要がなく、DOTENV_PRIVATE_KEYを1つ共有するだけで済みます - CI/CDの設定が楽になる
GitHub Actions等で大量のSecretsをポチポチ登録する手間がなくなります。秘密鍵を1つ登録し、dotenvx run --を挟むだけで全変数が注入できます
現状の運用でも回ってはいますが、環境変数の更新時のめんどくささ無くすために、自分の関わっているプロジェクトで導入していきたいです!
▼新卒エンジニア研修のご紹介
レアゾン・ホールディングスでは、2025年新卒エンジニア研修にて「個のスキル」と「チーム開発力」の両立を重視した育成に取り組みました。 実際の研修の様子や、若手エンジニアの成長ストーリーは以下の記事で詳しくご紹介していますので、ぜひご覧ください!
▼採用情報
レアゾン・ホールディングスは、「世界一の企業へ」というビジョンを掲げ、「新しい"当たり前"を作り続ける」というミッションを推進しています。 現在、エンジニア採用を積極的に行っておりますので、ご興味をお持ちいただけましたら、ぜひ下記リンクからご応募ください。