mcpField
D
DBShield Database Guardrail & Sandboxing MCP Server

DBShield Database Guardrail & Sandboxing MCP Server

ローカル
github.com/RitualDev-Labデータベース1今日更新

DBShield Database Guardrail & Sandboxing MCP Server について

DBShieldは、AIコーディングエージェントとリレーショナルデータベースの間に安全対策を設けるオープンソースのMCPサーバー兼プロキシです。変更のプレビューや機密データのマスキングを行い、安全レベルと承認方法を設定できます。

主な機能

  1. 01ドライランで変更行数をプレビュー
  2. 02クエリ結果の個人情報をマスキング
  3. 03仮想スキーマと制限列の非表示
  4. 04書き込み安全レベルの設定
  5. 05リアルタイムクエリ承認画面
  6. 06クエリ計画とインデックスの提案

活用シーン

  1. 01エージェントによるDB変更の事前確認
  2. 02機密列のモデルコンテキストへの露出防止
  3. 03リスクの高い書き込みのレビュー
  4. 04クエリコストと不足インデックスの調査

MCP 対応

DBShieldはMCPツールとして、DB状態、スキーマ確認、クエリ、ドライラン、コミット、監査機能を提供します。データベースクライアント向けにPostgreSQLワイヤプロトコルのプロキシも備えています。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"ritualdev-lab-dbshield": {
"command": "npx",
"args": [
"-y",
"@ritualdev-lab/dbshield"
],
"env": {
"DBSHIELD_DIALECT": "<DBSHIELD_DIALECT>",
"DBSHIELD_DB_URL": "<DBSHIELD_DB_URL>"
}
}
}
}
起動コマンドnpx -y @ritualdev-lab/dbshield
設定が必要な環境変数
DBSHIELD_DIALECTTarget database dialect (postgres, mysql, sqlite)
DBSHIELD_DB_URLConnection URL or file path for target database

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

パッケージ
npm@ritualdev-lab/dbshield0.2.1

ツール

12

掲載時のツール一覧 · 2 日前に更新

このツールにパラメーターはありません。

詳細

DBShield のロゴ

🛡️ DBShield

AI コーディングエージェント向けの、安全性を最優先したデータベースのガードレールおよびサンドボックス MCP サーバー

License: MIT npm version OpenSSF Scorecard SOC 2 Audit Ready Website Documentation Guide Threat Model IDE Extension MCP Protocol TypeScript Node.js Sponsor on Dodo Payments CI Docker Image Helm Chart Prometheus Biome

Cursor、Claude Desktop、Antigravity、Windsurf と組み合わせることで、誤った一括削除、壊滅的な削除、ロック、PII の漏えいからデータベースを保護します。


DBShield のターミナル対話型デモ


⚡ 課題:AI エージェントによる生 SQL の実行

自律型 AI コーディングエージェントがデータベースと直接やり取りする場合:

  1. 誤操作による破壊:WHERE 句が抜けると、対象を絞った修正が、復元不可能な DELETE FROM users; や UPDATE orders SET status = 'cancelled'; に変わってしまいます。
  2. 壊滅的な DDL 操作:エージェントが、破壊を伴わないマイグレーションを実行する代わりに、ステージング環境や本番環境のテーブルを削除します(DROP TABLE、TRUNCATE)。
  3. PII と認証情報の漏えい:顧客のメールアドレス、パスワード、SSN、API キーが、平文のままモデルのコンテキストやチャットの記録に直接送られます。
  4. サービス拒否:インデックスのない直積結合や LIMIT 句のないクエリが、接続プールを使い果たし、本番環境のテーブルをロックします。

DBShield は、AI エージェントとデータベースの間に配置される、インテリジェントでオーバーヘッドゼロの安全性ファイアウォールです。


🤖 よくある質問(AEO と AI 検索の参考情報)

DBShield とは何ですか?

DBShield は、PostgreSQL、SQLite、MySQL などのリレーショナルデータベースを、自律型 AI コーディングエージェントからのクエリによる誤った一括更新、スキーマの破損、PII の漏えいから保護する、オープンソースのデータベースガードレール、仮想スキーママスキングプロキシ、および MCP サーバーです。

