mcpField
B
Bulwark

Bulwark

ローカル
github.comセキュリティ435 週間前に更新

Bulwark について

Bulwarkは、AIエージェントの外部ツール利用を制御し、操作を追跡したいチーム向けのガバナンスレイヤーです。ポリシー評価、コンテンツ検査、認証情報の注入により、MCPとHTTPの通信を管理します。

主な機能

  1. 01YAMLベースのツール利用ポリシー
  2. 02認証情報の暗号化保存と注入
  3. 03リクエストとレスポンスの検査・マスキング
  4. 04改ざん検知可能な監査ログ
  5. 05セッション管理とレート制限

活用シーン

  1. 01破壊的なツール操作へのエージェントのアクセス制限
  2. 02通信中の秘密情報や個人情報の検出とマスキング
  3. 03セッション履歴の確認と監査ログの検証
  4. 04HTTPプロキシによる非MCPクライアントの管理

MCP 対応

BulwarkはMCPゲートウェイとして、stdioまたはStreamable HTTPでMCPクライアントからの呼び出しを受け、上流サービスに転送します。ポリシー評価、コンテンツ検査、認証情報の注入、ツール呼び出しの記録を行います。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"bpolania-bulwark": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"BULWARK_CONFIG",
"-e",
"BULWARK_SESSION_TOKEN",
"ghcr.io/bpolania/bulwark:v0.2.0"
],
"env": {
"BULWARK_CONFIG": "<BULWARK_CONFIG>",
"BULWARK_SESSION_TOKEN": "<BULWARK_SESSION_TOKEN>"
}
}
}
}
起動コマンドdocker run -i --rm -e BULWARK_CONFIG -e BULWARK_SESSION_TOKEN ghcr.io/bpolania/bulwark:v0.2.0
設定が必要な環境変数
BULWARK_CONFIGPath to bulwark.yaml configuration file
BULWARK_SESSION_TOKENシークレットSession token for operator authentication (bwk_sess_...)

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
ocighcr.io/bpolania/bulwark:v0.2.0

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Bulwark

AI エージェント向けのオープンソースガバナンスレイヤーです。

Bulwark は AI エージェントと外部ツールの間に位置し、ポリシーを適用し、認証情報を管理し、コンテンツを検査し、完全な監査証跡を維持します。Claude Code、OpenClaw、Codex、あらゆる MCP/HTTP クライアントなど、すべてのエージェントに対して 1 つのポリシーで統制できます。

なぜ Bulwark なのか?

AI エージェントは強力ですが、統制されていません。あらゆるツールにアクセスし、あらゆる認証情報を漏えいさせ、監査証跡を残さない可能性があります。Bulwark はこれを解決します。

  • ポリシーの適用 — YAML ベースのルールにより、glob パターン、スコープベースの優先順位、ホットリロードを使用して、エージェントが利用できるツールを制御します
  • 認証情報の管理 — エージェントが実際のシークレットを見ることはありません。Bulwark は最終段階で認証情報を注入し、age で保存時に暗号化します
  • コンテンツ検査 — リクエストとレスポンスをスキャンして、シークレット、PII、プロンプトインジェクションを検出します。自動的にブロックまたはマスキングします
  • 監査ログ — あらゆる操作を、blake3 ハッシュチェーンを用いた改ざん検知可能な SQLite データベースに記録します
  • レート制限 — セッション、オペレーター、ツール単位、またはグローバルなトークンバケット方式のレート制限です。予算の適用を伴うコスト追跡も行います
  • MCP ネイティブ — MCP ゲートウェイまたは HTTP フォワードプロキシとして動作します。すべてのツール呼び出しレスポンスにガバナンスメタデータを付与します

インストール

# Homebrew (macOS / Linux)
brew install bpolania/tap/bulwark

# Docker
docker pull ghcr.io/bpolania/bulwark

# From source
git clone https://github.com/bpolania/bulwark.git
cd bulwark && cargo build --release

クイックスタート:GitHub を使った Claude Code の統制

