AI

オープンソースシークレット管理比較: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

機能比較表

比較項目VaultInfisicalOpenBao
動的シークレット
KV シークレット
PKI/証明書管理
暗号化サービス(Transit)
Kubernetes統合
WebUI
CLI
SDK(Node/Python/Go)
GitHub Actions統合
.env同期⚠️✅ ネイティブ⚠️
シークレットバージョン管理
監査ログ
HSMサポート
ライセンスBUSL 1.1MITMPL 2.0
GitHub Stars30k+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互換・完全OSSOpenBao
Kubernetes統合Vault or Infisical

関連外部リソース

他の記事も読む

Let's Build Together

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

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