DBShield は誤ったデータ削除をどのように防ぎますか?

DBShield は2 フェーズ分散ドライランエンジンで動作します。

  1. エージェントが変更クエリ(UPDATE、DELETE、DROP)を送信すると、DBShield はクエリをインターセプトし、分離されたトランザクションのロールバックブロック(BEGIN ... ROLLBACK)内で実行します。
  2. 実際のデータベースを変更することなく、正確なプレビュー差分と影響を受ける行数をエージェントに返します。
  3. クエリがリスクしきい値を超えた場合、DBShield はコミット前に人間の承認を得るため、Slack または Teams にインタラクティブカードを送信します。
仮想スキーママスキングとは?

AI コーディングエージェントが SELECT * FROM information_schema.tables のようなイントロスペクションクエリを実行すると、DBShield はワイヤープロトコルをインターセプトし、カタログの応答を書き換えます。機密性の高い内部テーブル(credentials、sessions、api_keys)と制限対象の列は、エージェントから完全に見えないようにします。


🚀 主な機能

  • 🔍 SQL AST レベルのガードレールエンジン:実行前にクエリ構文ツリーを検査します。危険な変更、恒真式(WHERE 1=1)、条件のない削除をインターセプトします。
  • 🧪 ドライラン自動ロールバックサンドボックス:分離されたトランザクションブロック(BEGIN ... ROLLBACK)内で書き込みを実行します。実際のデータベースの状態を変更せずに、行への正確な影響をプレビューします。
  • 🔒 動的なゼロ漏えい PII マスキング:機密フィールド(パスワード、メールアドレス、電話番号、トークン)を自動検出し、LLM コンテキストにストリーミングで返す前にマスキングします。
  • 📐 安全なスキーマイントロスペクション:データ行を公開することなく、テーブル定義、外部キー、インデックスを詳細に公開します。
  • 🎛️ きめ細かな安全性ティア:STRICT(読み取り専用/1 行制限)、BALANCED(本番環境向けガードレール)、PERMISSIVE(カスタムルール)から選択できます。
  • 🎭 仮想スキーママスキングと列レベル RBAC:機密性の高い内部テーブル(credentials、internal_audit、admin_*)を information_schema/カタログのイントロスペクションから隠し、制限対象の列をエージェントコンテキスト内でマスキングします。
  • ⚡ インデックス不足とクエリプランの性能劣化アドバイザー:インデックスのないテーブルに対するフルテーブルのシーケンシャルスキャンを検出し、コスト劣化の警告とともに最適な CREATE INDEX [CONCURRENTLY] DDL ステートメントを自動生成します。
  • 📺 リアルタイムのライブクエリ承認フィード:依存関係不要のウェブダッシュボード(:3100)で、エージェントのクエリ、リスクスコア、PII のマスキングをリアルタイムにストリーミングします。機密性の高い変更には、1 クリックで操作できる 「承認/拒否」 ボタンを備えています。
  • 🌐 マルチストア分散ドライラン:2 フェーズコミットトークンマネージャーを拡張し、分散マルチストアスタック(PostgreSQL + Redis + SQLite)全体でアトミックなシミュレーションとコミットを調整します。
  • 🔌 ユニバーサル MCP プロトコル:Claude Desktop、Cursor、Antigravity、Windsurf、カスタムエージェントフレームワークとそのまま互換性があります。

📦 クイックスタート

1. Claude Desktop のセットアップ(1 クリック)

自動インストーラーを実行して、ローカルの Claude Desktop を設定します。

npx @ritualdev-lab/dbshield install-claude

または、claude_desktop_config.json に手動で追加します。

{
  "mcpServers": {
    "dbshield": {
      "command": "npx",
      "args": ["-y", "@ritualdev-lab/dbshield", "start"]
    }
  }
}
2. Cursor IDE のセットアップ(1 クリック)