この手順では、Bulwark 経由で Claude Code を GitHub に接続します。すべてのツール呼び出しがポリシー評価、監査、認証情報の注入を受けます。所要時間は約 5 分です。

前提条件: Claude Code がインストールされていること、GitHub の個人アクセストークン、および Node.js/npm(GitHub MCP サーバー用)。

1. 初期化して確認する
bulwark init my-project && cd my-project
bulwark doctor

doctor は 9 つの診断チェックを実行します。すべて成功する必要があります。

2. GitHub トークンを保存する
bulwark cred add github-token --type bearer_token
# Prompts for the token — hidden input, encrypted with age at rest

バインディングファイルで認証情報とツールの紐付けを設定し、GitHub のツール呼び出しにこのトークンを注入するよう Bulwark に知らせます。

3. 上流の GitHub サーバーを設定する

bulwark.yaml を編集します。

mcp_gateway:
  upstream_servers:
    - name: github
      command: "npx"
      args: ["-y", "@modelcontextprotocol/server-github"]
      env:
        GITHUB_PERSONAL_ACCESS_TOKEN: "${GITHUB_TOKEN}"

policy:
  policies_dir: "./policies"
  hot_reload: true

audit:
  enabled: true

inspect:
  enabled: true
  inspect_requests: true
  inspect_responses: true

シェルで GITHUB_TOKEN が設定されていることを確認してください(export GITHUB_TOKEN=ghp_...)。

4. ポリシーを作成する
cat > policies/base.yaml << 'EOF'
metadata:
  name: quickstart-policy
  scope: global

rules:
  - name: allow-reads
    description: "Allow all read operations"
    match:
      actions: ["read_*", "get_*", "list_*", "search_*"]
    verdict: allow
    priority: 10

  - name: allow-github-writes
    description: "Allow creating issues, comments, PRs"
    match:
      tools: ["github__*"]
      actions: ["create_*", "update_*"]
    verdict: allow
    priority: 10

  - name: block-destructive
    description: "Block all delete and force-push operations"
    match:
      actions: ["delete_*", "force_push_*"]
    verdict: deny
    priority: 20
    message: "Destructive operations are blocked by policy"

  - name: default-deny
    match: {}
    verdict: deny
    priority: -100
    message: "No policy explicitly allows this action"
EOF

bulwark policy validate
5. セッションを作成して Claude Code を接続する
# Create a session (--ttl is in seconds: 28800 = 8 hours)
bulwark session create --operator $(whoami) --agent-type claude-code --ttl 28800
# → Token: bwk_sess_7f3a...

export BULWARK_SESSION="bwk_sess_7f3a..."   # paste your actual token

# Register Bulwark as an MCP server in Claude Code
claude mcp add --transport stdio bulwark \
  --env BULWARK_SESSION=$BULWARK_SESSION \
  -- bulwark mcp start
6. Claude Code を使う — これで統制されます

Claude Code を起動します。GitHub ツールは github__list_issues、github__create_issue などの名前空間付きで表示されます。

試してみましょう。

「自分のリポジトリの未解決の issue を一覧表示して」

別のターミナルを開きます。

bulwark audit tail
22:01:03  github__list_issues   ✓ allow   3ms  (allow-reads)

すべての呼び出しについて、判定結果、一致したルール、実行時間が記録されます。次に、破壊的な操作を試してみましょう。

「issue #1 を削除して」

22:02:01  github__delete_issue  ✗ deny    <1ms (block-destructive)

ブロックされました。ポリシー評価はメモリ内で行われるため、1 ミリ秒未満で完了します。どのルールが拒否したかを説明する、構造化されたエラーがエージェントに返されます。

何が起きたのか

Claude Code は GitHub に直接ではなく、Bulwark に接続しました。ツール呼び出しごとに、Bulwark はセッションを検証し、シークレット/PII をスキャンし、ポリシーを評価し、実際の GitHub トークンを注入し、レスポンスをスキャンして、改ざん検知可能な監査イベントを記録しました。エージェントの使い心地はそのままに、基盤全体が統制されます。

