hs-sql-agent 的设计原则是:AI 模型本身不能成为安全边界。身份验证、数据库范围、表访问策略、工具限制、SQL 验证以及数据修改审批都由服务器强制执行。
MCP 访问边界
MCP 客户端使用已签发的密钥进行身份验证。运行时策略可以把密钥绑定到指定数据库,并限制它可以访问的表和工具。
对于只读客户端,应直接限制允许工具列表,而不是依赖客户端“自觉”不调用 DML。
SQL 执行边界
AI 生成的 SQL 会先经过解析和验证,然后才会编译为目标数据库对应的 SQL。不支持的语法或无法确认能够在目标数据库安全保持相同语义的功能,会按照“失败即拒绝”原则被拒绝,而不是静默降级。
DML 使用独立的审批协议。人工批准会绑定到已经验证的数据修改计划;对于修改既有行的操作,真正执行前还会在提交事务中重新验证目标行。
管理员身份验证
服务器支持本地身份验证,也可以选择配置 OIDC/SSO 和 TOTP MFA。OIDC 设置包括 Authority、客户端凭据、声明映射、作用域、角色映射、已验证邮箱要求以及自动创建用户等选项。
如果受保护的登录状态或 MFA 状态需要在应用重启后继续有效,请把配置的数据保护密钥路径放在持久化存储中。
运维保护
与安全相关的主要运行时设置包括:
- 登录失败锁定阈值和锁定时长
- 全局及请求级速率限制
- 分布式环境中的安全策略同步
- 带签名的告警和 SIEM Webhook
- 审计数据保留周期以及归档/备用路径
- 分布式控制异常时的“失败即拒绝”协调方式
报告安全漏洞
请勿在公开 Issue 中披露安全漏洞。应使用仓库 GitHub Security Advisory 中的 Report a Vulnerability 流程,让问题通过负责任披露方式完成调查和修复。