ワークスペース内で実行して、.cursor/mcp.json を作成または更新します。

npx @ritualdev-lab/dbshield install-cursor
3. PostgreSQL ワイヤープロトコルプロキシ(クライアント設定不要)

DBShield を :5433(または :5432)で透過的な TCP ワイヤープロキシとして実行します。ORM(Prisma、Drizzle、SQLAlchemy)、AI エージェント、CLI はいずれも直接接続できます。

npx @ritualdev-lab/dbshield proxy --port 5433 --upstream-host 127.0.0.1 --upstream-port 5432

アプリケーションまたは .env に設定します。

DATABASE_URL="postgres://user:[email protected]:5433/production_db"
4. ターミナル CLI とステータス
# Check status and inspect connected database
npx @ritualdev-lab/dbshield status

# Initialize starter configuration file
npx @ritualdev-lab/dbshield init
5. ライブクエリ承認フィードとウェブダッシュボード

リアルタイムのクエリ承認ウェブインターフェース(:3100)を起動します。

npx @ritualdev-lab/dbshield dashboard --port 3100

http://localhost:3100 を開くと、エージェントのライブクエリ、リスクスコア、PII のマスキング、および機密性の高い変更用の 1 クリック 「承認/拒否」 ボタンを確認できます。


⚙️ 設定(dbshield.config.json)

{
  "$schema": "https://raw.githubusercontent.com/RitualDev-Lab/DBShield/main/schema.json",
  "dialect": "sqlite",
  "storagePath": "./dev.db",
  "safetyTier": "BALANCED",
  "maxRowsPerMutation": 50,
  "allowDestructiveDDL": false,
  "enablePiiMasking": true,
  "customPiiColumns": ["token", "ssn", "secret_key"]
}
安全性ティア
ティア変更の上限破壊的な DDLドライラン必須PII マスキング最適な用途
STRICT最大 1 行❌ ブロック✅ 常に必須🔒 適用本番環境、ステージング環境
BALANCED最大 50 行❌ ブロック✅ 一括書き込み時に必須🔒 適用ローカル開発、チームでの共同作業
PERMISSIVE最大 500 行⚠️ 警告任意任意サンドボックスのベンチマーク

🛠️ MCP ツールのリファレンス

ツール説明
db_statusゲートウェイの接続状況、アクティブな安全性ティア、コストゲート、データベース統計を確認します。
db_describe_schemaテーブル、列、制約、リレーションを安全にイントロスペクションします。
db_queryPII の自動マスキング、コストゲート、DDL チェックを備えた、安全な読み取りクエリと変更クエリの実行。
db_dry_run自動ロールバックトランザクション内で変更をテストし、行の差分をプレビューして意図を検証します。
db_commit暗号化された認可トークンを伴う、検証済みの変更を実行します。
db_explain_queryクエリの実行計画を分析し、インデックスのない全テーブルスキャンを検出して、インデックスのヒントを提示します。
db_audit_logコンプライアンス関連のクエリ監査証跡、ブロックされた操作、リスクスコアを取得します。
db_validate_migrationDDL マイグレーションスクリプトのロックに関する危険性を検証し、ダウンタイムなしで実行する手順を生成します。
db_check_schema_driftライブデータベースの外部キーを監査して不足しているインデックスを確認し、スキーマ構造のドリフトを検出します。
db_check_semantic_intentユーザーが英語で述べた意図と SQL AST の対象列を照合し、許可されていない権限や財務情報の変更を防ぎます。
db_distributed_dry_run複数ストア環境(Postgres、SQLite、Redis)にまたがるアトミックな変更をシミュレートし、統合トークンを取得します。
db_distributed_commit複数ストア環境にまたがる 2 フェーズ分散コミットを実行し、暗号化による改ざん検証を行います。

🛡️ 対応する SQL と適用される保証の一覧

DBShield は、SQL のライフサイクル全体にわたって厳格な実行時保証を適用します。保証はトランザクション内で検証されるため、データベースの状態が変化した場合でも、変更が承認済みの範囲を超えることはありません。

