オープンソースシークレット管理比較:HashiCorp Vault vs Infisical vs OpenBao でAPIキーを安全に管理する
オープンソースラボ編集部 ・ 2026年6月13日
オープンソースシークレット管理比較:HashiCorp Vault vs Infisical vs Doppler でAPIキーを安全に管理する
APIキーやデータベースパスワードをGitHubリポジトリやSlackでやり取りしていませんか?2023年のGitHubスキャンで1000万件以上のシークレットが漏洩していることが判明しました。HashiCorp Vault・Infisical・OpenBAOでシークレットを安全に一元管理しましょう。
シークレット漏洩が引き起こすリスク
- 2023年のCircleCI事件: 顧客のシークレットが盗まれCI環境を通じて全社インフラが危険に
- GitHub Copilotのシークレット検出: 年間1000万件以上のシークレットをGitHubが検出・警告
- AWSキーの即時悪用: 漏洩後平均2分でボットが悪用し始める(AWS研究より)
シークレット管理ツールの導入は「セキュリティの強化」ではなく「最低限のリスク管理」です。
主要ツールの概要
HashiCorp Vault
シークレット管理のデファクトスタンダードです。動的シークレット(都度生成してローテーション)・暗号化サービス・PKI管理・Kubernetes認証を提供します。ただしBUSL v1.1ライセンスに変更されたため、クラウドサービスとしての提供は制限があります。
# Vault開発サーバー起動(テスト用)
vault server -dev -dev-root-token-id=myroot
export VAULT_ADDR='http://127.0.0.1:8200'
export VAULT_TOKEN=myroot
# シークレット書き込み
vault kv put secret/myapp/database \
password="super-secure-password" \
username="myapp_user"
# シークレット読み取り
vault kv get secret/myapp/database
# Kubernetes認証設定
vault auth enable kubernetes
vault write auth/kubernetes/config \
kubernetes_host="https://kubernetes.default.svc"
Infisical
Vault代替として急速に成長中のオープンソースシークレット管理ツールです。GitHubやVercelのようなUIで、開発者フレンドリーなシークレット管理を実現します。SDKが豊富でNode.js・Python・Go等から直接シークレットを取得できます。
# Infisicalのインストール
npm install -g @infisical/cli
infisical login
infisical init # プロジェクト初期化
# シークレットを環境変数として注入してアプリ起動
infisical run -- node server.js
# Docker Composeと統合
infisical run -- docker compose up
OpenBao
HashiCorp VaultのコミュニティフォークでLinux Foundation傘下のプロジェクトです。VaultのAPIと完全互換性を持ち、BUSLライセンス変更を嫌ったコミュニティが維持しています。
# OpenBaoの起動
docker run -d --name openbao \
-e VAULT_ADDR=http://0.0.0.0:8200 \
-p 8200:8200 \
openbao/openbao:latest server -dev
機能比較表
| 比較項目 | Vault | Infisical | OpenBao |
|---|---|---|---|
| 動的シークレット | ✅ | ❌ | ✅ |
| KV シークレット | ✅ | ✅ | ✅ |
| PKI/証明書管理 | ✅ | ❌ | ✅ |
| 暗号化サービス(Transit) | ✅ | ❌ | ✅ |
| Kubernetes統合 | ✅ | ✅ | ✅ |
| WebUI | ✅ | ✅ | ✅ |
| CLI | ✅ | ✅ | ✅ |
| SDK(Node/Python/Go) | ✅ | ✅ | ✅ |
| GitHub Actions統合 | ✅ | ✅ | ✅ |
| .env同期 | ⚠️ | ✅ ネイティブ | ⚠️ |
| シークレットバージョン管理 | ✅ | ✅ | ✅ |
| 監査ログ | ✅ | ✅ | ✅ |
| HSMサポート | ✅ | ❌ | ✅ |
| ライセンス | BUSL 1.1 | MIT | MPL 2.0 |
| GitHub Stars | 30k+ | 16k+ | 3k+ |
Infisicalのアプリ統合(Node.js)
// Node.jsアプリへの統合
import { InfisicalClient } from "@infisical/sdk";
const client = new InfisicalClient({
clientId: process.env.INFISICAL_CLIENT_ID,
clientSecret: process.env.INFISICAL_CLIENT_SECRET,
});
// シークレット取得
const dbPassword = await client.getSecret({
secretName: "DATABASE_PASSWORD",
projectId: "your-project-id",
environment: "production",
path: "/",
});
console.log(dbPassword.secretValue);
セキュリティ・コンプライアンス関連ツールはセキュリティカテゴリ(/categories/security)で一覧でき、DevOps・CI/CDツールはDevOpsカテゴリ(/categories/devops)でも探せます。
FAQ
Q. .envファイルとシークレット管理ツールの違いは何ですか?
A. .envファイルは便利ですが問題があります: Gitに誤ってコミットするリスク・複数環境(dev/staging/prod)での管理が困難・シークレットのローテーションが手動。シークレット管理ツールはこれらを解決します。特にInfisicalはCLI一発で.envを安全な場所に同期できるため、移行のハードルが低いです。
Q. Vaultは複雑すぎて使えないのですが、代替はありますか?
A. Infisicalが最もとっつきやすいです。GitHubライクなUIでシークレットをプロジェクト・環境ごとに管理でき、CLIでinfisical run -- node server.jsとするだけでシークレットが環境変数として注入されます。Vaultの複雑な設定なしに始められます。
Q. Kubernetes PodからVaultのシークレットを使うにはどうすればいいですか?
A. Vault Agent Injectorを使います。PodのAnnotationにvault.hashicorp.com/agent-inject: "true"を追加するだけで、Vault AgentがシークレットをPodにファイルとして注入します。環境変数ではなくファイルとして受け取るため、ps aux等でシークレットが露出しません。
Q. シークレットの自動ローテーションはできますか?
A. Vaultの「動的シークレット」機能を使うと、アプリがシークレットをリクエストするたびに新しいDBパスワード(TTL付き)を発行し、有効期限後に自動削除します。これにより「パスワードが漏洩しても一定時間後に無効化される」仕組みを実現できます。
まとめ
| ユースケース | 推奨ツール |
|---|---|
| エンタープライズ・動的シークレット | HashiCorp Vault |
| 開発者フレンドリー・.env管理 | Infisical |
| Vault互換・完全OSS | OpenBao |
| Kubernetes統合 | Vault or Infisical |