跳至主要內容
hs-sql-agent
2.0.3
文件 2.0.3
文件 管理

MCP 金鑰

在 hs-sql-agent 簽發、限制、輪替、複製與撤銷 MCP 憑證。

資料庫邊界 正式環境中的每把 MCP 金鑰都會綁定一筆 Database Management 設定。
工具邊界 只開放用戶端真正需要的內建工具與已發布的 Custom Tools。
資料表邊界 需要時可用完整限定名稱的資料表白名單,進一步限制金鑰可存取的資料表。

MCP 金鑰用來驗證送往 /mcp 的請求,並攜帶 hs-sql-agent 執行階段所需的授權範圍。它和管理端使用者工作階段、OIDC 身分屬於不同的安全邊界。

hs-sql-agent 內建工具

金鑰管理服務正式辨識五個內建工具:

工具用途
get_schemas取得 schema 清單
get_tables取得資料表清單
get_columns取得欄位清單
execute_query_sql執行受治理的 SELECT
execute_dml_sql執行受治理的 Safe DML

同一資料庫下已發布的 Custom Tools 也可以依名稱加入允許清單。請見 Custom Tools

簽發金鑰

  1. 設定名稱

    請求必須提供非空白名稱,上限為 100 個字元。

  2. 綁定資料庫

    hs-sql-agent 的簽發驗證要求提供 DbManagementId。

  3. 選擇工具

    選取需要的內建工具,以及該資料庫已發布的 Custom Tools。

  4. 限制資料存取

    如果用戶端只能查看部分資料表,請啟用資料表白名單。

  5. 設定生命週期限制

    需要時可設定到期時間、CORS 來源,以及速率限制模式或覆寫值。

  6. 複製明文密鑰

    關閉生命週期對話框前,先把新金鑰保存到用戶端的安全密鑰儲存區。

簽發欄位

欄位意義
Name方便管理者辨識金鑰的名稱
ExpiresAt選用的到期時間;有設定時必須是未來時間
AllowedTools以逗號分隔的工具名稱;空白代表不限制
CorsAllowedOrigins選用的瀏覽器來源 MCP CORS 限制
DbManagementId綁定的資料庫項目;簽發時必填
TableWhitelist選用、以逗號分隔的完整限定資料表白名單
RateLimitModeInheritCustomUnlimited
PermitLimitOverrideCustom 模式下每把金鑰的請求上限
WindowSecondsOverrideCustom 模式下的時間視窗秒數

資料庫中保存的金鑰紀錄只會暴露短 prefix 供辨識。原始密鑰由伺服器端 HMAC secret 驗證,不應設計成之後還能再次顯示。

輪替金鑰

輪替會建立一把替代金鑰,並繼承舊金鑰的資料庫、工具、資料表、CORS 與速率限制範圍。

寬限期可設為 01440 分鐘:

  • 0 會立即撤銷舊金鑰;
  • 正值會在需要時把舊金鑰的到期時間縮短到寬限期限;
  • 替代金鑰會取得全新產生的明文密鑰。

複製金鑰

複製會建立一把新金鑰,沿用來源金鑰的執行階段權限範圍,但使用新的名稱與密鑰。當兩個用戶端需要相同權限、但不應共用同一份憑證時很適合使用。

複製後兩把金鑰的生命週期完全獨立,可以各自撤銷或輪替,不會讓來源金鑰一起失效。

撤銷金鑰

撤銷會把金鑰標記為停用,並在資料庫交易提交前先把撤銷標記(tombstone)寫入驗證快取路徑,避免剛撤銷的憑證因舊快取仍被接受。

由 bootstrap 設定管理的金鑰不能透過一般管理介面編輯、輪替或撤銷;它的生命週期由 bootstrap configuration 控制。

速率限制行為

金鑰可以繼承執行階段的預設速率限制政策、使用自訂覆寫值,或明確設為不限速。管理端清單會把金鑰模式與目前的安全政策合併後,顯示實際生效的速率限制。

多節點部署若需要全域協調限制,請使用分散式速率限制設定。

DML 與 Elicitation

開放 execute_dml_sql 後,用戶端相容性要求也會提高。MCP 用戶端必須支援資料修改核准流程所使用的 form Elicitation。

授權新的用戶端使用 DML 前,請先閱讀 MCP 用戶端連線