1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

.env を暗号化し、Git 管理可能とする dotenvx を使ってみた

1
Posted at

.env を暗号化し、Git 管理可能とする dotenvx を使ってみた

1. .env とは

.envアプリケーションが参照する環境変数を定義するためのファイルです。

Node.js や Python、Ruby、Go、PHP など多くの言語で共通して利用でき、アプリケーション内で参照されます。

DATABASE_URL=postgres://user:password@localhost:5432/db
API_KEY=xxxxxx
PORT=3000

これらはコード内にベタ書きせず、外部ファイルに切り出すことで以下を実現します。

  • 機密情報をソースコードに埋め込まない
  • 開発・テスト・本番など環境ごとに設定値を切り替えやすい
  • 環境変数の管理が容易になる

2. .env が必要な理由

.env を使う理由は主に以下です。

1. 機密情報の分離

API キーやパスワードはコードに書くべきではありません。
.env に分離することでセキュリティと管理性を両立できます。

2. 環境ごとの設定切り替え

開発環境、本番環境で利用する接続先やキーは当然異なります。
.env にまとめておくことで、切り替えが容易になります。

3. デプロイ時にも便利

CI/CD、Docker、Vercel、Azure Web Apps など、ほとんどのプラットフォームが環境変数を扱う前提で設計されています。
.env を利用することで、アプリの移植性も向上します。

3. .env の課題

便利な .env ですが、大きな問題があります。

課題1: Git で管理できない

.env は秘匿情報を含むため、通常 .gitignore します。
しかし Git 管理しないと、以下の問題が生じます。

  • チームメンバー間で .env を安全に共有できない
  • バージョン管理されないため、変更履歴が追えない
  • 環境ごとにファイルを配布する手間が発生する

課題2: 手作業で配布する必要がある

Slack やメールで共有するのはセキュリティ的に危険です。
秘密情報を zip にしたりパスワードをかけたり…と面倒さもあります。

課題3: DevOps が進むほど扱いが煩雑に

複数の環境があるほど .env の管理が煩雑になります。
GitHub Actions やデプロイ環境が増えると、管理コストは指数的に増加します。

4. dotenvx について

dotenvx は、これらの .env の課題を 暗号化 によって解決するプロダクトです。

dotenvx の特徴

  1. .env を AES256 で暗号化し、.env.encrypted として保存可能
  2. 暗号化されたファイルを Git にコミットできる
  3. 複数の .env.* を統合して扱える
  4. 特定環境のみ復号できるキーを発行できる
  5. CLI が軽量・高速で導入が簡単

最も重要なのは、
暗号化された .env を GitHub / GitLab に安全に置けるようになる点です。

これにより、チームメンバーや CI/CD で .env を共有する負担が激減します。

5. dotenvx の使い方について

Step1: インストール

プロジェクトローカルにインストールする場合:

npm install dotenvx --save-dev

グローバル利用:

npm install -g dotenvx

Step2: .env を用意する

DATABASE_URL=postgres://user:pass@localhost:5432/app
API_KEY=abcd12345

Step3: 暗号化する

npx dotenvx encrypt

実行すると以下が生成されます。

  • .env.encrypted(AES256で暗号化されたファイル)
  • .env.keys(復号用キー)

.env.encryptedGit 管理可能

.env.keys絶対に Git に上げない(.gitignore推奨)

Step4: 復号して実行する

npx dotenvx run -- node app.js

dotenvx が .env.encrypted を自動復号し、アプリを実行します。

Step5: デプロイ環境での利用

デプロイ先では 復号キーを環境変数 DOTENV_KEY に設定しておくだけです。

例(Vercel / Azure / GitHub Actions など)

DOTENV_KEY=xxxxx

あとは同じく dotenvx run で実行すれば OK。

CI/CD の例

- name: Run App
  run: npx dotenvx run -- node app.js
  env:
    DOTENV_KEY: ${{ secrets.DOTENV_KEY }}

まとめ

.env はアプリケーションには欠かせませんが、Git 管理ができないことが最大の課題でした。

dotenvx は
.env を暗号化 → Git 管理可能 → 必要な環境だけ復号」
というスマートなワークフローを実現します。

  • .env の安全な共有
  • 履歴管理のしやすさ
  • CI/CD への統合
  • 複数環境の統一管理

これらを簡単に実現できるため、個人開発からチーム開発まで幅広く活用できます。

実際に数分で導入できるため、.env 管理で悩んでいる方はぜひ試してみてください。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?