シークレット管理比較:HashiCorp Vault vs Infisical vs Doppler でAPIキーを安全に管理する
オープンソースラボ編集部 ・ 2026年6月14日
シークレット管理比較:HashiCorp Vault vs Infisical vs Doppler でAPIキーを安全に管理する
🔐 APIキー・データベースパスワード・証明書を安全に管理するシークレット管理ツール。HashiCorp Vault・Infisical・Dopplerを徹底比較します。
シークレット管理の重要性
.envファイルやGitリポジトリにAPIキーを直書きすることは重大なセキュリティリスクです。シークレット管理ツールは暗号化・アクセス制御・監査ログを提供します。
主要ツール比較表
| 項目 | HashiCorp Vault | Infisical | Doppler |
|---|---|---|---|
| ライセンス | BSL 1.1 | MIT | SaaS(OSS計画あり) |
| セルフホスト | ◎ | ◎ | × |
| UI | ◎ | ◎ | ◎ |
| PKI管理 | ◎ | △ | × |
| 動的シークレット | ◎ | × | × |
| Kubernetes統合 | ◎ | ◎ | ◎ |
| CLIツール | ◎ | ◎ | ◎ |
| セットアップ難度 | 高 | 低〜中 | 最低 |
各ツールの特徴
HashiCorp Vault
エンタープライズグレードのシークレット管理プラットフォーム。動的シークレット(使い捨てのDB認証情報等)という独自の強みがあります。
主な特徴:
- 動的シークレット(PostgreSQL/MySQL/AWS等の認証情報を都度生成・期限付き)
- PKI Secret Engine(TLS証明書の自動発行)
- Transit Secret Engine(暗号化as a Service)
- Kubernetes Auth Method(Podの自動認証)
# Vaultの起動(開発モード)
vault server -dev
# シークレットの保存と取得
export VAULT_ADDR='http://127.0.0.1:8200'
vault login root
vault kv put secret/myapp database_url="postgres://user:pass@db:5432/mydb" api_key="sk-abc123"
vault kv get secret/myapp
vault kv get -field=api_key secret/myapp
# Kubernetes での Vault Agent Injector
annotations:
vault.hashicorp.com/agent-inject: "true"
vault.hashicorp.com/role: "my-app"
vault.hashicorp.com/agent-inject-secret-config: "secret/data/myapp"
vault.hashicorp.com/agent-inject-template-config: |
{{- with secret "secret/data/myapp" -}}
DATABASE_URL={{ .Data.data.database_url }}
API_KEY={{ .Data.data.api_key }}
{{- end -}}
向いているケース: エンタープライズ・動的シークレット・PKI管理
Infisical
GitHubライクなUIで環境(dev/staging/prod)ごとのシークレット管理が直感的にできるOSSツール。近年急速に普及しています。
主な特徴:
- GitHub風のUIで環境別シークレット管理
- 開発者がすぐ使えるCLI・SDK(Node.js/Python/Go等)
- Kubernetes Operator対応
- End-to-End暗号化
- Audit Log・バージョン履歴
# Infisicalのインストールと認証
npm install -g @infisical/cli
infisical login
# プロジェクト初期化
infisical init
# 環境変数を注入してアプリを起動
infisical run --env=production -- node server.js
# シークレットの取得
infisical secrets get DATABASE_URL --env=production
# Docker Composeで セルフホスト
curl -1sLf 'https://dl.cloudsmith.io/public/infisical/infisical-core/setup.deb.sh' | sudo -E bash
sudo apt-get install -y infisical
# Python SDK
from infisical_client import InfisicalClient, ClientSettings, GetSecretOptions
client = InfisicalClient(ClientSettings(
client_id="machine-identity-id",
client_secret="machine-identity-secret",
site_url="https://app.infisical.com",
))
secret = client.getSecret(options=GetSecretOptions(
environment="production",
project_id="PROJECT_ID",
secret_name="DATABASE_URL"
))
print(secret.secret_value)
向いているケース: チーム開発・環境別管理・セルフホスト重視
Doppler
最もセットアップが簡単なSaaS型シークレット管理。CLIを入れるだけで既存の.envを置き換えられます。
主な特徴:
- セットアップが最速(CLI 1コマンド)
- CI/CD統合が豊富(GitHub Actions・Vercel・Netlify等)
- チーム権限管理
- Webhookでシークレット変更を通知
# Dopplerのインストールと認証
brew install dopplerhq/cli/doppler
doppler login
# プロジェクト設定
doppler setup
# シークレット注入でアプリを起動
doppler run -- python app.py
doppler run -- docker-compose up
# GitHub Actionsでの利用
# → GitHub SecretsにDOPPLER_TOKEN を設定するだけ
向いているケース: 即日導入・小チーム・セルフホスト不要
選択ガイド
| 状況 | 推奨 |
|---|---|
| エンタープライズ・動的シークレット・PKI | Vault |
| チーム向け・環境別管理・セルフホスト | Infisical |
| 最速セットアップ・SaaS OK | Doppler |
内部リンク
外部リソース
FAQ
Q. .envファイルからの移行は大変ですか?
Infisical・Dopplerはどちらも.envファイルをインポートする機能があります。移行は数分でできます。
Q. VaultのBSLライセンス変更で何が変わりましたか?
2023年にApache 2.0からBSL 1.1に変更されました。社内利用は引き続き無料ですが、VaultのSaaS競合を構築することは禁止されています。OpenBao(フォーク)がApache 2.0を維持しています。
Q. Kubernetesでシークレットを安全に使う最善の方法は?
Kubernetes SecretsはBase64エンコードであり暗号化ではありません。VaultかInfisicalのKubernetes Operatorを使い、外部シークレットとして管理するのがベストプラクティスです。
Q. シークレットのローテーション(定期変更)は自動化できますか?
Vaultの動的シークレットは使用するたびに新しい認証情報を生成します。InfisicalとDopplerはWebhookでローテーションをトリガーできます。