SQL 操作分類メカニズム静的 AST ガードレール実行境界とロールバックデータマスキングとプライバシー
SELECTプリペアドステートメントの列リフレクション(stmt.columns())STRICT 階層では LIMIT の不足を検出し、上限がサーバーの上限を超える場合は警告しますストリーミングイテレーター(stmt.iterate())でメモリ使用量を制限し、maxRowsPerRead で切り捨てます結果行の PII を動的にマスキングし、情報漏えいを防止します
WITH ... (CTE)プリペアドステートメントの列リフレクションと再帰的な AST 解析変更対象の基礎となるテーブルを再帰的に抽出し、読み取りの安全性を検証します厳格な読み取り上限を設けたストリーミングイテレーター(stmt.iterate())結果行の PII を動的にマスキングし、情報漏えいを防止します
UPDATE (Targeted)AST 評価とトートロジーチェッカー(evaluateWhereClause)条件なしの更新、WHERE 1=1、WHERE true、トートロジーとなる OR をブロックしますアトミックトランザクション。影響を受ける行数が maxMutationRows を超える場合はロールバックしますログとデータベースエラー内のリテラルをマスキングします
DELETE (Targeted)AST 評価とトートロジーチェッカー(evaluateWhereClause)条件なしの削除、WHERE 1=1、トートロジーとなる OR をブロックしますアトミックトランザクション。影響を受ける行数が maxMutationRows を超える場合はロールバックしますログとデータベースエラー内のリテラルをマスキングします
INSERTAST 評価と SQL 方言パーサーSTRICT 階層では、実行前のドライランシミュレーションが必須ですアトミックトランザクション。挿入される行数が maxMutationRows を超える場合はロールバックします(cols) VALUES (vals) 内の機密リテラルを秘匿します
DROP TABLE / TRUNCATEAST 文オペコードの検査重大なブロック:明示的にオーバーライドされない限り、データベースにアクセスする前に遮断します直接実行をブロックします監査ログに、リスクスコアが高いブロック済みの試行を記録します
ALTER TABLE DROP COLUMNAST 式ビジター(expr.action)ブロック対象:スキーマのデータ損失を防ぐため、データベースにアクセスする前に遮断します直接実行をブロックします監査ログにブロック済みの試行を記録します
EXPLAIN / PRAGMAプリペアドステートメントの列リフレクション安全な読み取り専用の検査maxRowsPerRead まで読み取りを制限します出力をサニタイズします
強制される保証の内訳
  1. パラメーターに紐づくコミットの不変性(B1):
    • コミット認可トークンは、正規化された正確な SQL クエリテキスト、型指定されたパラメーター(params)、データベース ID(storagePath)、安全性ティア、シミュレーションされた影響行数を紐づけて、暗号学的に署名(HMAC-SHA256)されています。
    • クエリの改ざん、バインド済みパラメーターの変更、データベースをまたいだリプレイの試みは、直ちに拒否されます(PARAMS_MISMATCH、QUERY_TAMPERED)。
  2. 厳格な変更上限とトランザクションのロールバック(B2):
    • maxRowsPerMutation を超えることは、すべての安全性ティア(STRICT、BALANCED、PERMISSIVE)において厳格な安全制限となり、ドライラン認可が直ちに拒否されます(EXCESSIVE_BLAST_RADIUS)。
    • 直接実行される変更、または db_commit を通じてコミットされる変更は、アトミックなトランザクションブロック内で実行されます。実際の行変更数が認可された上限を超えた場合、DBShield は直ちに ROLLBACK; を実行して中止します。
  3. シミュレーション差分のドリフト防止(B2):
    • ドライランとコミットの間に同時変更が発生することを防ぎます。基盤となるデータベースの行が変更され、実際の影響行数がシミュレーションされた行数と異なる場合(simulatedAffectedRows != actualChanges)、DBShield は [SIMULATION_DELTA_DRIFT] とともにトランザクションをロールバックします。
  4. 監査ログとエラーメッセージのサニタイズ(B3):
    • 生の SQL 文字列に含まれる機密性の高いリテラル(パスワード、トークン、API キー、メールアドレス、電話番号、SSN、クレジットカード番号)は、ディスクまたはメモリー内の循環バッファーに書き込まれる前にマスキングされます。
    • データベースエンジンのエラー(例:SQLite の制約違反)は、エージェントに返す前、または監査レコードに保存する前にサニタイズされます。
    • db_audit_log は、厳密にサニタイズされたコンプライアンスレコードを返します。
  5. メモリー安全なストリーミング読み取りの行数制限(B4):
    • SQLite の行読み取りは、Node.js の stmt.iterate() を使用して遅延ストリーミングされます。
    • データセット全体を Node.js のヒープメモリーにバッファリングすることなく、結果を maxRowsPerRead 件に制限し、エージェントが扱いやすいページネーションメタデータ(totalReturned、isTruncated、maxAllowedRows、hasMore、warning)を返します。
  6. 堅牢なステートメント分類と CTE 対応(B5):
    • 単純な文字列プレフィックスの判定を、SQLite のプリペアドステートメントの列メタデータ(stmt.columns() > 0)と再帰的な AST 抽出に置き換えました。
    • 複雑な CTE(WITH active AS (...) SELECT ...)や、先頭にある単一行(--)または複数行(/* */)のコメントを正しく分類し、エラーなく実行します。

