复古 护眼 海天 深邃 暗黑 默认

数据加密

数据加密 MCP 功能插件帮助用户为 ShardingSphere-Proxy 逻辑库规划、审查、执行和校验数据加密规则变更。 实际加密能力由 ShardingSphere-Proxy 及其加密算法插件提供。 本功能只生成和应用加密规则 DistSQL,不生成物理 DDL、派生列 DDL、索引建议或数据迁移任务。

前置条件

  • 当前版本只支持连接 ShardingSphere-Proxy 暴露的逻辑库。
  • runtimeDatabases 应指向 Proxy 逻辑库,而不是底层物理存储库。
  • 数据库直连时,本功能不适用;目标数据库通常不识别 ShardingSphere 加密规则变更语句,也不能暴露 Proxy 中可见的加密算法插件和规则状态。
  • 用户需要提供目标逻辑库、表和列名;规划阶段不会探测真实物理表结构。

通过自然语言使用

用户在集成 ShardingSphere-MCP 的 AI 应用中描述加密目标即可。

示例:

  • 检查 <logic-database>.orders.status 当前是否已有加密规则。
  • 列出当前 Proxy 可用的数据加密算法。
  • <logic-database>.orders.status 规划可逆加密,需要支持等值查询,先预览不要执行。
  • 使用 AES 算法继续刚才的计划,密钥通过受保护渠道提供。
  • 确认并执行刚才的加密规则计划,然后校验结果。

用户需要审查计划中的加密规则 DistSQL、算法参数、规则列名和副作用范围,再批准有副作用的执行。

提出加密需求

建议在自然语言中说明以下信息:

信息 说明 示例
逻辑库、表和列 指定要配置加密规则的 ShardingSphere-Proxy 逻辑对象。 “为 <logic-database>.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、回车或换行。