AI

シークレット管理比較: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 VaultInfisicalDoppler
ライセンスBSL 1.1MITSaaS(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 を設定するだけ

向いているケース: 即日導入・小チーム・セルフホスト不要

選択ガイド

状況推奨
エンタープライズ・動的シークレット・PKIVault
チーム向け・環境別管理・セルフホストInfisical
最速セットアップ・SaaS OKDoppler

内部リンク

外部リソース

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でローテーションをトリガーできます。

他の記事も読む

Let's Build Together

OSS導入、自社だけで悩まない。

ツール選定から構築・運用・AI活用まで、オープンソースラボ運営元のClasslessが伴走します。初回のご相談は無料です。