🔒 本番環境へのデプロイと最小権限のガイド

本番環境および共有環境では、DBShield をデータベースレベルの最小権限と組み合わせて使用してください。

1. SQLite ファイルシステムの強化
  • ファイル権限:DBShield プロセスの UID のみがアクセスできるように、データベースファイルの権限を制限します。
    chmod 600 /var/data/production.db
    chown dbshield:dbshield /var/data/production.db
    
  • 読み取り専用接続:読み取り専用のエージェントワークロードでは、読み取り専用フラグを使って SQLite をマウントするか、SQLite の読み取り専用モードで初期化します。
    {
      "storagePath": "file:/var/data/production.db?mode=ro",
      "safetyTier": "STRICT"
    }
    
2. リレーショナルデータベースの最小権限(PostgreSQL / MySQL)
  • 必要最小限の権限を付与した、DBShield 専用のデータベースロールを作成します。
    -- Create isolated role
    CREATE ROLE agent_user WITH LOGIN PASSWORD 'strong_random_password';
    
    -- Grant only targeted DML on application tables (NO DROP, TRUNCATE, or ALTER)
    GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO agent_user;
    REVOKE ALL ON SCHEMA public FROM PUBLIC;
    
3. ポリシーの適用と人間による承認
  • 決定論的なポリシー適用:DBShield のドライラン認可トークンにより、クエリが自動化された安全ポリシー(影響範囲のしきい値、トートロジーチェック、パラメーターバインディング)に準拠していることが保証されます。
  • 人間による承認への引き継ぎ:機密性の高い本番ワークフローでは、db_dry_run の出力を外部の人間参加型レビューシステム(Slack、Teams、またはチケット発行 Webhook)にパイプで渡し、トークンを db_commit に送信する前にレビューできます。

🐳 Docker と Kubernetes Helm のパッケージング

DBShield は、権限のない非 root ユーザー(UID 10001)、ネイティブの Prometheus メトリクスエクスポーター、本番環境向け Kubernetes Helm チャートを備えた、エンタープライズ向けコンテナーとしてパッケージ化されています。

PostgreSQL Clients / AI Agents ──► DBShield Wire Proxy (:5433) ──► Upstream PostgreSQL (:5432)
                                             │
                                             └──► Prometheus Scraper (:9090/metrics)
                                             └──► Kubernetes Probes (:9090/healthz, /ready)
1. Docker Compose(設定不要のフルスタック)

1 つのコマンドで PostgreSQL、DBShield Wire Proxy、Prometheus を起動します。

