MCP キーは /mcp リクエストの認証に使われ、hs-sql-agent がランタイム認可に利用するスコープを持ちます。管理ユーザーのセッションや OIDC ID とは別の認証境界です。
2.0.2 の正式な組み込みツールサーフェス
キー管理サービスが認識する組み込みツールは 5 つです。
| ツール | スコープ |
|---|---|
get_schemas | スキーマ探索 |
get_tables | テーブル探索 |
get_columns | カラム探索 |
execute_query_sql | 統制された SELECT 実行 |
execute_dml_sql | 統制された Safe DML |
同じデータベース向けに公開済みの Custom Tool も名前で選択できます。詳しくは カスタムツール を参照してください。
キーを発行する
- 名前を決める
名前は必須で、最大 100 文字です。
- データベースを紐付ける
2.0.2 の発行バリデーターでは DbManagementId が必須です。
- ツールを選択する
組み込みツールと、そのデータベース向けに公開済みの Custom Tool を選びます。
- データアクセスを制限する
クライアントが紐付け先データベースの一部だけを参照すべき場合は、テーブルホワイトリストを有効にします。
- ライフサイクル制御を設定する
必要に応じて有効期限、CORS オリジン、レート制限モード/上書き値を設定します。
- 平文シークレットをコピーする
ライフサイクルダイアログを閉じる前に、新しく発行されたキーをクライアントのシークレットストアへ保存します。
発行時のフィールド
| フィールド | 意味 |
|---|---|
Name | 運用者向けのキー名 |
ExpiresAt | 任意の有効期限。指定する場合は未来の日時である必要があります |
AllowedTools | カンマ区切りのツール名。空の場合は無制限 |
CorsAllowedOrigins | ブラウザー起点の MCP リクエストに対する任意のオリジン制限 |
DbManagementId | 紐付け先データベース。発行時は必須 |
TableWhitelist | 任意の完全修飾テーブル名ホワイトリスト(カンマ区切り) |
RateLimitMode | Inherit、Custom、Unlimited |
PermitLimitOverride | キー単位のカスタムレート制限に使用 |
WindowSecondsOverride | キー単位のカスタムレート制限に使用 |
保存されたキーのレコードに表示されるのは識別用の短い prefix だけです。生のシークレットはサーバーの HMAC シークレットを使って検証され、後から再表示する用途では保存されません。
キーをローテーションする
ローテーションでは、古いキーのデータベース/ツール/テーブル/CORS/レート制限スコープを引き継いだ置換用キーを作成します。
運用者は 0~1440 分の猶予期間を指定できます。
0の場合、古いキーは直ちに失効します。- 正の値を指定すると、必要に応じて古いキーの有効期限を猶予期間の終了時刻まで短縮します。
- 置換用キーには、新しく生成された別の平文シークレットが割り当てられます。
キーを複製する
複製では、ランタイムスコープをコピーしつつ、新しい名前とシークレットを持つキーを作成します。同等の権限が必要でも、2 つのクライアントで同じ認証情報を共有したくない場合に有効です。
複製したキーは独立したライフサイクルを持つため、元のキーを無効化せずに失効・ローテーションできます。
キーを失効する
失効するとキーを非アクティブにし、変更をコミットする前に検証キャッシュ経路へ失効 tombstone を書き込みます。これは、直前に失効した認証情報が古いキャッシュ状態によって引き続き検証されることを防ぐための仕組みです。
Bootstrap 管理のキーは通常のライフサイクルメソッドでは編集、ローテーション、失効できません。ライフサイクルは bootstrap 設定側で管理します。
レート制限の動作
キーは、ランタイムのキー用レート制限ポリシーを継承する、独自の上書き値を設定する、または明示的に無制限にすることができます。管理画面の一覧には、キーのモードと現在のセキュリティポリシーを組み合わせた実効レート制限も表示されます。
複数インスタンスで運用する場合、ノード間で制限を共有する必要があれば分散レートリミッター設定を使用してください。
DML と Elicitation
execute_dml_sql を許可すると、クライアント側の互換性要件が変わります。MCP クライアントは、対話的な更新承認で使用する form Elicitation フローをサポートしている必要があります。
新しいクライアントに DML を許可する前に、MCP クライアントの接続 を確認してください。