はじめに:環境変数管理の課題
開発現場では環境変数に API キーやデータベース接続情報などの機密情報を保存することが一般的です。しかし、これらの情報を Git リポジトリに平文でコミットすると、情報漏えいのリスクが高まります。mise と age を組み合わせることで、ディレクトリごとに環境変数を管理しつつ、暗号化して安全に共有できます。
📑目次
環境変数の露出は、誤ったコミットや 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 での鍵注入は、プラットフォームのシークレット機能に依存します。
関連記事:
- Linux Kernel 19年ゼロデイ脆弱性 CVE-2026-43456 bonding driver 詳細と影響
- Google Driveに機密情報をアップロードするリスクと対策 2026年版
- 旧型 iPhone / iPad に修正不能な脆弱性「usbliter8」— 対象機種とリスクを解説
よくある質問(FAQ)
まとめと次のアクション
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
関連する新しい記事:
- 自衛隊USBマルウェア感染事件 NHK報道から学ぶセキュリティ対策 – This published update adds current operational context for mise + age で環境変数を安全に暗号化する方法 | 開発運用セキュリティ.
- 廃棄HDDのデータ流出リスクと安全処分方法【2026年最新】 – This published update adds current operational context for mise + age で環境変数を安全に暗号化する方法 | 開発運用セキュリティ.
著者
krona23
IT業界20年以上の実務経験を持ち、日本国内有数のPVを誇る大規模Webサービスで事業部長・CTOを複数社で歴任。Windows/iOS/Android/Webと技術の変遷を経験し、現在はAIネイティブへの変革に注力。DevGENTでは、AIコードエディタ・自動化ツール・LLMの実践的な使い方を日英西3言語で発信中。










コメントを残す