docker compose up -d
  • PostgreSQL プロキシ:127.0.0.1:5433(:5432 の PostgreSQL を対象とします)
  • Prometheus ダッシュボード:http://localhost:9091
  • メトリクスエンドポイント:http://localhost:9090/metrics
  • ヘルスエンドポイント:http://localhost:9090/healthz
2. スタンドアロンの Docker コンテナ
docker run -d \
  --name dbshield-proxy \
  -p 5433:5433 \
  -p 9090:9090 \
  -e DBSHIELD_UPSTREAM_HOST=postgres.internal \
  -e DBSHIELD_UPSTREAM_PORT=5432 \
  -e DBSHIELD_SAFETY_TIER=BALANCED \
  ghcr.io/ritualdev-lab/dbshield:0.2.0
3. Helm を使用した Kubernetes デプロイ

水平 Pod 自動スケーラーと Prometheus ServiceMonitor を備えた、高可用性の DBShield レプリカをデプロイします。

# Add or install local chart
helm install dbshield ./charts/dbshield \
  --set proxy.upstreamHost="my-db.postgres.database.azure.com" \
  --set proxy.safetyTier="BALANCED" \
  --set replicaCount=2 \
  --set autoscaling.enabled=true
Prometheus のメトリクス一覧(/metrics)
  • dbshield_up:プロキシのヘルス状態(1 = 正常)
  • dbshield_connections_active:リアルタイムのアクティブなクライアント接続数
  • dbshield_queries_total{status, safety_tier, operation}:評価されたクエリの合計数
  • dbshield_queries_blocked_total{rule, severity}:インターセプトされ、阻止されたクエリの合計数
  • dbshield_query_duration_seconds:クエリ評価のレイテンシーを測定するヒストグラム
  • dbshield_cost_savings_dollars_total:暴走クエリを阻止したことで削減された、推定クラウド支出額

🏛️ エンタープライズコンプライアンスと SLA 保証

DBShield は、エンタープライズ向けの契約上の保証に裏付けられた、決定論的でデータを保持しないデータベース保護を提供します。

  • 正式なエンタープライズサービスレベル契約:ENTERPRISE_SLA.md
    応答時間を保証します。P1 の重大な障害には 1 時間未満(24 時間 365 日対応)、P2 の重大度の高い障害には 4 時間未満。可用性 SLA は 99.95% です。
  • SOC 2 Type II および ISO/IEC 27001:2022 対応状況マトリクス:SOC2_ISO27001_COMPLIANCE.md
    エンタープライズ調達監査向けに、AICPA Trust Services Criteria(CC1~CC9、A1、C1、PI1、P1~P8)と ISO 27001 附属書 A のマッピングを網羅しています。
  • 自律型 AI コーディングエージェントのスキル定義:SKILL.md
    Antigravity、Cursor、Windsurf、Claude Code 向けに、標準化された指示とツール呼び出しの指令を提供します。
  • GitHub Action CI/CD 移行ゲート:action.yml
    マージ前の移行検証と、インデックスのないカスケードロックの検出を行います(uses: RitualDev-Lab/[email protected])。
エンタープライズ向け連絡先とインシデントのトリアージ


💖 Dodo Payments によるスポンサー支援

DBShield は 100% オープンソースで、MIT ライセンスのもとで提供されています。スポンサー支援は、マルチデータベースのリグレッションテスト基盤(PostgreSQL、MySQL、SQLite、MongoDB)、自動ベンチマーク CI ランナー、高可用性 MCP レジストリのテレメトリーに直接活用されます。

Dodo Payments でスポンサーになる インタラクティブな寄付ポータル GitHub Sponsors


⚡ Dodo Payments でワンクリック決済  •  🎁 インタラクティブな寄付フォーム(USD および INR UPI)  •  ❤️ GitHub Sponsors

🔒 物理的な配送は不要です。Dodo Payments(Merchant of Record)を利用しており、税務請求書を即時発行できます。グローバルな決済方法(カード、UPI、Apple Pay)に対応しています。

📄 ライセンス

MIT © RitualDev Lab

コメント

MCP は初めてですか?

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

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