数据加密
数据加密 MCP 功能插件帮助用户为 ShardingSphere-Proxy 逻辑库规划、审查、执行和校验数据加密规则变更。 实际加密能力由 ShardingSphere-Proxy 及其加密算法插件提供。 本功能只生成和应用加密规则 DistSQL,不生成物理 DDL、派生列 DDL、索引建议或数据迁移任务。
前置条件
- 当前版本只支持连接 ShardingSphere-Proxy 暴露的逻辑库。
runtimeDatabases应指向 Proxy 逻辑库,而不是底层物理存储库。- 数据库直连时,本功能不适用;目标数据库通常不识别 ShardingSphere 加密规则变更语句,也不能暴露 Proxy 中可见的加密算法插件和规则状态。
- 用户需要提供目标逻辑库、表和列名;规划阶段不会探测真实物理表结构。
通过自然语言使用
用户在集成 ShardingSphere-MCP 的 AI 应用中描述加密目标即可。
示例:
- 检查
logic_db.orders.status当前是否已有加密规则。 - 列出当前 Proxy 可用的数据加密算法。
- 为
logic_db.orders.status规划可逆加密,需要支持等值查询,先预览不要执行。 - 使用 AES 算法继续刚才的计划,密钥通过受保护渠道提供。
- 确认并执行刚才的加密规则计划,然后校验结果。
用户需要审查计划中的加密规则 DistSQL、算法参数、规则列名和副作用范围,再批准有副作用的执行。
提出加密需求
建议在自然语言中说明以下信息:
| 信息 | 说明 | 示例 |
|---|---|---|
| 逻辑库、表和列 | 指定要配置加密规则的 ShardingSphere-Proxy 逻辑对象。 | “为 logic_db.orders.status 配置加密。” |
| 模式或命名空间 | 多模式逻辑库建议说明。 | “模式是 public。” |
| 操作类型 | 创建、修改或删除加密规则。 | “新增加密规则”或“删除这个列的加密规则”。 |
| 加密目标 | 说明是否需要可逆加密、等值查询或模糊查询。 | “需要可逆加密,并支持等值查询。” |
| 算法偏好 | 可以指定算法,也可以要求 MCP 根据 Proxy 可用算法推荐。 | “列出当前 Proxy 可用的数据加密算法。”或“优先使用 AES。” |
| 算法参数 | 例如密钥等敏感参数,应通过受保护渠道提供。 | “密钥通过受保护渠道提供。” |
| 规则列名 | 如果需要密文列、辅助查询列或模糊查询列,应明确给出规则中使用的列名。 | “密文列名是 status_cipher。” |
创建、修改和删除规则
| 操作 | 自然语言示例 | 需要审查的内容 |
|---|---|---|
| 创建 | “为 orders.status 规划可逆加密,需要支持等值查询,先预览不要执行。” |
新增加密规则、算法、参数和规则列名。 |
| 修改 | “把刚才的加密计划改成 AES 算法,并继续预览。” | 修改后的加密规则,以及同表其他加密列是否保留。 |
| 删除 | “删除 orders.status 的加密规则,先预览影响范围。” |
目标列规则是否删除,以及同表其他加密列是否保留。 |
审查加密计划
计划生成后,应重点审查:
- 待执行语句是否符合创建、修改或删除加密规则的预期。
- 规则 DistSQL 中的逻辑列、密文列、辅助查询列或模糊查询列名是否符合预期。
- 密钥、凭证等敏感参数是否只以占位符或受保护方式传递。
- 是否会影响查询能力、运行时规则或已有业务 SQL。
敏感参数处理
加密算法可能需要密钥、盐值或其他敏感参数。 用户可以通过敏感值引用对象提供这些值,并在执行前确认参数来源和使用范围。
示例:
{
"primary_algorithm_properties": {
"aes-key-value": {
"secret_ref": "placeholder://secret-value-1"
}
}
}ShardingSphere-MCP 面向模型返回计划、workflow resource、预览、执行、校验、恢复和错误信息时,会对已识别的敏感参数做掩码处理。
内置算法和已在算法属性模板中标记为敏感的自定义算法参数,可以被稳定识别并掩码。
占位符对象中的 secret_ref 只表示需要人工替换的敏感值槽位;规划、预览、执行结果和校验输出不会回显 secret_ref 或真实敏感值。
未声明的自定义参数不应以明文写入普通对话、日志或工单描述。
如果规则变更仍包含敏感值占位符,自动执行会在产生副作用前返回 secret_reference_manual_execution_required;执行人员应在 MCP 和 AI 应用之外替换真实值后手工执行。
审查规则列名
加密规则可能引用密文列、辅助查询列或模糊查询列。 这些列名只是规则 DistSQL 的一部分,ShardingSphere-MCP 不会为它们生成物理 DDL,也不会检查真实物理表是否已存在对应列。
*_cipher常用于密文列名。- 如果需要等值查询,可以在规则中配置辅助查询列和辅助查询算法。
- 如果需要模糊查询,可以在规则中配置模糊查询列和模糊查询算法。
- 如果真实物理表需要新增列、索引或历史数据处理,应由用户在 ShardingSphere-MCP 之外完成。
预览、执行和校验
建议先预览,确认待执行规则 DistSQL 和副作用范围后再执行。
| 阶段 | 自然语言示例 | 用户关注点 |
|---|---|---|
| 预览 | “先预览刚才的加密规则计划,不要执行。” | 查看将要执行的规则 DistSQL、算法和参数。 |
| 执行 | “确认执行刚才的计划。” | 确认有副作用的变更已经过审查。 |
| 人工执行 | “导出人工执行包,不要自动执行。” | 由运维人员在受控环境审查和执行。 |
| 校验 | “校验刚才的加密规则是否生效。” | 查看规则状态和 workflow 执行结果。 |
规则变更的通用审查流程见规则变更流程。
限制
支持范围
- 仅支持 ShardingSphere-Proxy 逻辑库。
- 数据库直连时,本功能不适用。
能力边界
- ShardingSphere-MCP 不提供加密算法本身,也不替代用户判断加密策略是否满足业务安全要求。
- 规划结果是可审查的变更计划;是否执行仍需要用户确认。
- 规划和执行仅限加密规则 DistSQL,不生成或执行物理 DDL、索引、数据迁移、回填或洗数任务。
- 删除加密规则只移除规则本身,不会恢复历史明文数据;不再需要的物理列或索引仍需人工清理。
元数据边界
- ShardingSphere-MCP 根据 Proxy 可见的规则和算法状态规划规则 DistSQL;规划阶段不会读取或推断真实物理表结构。
- 如果规则引用的物理列尚不存在,用户应在 ShardingSphere-MCP 之外完成 DDL 和数据处理。
对象名处理边界
- ShardingSphere-MCP 会处理带引号、大小写敏感、关键字、空格和 Unicode 对象名。为保证生成的 SQL 或规则变更语句可审查,对象名内容不能包含反引号、NUL、回车或换行。