dotenvx・lkr・aws-vault・1Password CLI — .env 代替ツール4種の選び方とベストプラクティス
AI エージェントが .env ファイルを読み取るリスクが現実のものとなり、平文の .env を代替するツールが続々と登場しています。本シリーズでは aws-vault、lkr、dotenvx + 1Password CLI をそれぞれ解説してきました。
しかし「結局どれを使えばいいのか」という疑問が残ります。本記事では、4つのツールの守備範囲・強み・限界を比較し、チーム構成や開発環境に応じた選択指針を提示します。
4ツールの守備範囲
最も重要な違いは管理対象の範囲です。
| ツール | 管理対象 | DB接続 | SaaS キー | LLM API キー | AWS 認証 |
|---|---|---|---|---|---|
| aws-vault | AWS 認証情報のみ | - | - | - | 対応 |
| lkr | LLM API キー(8社) | - | - | 対応 | - |
| dotenvx | .env に書ける全て | 対応 | 対応 | 対応 | 対応 |
| 1Password CLI | 全種類 | 対応 | 対応 | 対応 | 対応 |
aws-vault と lkr は特定領域に特化したツールです。.env に含まれる全てのシークレットをカバーするには、dotenvx か 1Password CLI が必要になります。
各ツールの強みと弱み
aws-vault
| |
| 強み | 弱み |
|---|---|
| STS 一時認証(15分〜で自動失効) | AWS 認証情報しか管理できない |
| AssumeRole による権限分離 | macOS 限定(Keychain 依存) |
| MFA 統合 | チーム共有不可 |
| 漏洩しても短時間で無効化される |
最大の強みは STS による一時認証です。他のどのツールも「漏洩しても自動で失効する」認証情報は提供できません。aws-vault が発行する一時認証情報は、仮に AI エージェントに読まれても最短15分で失効します。
lkr
| |
| 強み | 弱み |
|---|---|
| TTY ガード(非対話環境でのキー抽出をブロック) | LLM API キー(8プロバイダ)のみ |
| runtime / admin キーの分離 | macOS 限定 |
| Zeroizing(メモリ上のゼロ埋め) | チーム共有不可 |
-k による最小権限注入 | Cargo ビルドが必要 |
最大の強みは AI エージェント対策に特化した設計です。TTY ガードが lkr get --plain のパイプ経由実行をブロックし、runtime / admin の分離が不要なキーの注入を防ぎます。LLM API キーは AI エージェントに読まれた場合のリスクが特に高い(エージェント自身が使える)ため、この特化は合理的です。
dotenvx
| |
| 強み | 弱み |
|---|---|
| 全種類のシークレットを管理可能 | 秘密鍵(.env.keys)の管理が必要 |
| 暗号化した .env を Git にコミット可能 | .env.keys が漏洩すると全て復号される |
| 無料・OSS | STS のような一時認証の仕組みがない |
| dotenv からの移行が容易 | AI エージェント特有の防御機能がない |
| CI/CD との統合が簡単 |
最大の強みは .env ワークフローとの互換性です。既存の .env をそのまま暗号化し、dotenvx run に置き換えるだけで移行できます。チームでは暗号化された .env を Git で共有し、秘密鍵は別チャネルで配布します。
1Password CLI
| |
| 強み | 弱み |
|---|---|
| 全種類のシークレットを管理可能 | 有料($2.99/月〜) |
| チームで Vault を共有できる | 1Password アカウントが必要 |
| Touch ID / 生体認証 | オフライン環境では使えない |
| Environment 機能でディスクに平文ゼロ | インターネット接続が必要 |
| MCP サーバー設定の保護にも対応 |
最大の強みはチーム共有とクラウド保管の両立です。Vault の共有機能で、チームメンバーが個別にセットアップする手間を省けます。1Password が既にチームで導入されていれば、追加コストなしで使えます。
4ツールの技術的比較
保存場所とセキュリティモデル
| ツール | 保存場所 | 暗号化方式 | 認証方法 |
|---|---|---|---|
| aws-vault | macOS Keychain | Keychain の暗号化 | Keychain + MFA |
| lkr | macOS Keychain | Keychain の暗号化 | Keychain |
| dotenvx | ファイル(.env) | ECIES + AES-256 | 秘密鍵ファイル |
| 1Password CLI | 1Password クラウド | AES-256-GCM + SRP | Touch ID / マスターPW |
AI エージェント対策
| 対策 | aws-vault | lkr | dotenvx | 1Password CLI |
|---|---|---|---|---|
| ファイル平文の排除 | 対応 | 対応 | 対応(暗号化) | 対応 |
| TTY ガード | - | 対応 | - | - |
| 一時認証(自動失効) | 対応 | - | - | - |
| runtime / admin 分離 | - | 対応 | - | - |
| 環境変数読み取りの防止 | 不可 | 不可 | 不可 | 不可 |
最後の行が重要です。どのツールも、復号されたシークレットが環境変数に載った後の読み取りは防げません。これは全ツールに共通する根本的な限界です。
チーム運用
| 項目 | aws-vault | lkr | dotenvx | 1Password CLI |
|---|---|---|---|---|
| チーム共有 | 不可 | 不可 | 可能(Git) | 可能(Vault) |
| オンボーディング | 各自設定 | 各自設定 | 秘密鍵を配布 | Vault に招待 |
| CI/CD 統合 | IAM ロール | - | DOTENV_PRIVATE_KEY | Service Account |
| 料金 | 無料 | 無料 | 無料 | 有料 |
| プラットフォーム | macOS | macOS | クロスプラットフォーム | クロスプラットフォーム |
選択パターン
パターン A: 1ツールでシンプルに済ませる
推奨: dotenvx または 1Password CLI
| |
メリット: 学習コスト・運用コストが最小。1つのツールで全シークレットをカバー。
デメリット: aws-vault の STS 一時認証や lkr の TTY ガードのような専門的な防御機能がない。
向いているチーム: 小規模チーム、.env からの移行を素早く済ませたい場合。
パターン B: 専門ツールを組み合わせる
推奨: aws-vault + lkr + dotenvx (or 1Password CLI)
| |
メリット: 各ツールの専門的な防御機能を全て活用できる。セキュリティが最高。
デメリット: 3つのツールのインストール・設定・運用が必要。コマンドが長くなる。
向いているチーム: セキュリティ要件が厳しい環境、AWS と LLM の両方を多用するチーム。
パターン C: aws-vault + 1Password CLI(現実的なバランス)
推奨: AWS だけ専門ツール、残りは 1Password に集約
| |
メリット: STS 一時認証の防御を維持しつつ、運用をシンプルに保てる。
デメリット: 1Password の有料プランが必要。
向いているチーム: 1Password を既に導入しているチーム、AWS を本番環境で使っているチーム。
パターン D: dotenvx + aws-vault(無料で堅実)
推奨: 有料ツールを避けつつ、AWS の防御を確保
| |
メリット: 全て無料。dotenvx は Git で共有可能。aws-vault で AWS の STS 一時認証を確保。
デメリット: dotenvx の秘密鍵管理が必要。macOS 限定(aws-vault)。
向いているチーム: コストを抑えたいチーム、macOS 統一の開発環境。
ツール選定より重要なこと
正直なところ、どのツールを選ぶかより「.env に平文を置かない」ことの方がはるかに重要です。
どのツールも根本的な限界(復号後の環境変数は AI エージェントから読める)は同じです。ツール選定に悩む時間があるなら、以下の3つを先にやりましょう。
1. .env の平文を今すぐ排除する
どのツールでもいいので、まず平文の .env をなくします。
| |
2. Claude Code の apiKeyHelper を設定する
Claude Code 自身の API キーは apiKeyHelper で動的取得にします。
| |
または 1Password CLI を使う場合:
| |
3. deny ルールで .env 関連ファイルの読み取りをブロックする
| |
4. プロセスを分離する
Claude Code にシークレットを渡さない運用が最も安全です。
| |
判断フローチャート
.env に平文のシークレットがある?
└─ はい → まず何でもいいから暗号化する(ここが最優先)
│
├─ AWS を使っている?
│ └─ はい → aws-vault を導入(STS 一時認証は代替不可)
│
├─ LLM API キーを複数使っている?
│ └─ はい → lkr の導入を検討(TTY ガードが有効)
│
├─ チームで共有が必要?
│ ├─ 1Password 導入済み → 1Password CLI
│ └─ 未導入 → dotenvx(Git で共有)
│
└─ 個人開発?
└─ dotenvx が最もシンプル
まとめ
- aws-vault の STS 一時認証は代替不可: AWS を使うなら、これだけは専門ツールを使う価値がある
- lkr は LLM API キーに特化した防御: TTY ガードと runtime/admin 分離は、AI エージェント時代に合理的な設計
- dotenvx は最も移行が容易: 既存の
.envをそのまま暗号化でき、Git で共有可能。無料 - 1Password CLI は最も守備範囲が広い: 全種類のシークレットをチームで共有可能。ただし有料
- 全ツールに共通の限界がある: 復号後の環境変数は AI エージェントから読める。完全な防御は不可能
- ツール選定より平文排除が優先: どのツールでもいいので、まず
.envの平文をなくすことが最も効果的 - 多層防御が現実解: ツール + apiKeyHelper + deny ルール + プロセス分離の組み合わせでリスクを最小化する