さらに詳しく

コンテンツ検査 — 組み込みの 13 種類のパターンで AWS キー、GitHub トークン、秘密鍵、PII、プロンプトインジェクションをスキャンします。コンテンツがエージェントに届く前にマスキングします。

bulwark inspect rules
bulwark inspect scan --text "my key is AKIAIOSFODNN7EXAMPLE"

ポリシーのリプレイ — デプロイ前に、実際の監査履歴に対するポリシー変更の影響をプレビューします。

bulwark policy test --dir ./new-policies/ --since 1h

監査フォレンジック — セッションのタイムラインを再構築し、ハッシュチェーンを検証します。

bulwark session inspect <session-id>
bulwark audit verify
bulwark audit export --since 24h --format json

HTTP プロキシモード — MCP 非対応のエージェント向けに、Bulwark は TLS インターセプトを行うフォワードプロキシとして動作します。

bulwark proxy start
bulwark ca export   # trust the CA in your HTTP client

アーキテクチャ

┌─────────────┐     ┌──────────────────────────────────────────────┐     ┌──────────────┐
│             │     │                  Bulwark                      │     │              │
│  AI Agent   │────>│  Session > Inspect > Policy > Inject > Proxy │────>│  Upstream    │
│  (Claude,   │<────│  <── Audit <── Inspect <── Response <─────── │<────│  Tool/API    │
│   Codex,    │     │                                              │     │              │
│   custom)   │     └──────────────────────────────────────────────┘     └──────────────┘
└─────────────┘

統合モード

モードトランスポート最適な用途
MCP ゲートウェイ(stdio)stdio/JSON-RPCClaude Code、OpenClaw、あらゆる MCP クライアント
MCP ゲートウェイ(HTTP)Streamable HTTPリモートエージェント、MCP レジストリ、マルチエージェント
HTTP プロキシHTTP/HTTPSCodex、curl、あらゆる HTTP クライアント

ポリシーの例

# policies/base.yaml
metadata:
  name: my-policy
  scope: global

rules:
  - name: allow-reads
    verdict: allow
    priority: 10
    match:
      actions: ["read*", "get*", "list*"]

  - name: block-destructive-in-prod
    verdict: deny
    priority: 100
    match:
      actions: ["delete*", "drop*"]
    conditions:
      environments: ["production"]

  - name: default-deny
    verdict: deny
    match: {}

ポリシーセットの全例(startup、enterprise、development、multi-agent)については、examples/policies/ を参照してください。

CLI

bulwark init <path>              # Scaffold a new project
bulwark proxy start              # Start HTTP/HTTPS proxy
bulwark mcp start                # Start MCP gateway (stdio)
bulwark mcp serve                # Start MCP gateway (HTTP)
bulwark doctor                   # Diagnose setup issues (9 checks)
bulwark status                   # Health dashboard
bulwark policy validate          # Validate policy files
bulwark policy test --dir <path> # Test policies against audit log
bulwark session create|list|revoke|inspect
bulwark cred add|list|remove|test
bulwark audit search|tail|stats|export|verify
bulwark inspect scan|rules       # Content inspection
bulwark ca export|path           # CA certificate management
bulwark completions <shell>      # Shell completions (bash/zsh/fish)

Documentation

Development

git clone https://github.com/bpolania/bulwark.git
cd bulwark
cargo build --workspace
cargo test --workspace          # 487 tests
cargo clippy --workspace --all-targets -- -D warnings
Project Structure
crates/
  cli/        # CLI binary and commands
  proxy/      # HTTP/HTTPS forward proxy with TLS MITM
  mcp/        # MCP governance gateway
  config/     # Configuration loading and types
  policy/     # YAML policy engine with hot-reload
  vault/      # Credential storage and session management
  audit/      # Tamper-evident audit logging
  inspect/    # Content inspection (secrets, PII, injection)
  ratelimit/  # Token-bucket rate limiter and cost tracker
  common/     # Shared types and error definitions

License

Apache 2.0. See LICENSE.

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。