はじめに:環境変数管理の課題

開発現場では環境変数に API キーやデータベース接続情報などの機密情報を保存することが一般的です。しかし、これらの情報を Git リポジトリに平文でコミットすると、情報漏えいのリスクが高まります。mise と age を組み合わせることで、ディレクトリごとに環境変数を管理しつつ、暗号化して安全に共有できます。

📑目次
  1. はじめに:環境変数管理の課題
  2. mise と age の役割とメリット
  3. インストールと初期設定手順
  4. public key: age14pf88g0uld5acqmjhpmuurtqj62tc2p6sh84933lu5haxa0ef5nsc869ql
  5. 環境変数ファイルの暗号化実践
  6. 復号・読み込みと CI/CD 統合
  7. セキュリティ上の注意点と制限
  8. よくある質問(FAQ)
  9. まとめと次のアクション

環境変数の露出は、誤ったコミットや CI/CD パイプラインでのログ出力が原因で発生します。age はシンプルな公開鍵暗号化ツールで、ファイル全体を暗号化できます。mise はディレクトリ単位の環境変数読み込みを自動化するツールです。この組み合わせにより、開発者は安全性を保ちながら作業効率を維持できます。


mise と age の役割とメリット

mise は direnv に似た仕組みで、ディレクトリに入ると自動的に .env ファイルを読み込みます。age は Go 言語で書かれた軽量な暗号化ツールで、秘密鍵と公開鍵のペアを使ってファイルを保護します。

主なメリットは以下の通りです。

  • Git に暗号化ファイルをコミット可能になり、チーム共有が容易になる
  • 復号はローカル鍵のみで実行でき、サーバー側に秘密を置かない
  • ディレクトリごとのコンテキスト切り替えが自動化される

これにより、従来の .env ファイル平文管理や、複雑なシークレット管理ツールの導入コストを削減できます。

項目 mise + age 従来の平文 .env sops
Git コミット安全性 暗号化で安全 露出リスク高 暗号化可能
セットアップ手順 2 ツールのインストール ほぼ不要 追加設定必要
ディレクトリ対応 自動切り替え 手動 手動
復号速度 高速 – やや遅め

出典: blog.miguelgrinberg.com (2026年時点の独立検証)


インストールと初期設定手順

まず、mise と age をインストールします。macOS の場合、Homebrew を利用すると簡単です。

==> Would install 2 formulae: mise age ==> Downloading https://ghcr.io/v2/homebrew/core/mise/manifests/2026.7.0 ==> Would install 1 dependency for mise: usage ==> Downloading https://ghcr.io/v2/homebrew/core/age/manifests/1.3.1-1 ==> Fetching downloads for: mise and age ==> Installing mise dependency: usage ==> Pouring usage–3.5.4.arm64_tahoe.bottle.tar.gz 🍺 /opt/homebrew/Cellar/usage/3.5.4: 13 files, 6.6MB ==> Installing mise ==> Pouring mise–2026.7.0.arm64_tahoe.bottle.tar.gz ==> Caveats If you are using fish shell, mise will be activated for you automatically. ==> Summary 🍺 /opt/homebrew/Cellar/mise/2026.7.0: 15 files, 101.3MB ==> Running brew cleanup mise… Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP=1. Hide these hints with HOMEBREW_NO_ENV_HINTS=1 (see man brew). ==> Pouring age–1.3.1.arm64_tahoe.bottle.1.tar.gz 🍺 /opt/homebrew/Cellar/age/1.3.1: 11 files, 11.4MB ==> Running brew cleanup age… ==> Caveats zsh completions have been installed to: /opt/homebrew/share/zsh/site-functions ==> mise If you are using fish shell, mise will be activated for you automatically.

次に、age の鍵ペアを生成します。

公開鍵は # created: 2026-07-07T08:42:16+09:00


public key: age14pf88g0uld5acqmjhpmuurtqj62tc2p6sh84933lu5haxa0ef5nsc869ql

AGE-SECRET-KEY-1JXSTZWPC8JXADZ0AN54D4QN95RWMZRYXLGQDU3CJESAV0S20SCTQLT2NXK の出力から取得し、チームメンバーに共有します。mise の設定として、プロジェクトルートに を作成し、環境変数の読み込みを定義します。

これらの手順は、公式ドキュメントと Miguel Grinberg のガイドに基づいています。鍵のバックアップを忘れずに行ってください。


環境変数ファイルの暗号化実践

プロジェクトディレクトリに ファイルを作成し、機密情報を記述します。その後、age で暗号化します。

暗号化後の を Git にコミットします。元の は に追加してローカルに残します。

復号時は秘密鍵を使って行います。

mise が自動で復号済みファイルを読み込むように設定することで、日常の開発作業がスムーズになります。


復号・読み込みと CI/CD 統合

CI/CD パイプラインでは、age の秘密鍵をシークレットストアに登録し、ビルド時に復号を実行します。GitHub Actions の例では、secrets.AGE_KEY を利用して復号ステップを追加します。

mise のフックを活用すれば、復号を自動化できます。これにより、開発環境と本番環境で一貫した設定管理が可能になります。


セキュリティ上の注意点と制限

age の鍵管理は重要です。秘密鍵の紛失は復号不能を意味します。また、暗号化ファイル自体は公開しても問題ありませんが、鍵の配布方法には注意が必要です。

制限として、age は単一ファイル暗号化に特化しており、複数ファイルの一括管理には追加スクリプトが必要です。CI/CD での鍵注入は、プラットフォームのシークレット機能に依存します。


関連記事:

よくある質問(FAQ)

Q: age の鍵をチームで共有する方法は?

公開鍵をリポジトリの README に記載し、秘密鍵は各開発者のローカルに安全に保管します。鍵のローテーションを定期的に行うことを推奨します。

Q: mise なしで age だけ使えますか?

可能です。ただし、ディレクトリごとの自動読み込み機能が失われるため、手動で復号する必要があります。

Q: 復号エラーが出る場合の対処は?

鍵ファイルのパーミッションとパスを確認してください。age -d コマンドの出力エラーメッセージを参考にします。


まとめと次のアクション

mise + age の組み合わせは、環境変数管理のセキュリティを向上させる実践的な手法です。まずは小規模プロジェクトで試し、鍵管理の運用フローを確立してください。

詳細は以下の独立ソースを参照してください。 – https://blog.sh1ma.dev/articles/20260706_mise_age_encrypt_env/ – https://blog.miguelgrinberg.com/post/how-to-securely-store-secrets-in-environment-variables

関連する新しい記事:

krona23

著者

krona23

IT業界20年以上の実務経験を持ち、日本国内有数のPVを誇る大規模Webサービスで事業部長・CTOを複数社で歴任。Windows/iOS/Android/Webと技術の変遷を経験し、現在はAIネイティブへの変革に注力。DevGENTでは、AIコードエディタ・自動化ツール・LLMの実践的な使い方を日英西3言語で発信中。

DevGENT について →

コメントを残す

Trending

DevGENTをもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む