HKBN 字段加密后对象能力适配 PRD
版本:v0.1 创建日期:2026-05-13 需求来源:客户沟通 / 研发沟通 / 竞品调研 / 本地代码核对 优先级:P0 文档状态:草稿
一、需求概述
1.1 项目背景
背景结论: HKBN 已提出字段加密申请,并提供了 Account、Contact、Lead 等对象上的电话类字段范围。元数据团队正在推进字段加密执行和历史数据处理,但在沟通过程中发现,字段一旦启用加密后,部分 PaaS 对象基础能力仍可能引用这些字段,例如计算字段、验证规则、布局规则、筛选、排序、ES 同步、BI 分析等。因此本需求需要紧急补齐加密字段对对象能力的屏蔽和降级规则,保障 995 上线范围可控。
本需求不重新设计字段加密执行机制,也不把字段加密做成客户自助配置能力。重点是:当字段已经由元数据/后台标记为加密字段后,平台哪些对象能力必须屏蔽、哪些能力可以降级支持、哪些链路需要避免明文扩散。
| 需求编号 | 反馈客户 | 客户级别 | 反馈人 | 业务场景 |
|---|---|---|---|---|
| HKBN-字段加密 | HKBN | 重点客户 | 项目团队转述 | 对 CRM 中客户、联系人、线索的电话类字段进行字段级加密,降低 DB 层数据泄露风险 |
HKBN 本次申请的待加密字段范围:
| 对象 | 字段 |
|---|---|
| Contact | Office_Phone_1_MDM__c、Office_Phone_2_MDM__c、HomePhone_MDM__c、Mobile_1_MDM__c、Mobile_2_MDM__c、Fax_MDM__c、Phone、Mobile、Home Phone、Other Phone、Asst. Phone |
| Account | Phone |
| Lead | Phone、Mobile |
1.2 系统现状

当前字段加密能力不是客户可自助配置的字段属性,也不支持通过 APL 或 API 主动调用加密函数。更准确地说:只有被后台/元数据标记为加密的字段,才会在写入时由系统自动加密保存,读取时由系统自动解密返回。 普通字段不会默认加密,业务方也不需要、不能通过 APL/API 自行调用加密能力。
字段加密的执行逻辑属于既有能力和交付现状,本需求不重新设计字段加密执行链路:
| 环节 | 现状逻辑 | 说明 |
|---|---|---|
| 启用方式 | 由开发人员在数据库/元数据层处理和标记,不开放客户自助配置 | 995 一期仍按后台处理,不做成普通字段配置项 |
| 数据写入 | 对已标记为加密的字段,页面、API、APL 写入明文字段值后,后台自动加密保存 | 不提供 APL/API 主动加密函数 |
| 数据读取 | 对已标记为加密的字段,后台读取密文后自动解密,再按现有字段权限和掩码规则返回 | 调用方不需要感知密文字段 |
| 历史数据迁移 | 对待加密字段在 Table 上增加新字段,将历史数据分批加密刷入新字段 | HKBN 约 442 万历史数据,预计 1-2 天 |
| 正式切换 | 将增量变更数据重新加密刷入新字段,修改对象描述启用加密并指向新字段,删除旧字段 | 预计 30 分钟-1 小时;期间建议用户不要修改加密字段值 |
| ES 同步 | 现有 ES 同步服务未处理加密字段,需要改造 | 加密字段不得进入全文、分词、模糊搜索的明文索引 |
代码层已存在 mask_field_encrypt、__encrypt、读取解密、列表筛选与排序限制等基础逻辑。主要依据:
| 结论 | 本地依据 |
|---|---|
字段描述存在 mask_field_encrypt 扩展标记 |
fs-paas-appframework/fs-paas-app-metadata-util/src/main/java/com/facishare/paas/appframework/metadata/FieldDescribeExt.java |
| 保存/展示链路存在加密字段处理逻辑,会生成加密值并按掩码规则处理展示值 | fs-paas-appframework/fs-paas-app-metadata/src/main/java/com/facishare/paas/appframework/metadata/mask/MaskFieldLogicServiceImpl.java |
加密与解密服务通过 MaskFieldEncryptService 处理字段值 |
fs-paas-appframework/fs-paas-app-metadata/src/main/java/com/facishare/paas/appframework/metadata/mask/MaskFieldEncryptServiceImpl.java |
| 列表前端对加密字段已有筛选/排序降级处理 | crm/crm2/modules/components/objecttable/objecttable.js、crm/crm2/modules/action/field/components/md20/table.js |
当前缺口是:字段一旦被标记为加密字段,仍可能被对象基础能力引用,例如计算字段、统计字段、验证规则、布局规则、场景排序、筛选、ES 同步、BI 分析等。需要从产品层明确哪些能力必须屏蔽、哪些能力降级支持、哪些能力需要研发改造。
1.3 竞品现状
竞品结论:Salesforce 字段加密是产品化配置能力,但配置后不是“完全透明兼容”。 它把字段加密拆成三类管理动作:先生成/管理租户密钥,再配置加密策略和字段范围,最后由系统异步完成字段加密启用;同时通过系统权限控制谁能管理密钥和加密策略。
| 观察点 | 截图 | 说明 | 对本需求的启发 |
|---|---|---|---|
| 加密能力有独立设置入口 | ![]() |
Shield Platform 加密设置中集中管理租户密钥、数据库加密、文件附件加密和高级加密设置。页面提示已创建概率性租户密码,说明字段加密依赖租户级密钥材料。 |
字段加密不只是字段属性,还依赖租户级密钥、加密策略和后台执行链路。 |
| 密钥/策略管理受系统权限控制 | ![]() |
管理加密密钥是权限集中的系统权限,用于管理租户秘密。没有该权限时,密钥管理页会提示需要“管理加密密钥”权限。 |
后续若做产品化配置,需要把“谁能启用字段加密”和“谁能看字段值”区分开;前者应走管理员系统权限。 |
| 可限制加密策略设置访问 | ![]() |
高级加密设置中存在“限制加密策略设置的访问权限”,说明 Salesforce 可以要求管理员具备管理加密密钥权限后,才可执行加密策略任务。 |
字段加密配置入口需要独立授权,不宜默认开放给所有对象管理员。 |
| 标准字段可批量选择加密 | ![]() |
标准字段加密页按对象展示字段,例如客户对象下的客户名、开单地址、电话等字段;页面提示加密前需要理解“考虑和权衡”,并对部分对象字段提示需要访问权限。 | Salesforce 已将“标准字段是否加密”做成产品化字段选择;但启用前会提示兼容性和权限约束。 |
| 启用后存在异步处理状态 | ![]() |
字段勾选后出现“启用待处理”,页面提示管理员会在启用完成时收到邮件,刷新后查看变更。 | 字段加密启用不是即时完成,涉及后台任务、状态反馈和完成通知;HKBN 历史数据迁移也应保留异步切换窗口。 |
| 密钥管理页会直接拦截无权限用户 | ![]() |
进入密钥管理页时,如果当前用户没有管理加密密钥权限,只展示权限提示,不展示密钥材料。 |
敏感管理页面需要先做权限拦截,避免普通管理员接触密钥材料或加密策略。 |
| 竞品能力 | 产品化配置方式 | 能力限制 | 来源 |
|---|---|---|---|
| Shield Platform Encryption 标准字段加密 | 在 Setup 的 Encrypt Standard Fields 页面批量选择一个或多个标准对象上的标准字段进行加密 | 加密字段仍存在过滤、排序、公式、自动化、关系等限制;既有数据需要同步加密策略 | Apply Encryption to Standard Fields in Lightning Experience、Which Standard Fields Can I Encrypt? |
| Shield Platform Encryption 自定义字段加密 | 在 Object Manager 进入对象和字段详情,对支持的自定义字段逐个启用加密;支持 Email、Phone、Text 等类型 | 字段启用加密后不能修改字段类型;Phone、Email 等字段格式也受限制;Unique / External ID 等场景有额外约束 | Which Custom Fields Can I Encrypt? |
| 确定性加密 | 可用于部分需要保留等值匹配能力的字段 | 可支持部分等值过滤,但仍受字段类型、操作符、排序等限制 | Considerations for Using Deterministic Encryption |
| 公式 / 规则引用 | 官方对加密数据用于公式给出单独限制说明 | Salesforce 建议 Lightning Experience 场景不要在公式中引用加密字段;Classic 加密文本字段不能用于公式字段、工作流规则条件或公式 | Use Encrypted Data in Formulas、Classic Encryption for Custom Fields |
对本需求的启发:Salesforce 的长期方向是“字段级产品化配置 + 密钥/策略权限控制 + 启用前兼容性提示 + 启用后异步状态反馈 + 启用后能力限制”。但 HKBN 995 一期仍是开发人员在数据库/元数据层处理和标记,因此本期不做自助配置;优先补齐对象能力拦截规则,避免加密字段被公式、搜索、分析、自动化链路间接使用。
1.4 产品价值
本需求直接支撑 HKBN 对电话类敏感数据的 DB 层安全诉求,避免敏感字段以明文落库。同时通过统一限制规则,避免加密字段被公式、规则、检索、分析等能力间接使用后产生明文扩散或能力异常。
1.5 需求目标
- 明确加密字段对对象基础能力的影响边界,避免被计算字段、统计字段、验证规则、布局规则等公式类能力引用。
- 对字段筛选、场景字段排序、ES 同步、BI 分析等能力进行屏蔽或降级,保证 995 上线范围可控。
- 保证 HKBN 字段加密执行过程中,PaaS 周边能力不会因未适配而出现明文扩散、能力异常或客户预期不一致。
二、产品方案
2.1 方案原则
本期不做字段加密自助配置,仍由开发人员在数据库/元数据层启用和标记。产品方案只处理一个问题:字段被标记为加密后,所有依赖字段明文计算、检索、排序、聚合、分析或匹配的对象能力,都必须被识别并限制。
995 一期按“展示读写可用、等值筛选降级、其他高风险能力禁止”的口径落地。配置入口要做字段过滤,保存时要做二次校验,运行态要避免加密字段明文进入搜索索引、分析链路、日志和第三方同步。
2.2 对象能力影响矩阵
| 能力范围 | 一期策略 | 处理规则 |
|---|---|---|
| 页面 / API / APL 写入 | 支持 | 调用方写入明文字段值,后台对已标记字段自动加密保存;不提供主动加密函数 |
| 页面 / API 读取 | 支持 | 后台自动解密后返回,继续受字段权限、掩码规则控制;不暴露 __encrypt 等内部字段 |
| 字段筛选 | 降级支持 | 仅支持等于、不等于、为空、不为空;不支持包含、前缀、后缀、手机号后几位等部分匹配 |
| 全文搜索 / 对象内模糊搜索 / ES 索引 | 不支持 | 加密字段不进入全文、分词、模糊搜索索引;如需完整值精确匹配,需研发确认密文等值或安全哈希方案 |
| 场景排序 / 列表排序 / 相关列表排序 | 不支持 | 字段选择器中过滤加密字段;已有配置需在运行态降级或提示不支持 |
| 计算字段 / 统计字段 | 不支持引用 | 来源字段、统计字段、统计条件中均不能选择加密字段 |
| 验证规则 / 默认值公式 | 不支持引用 | 公式字段选择器中过滤加密字段,保存时解析公式并二次校验 |
| 布局规则 | 不支持引用 | 显隐、必填、只读、默认值联动等条件不能选择加密字段 |
| 自动化 / 流程 / 审批条件 | 不支持引用 | 工作流、审批流、触发器配置、业务规则条件不能引用加密字段 |
| BI / 报表 / 汇总 / 分组 | 不支持 | BI 侧不可见,不作为维度、指标、筛选、分组、排序或明细展示字段 |
| 查重 / 合并 / 导入匹配 / 外部 ID | 不支持 | 不能作为重复判断、合并匹配、导入更新匹配、唯一字段、外部 ID 或主数据匹配字段 |
| 修改记录 / 审计日志 / 导出 / 同步 | 待确认后限制 | 不得记录或扩散加密字段明文;导出是否允许明文值需产品、安全、交付共同确认 |
2.3 配置与运行态拦截
| 拦截时机 | 处理要求 |
|---|---|
| 配置期 | 涉及字段选择器的能力统一过滤加密字段;包括公式、规则、排序、BI、查重、导入匹配、自动化条件等入口 |
| 保存期 | 对公式表达式、规则条件、排序配置等做二次校验,避免通过历史配置、复制配置、接口保存绕过字段过滤 |
| 开启前 | 若待加密字段已被现有配置引用,迁移程序或元数据服务需输出影响项清单,并阻断直接开启 |
| 运行态 | 对历史遗留配置做兜底拦截或降级提示;ES、日志、导出、第三方同步链路不得输出加密字段明文 |
2.4 ES 同步与搜索口径
ES 同步服务需要在 995 中适配加密字段。默认产品口径为:加密字段不进入全文、分词、模糊搜索索引,不支持部分搜索和后几位搜索。若业务必须支持完整值等值匹配,需要研发确认采用密文等值、哈希索引或其他安全方案;未确认前,对外口径只承诺对象查询链路中的 equal 类匹配。
2.5 上线与申请流程
本节仅说明字段加密能力的交付和上线节奏,不作为本次产品方案的核心设计范围。
| 项 | 规则 |
|---|---|
| 服务发布 | 程序改造预计跟随 995 发版,2026-05-23 24:00 全网发布 |
| 申请时间 | 995 全网后接受申请 |
| 申请信息 | 租户、环境、对象 API Name、对象名称、字段 API Name、字段名称 |
| 环境顺序 | Dev/UAT 验证通过后,再申请正式环境 |
| 租户维度 | 每个租户分开申请 |
| 正式切换窗口 | 建议选择客户低峰期;切换期间建议用户不要修改加密字段值 |
2.6 客户沟通口径
字段加密用于保护电话等敏感字段在数据库及底层存储中的安全。一期开启后,字段仍可正常录入、查看和通过完整值做精确匹配,但不再支持模糊搜索、全文搜索、部分搜索、排序、BI 分析、统计汇总、公式引用、验证规则引用和布局规则引用。
该限制属于字段加密类能力的通用约束。Salesforce 等国际产品也对加密字段的过滤、排序、公式、自动化能力做了限制。
三、规范检查项
3.1 业务文案多语言 Key
无。本期不新增面向终端用户的独立业务模块文案。若研发在配置拦截处新增错误提示,需要按已有国际化机制补充 Key。
3.2 需求埋点
无。本期不新增产品埋点。
3.3 沙盒/更改集能力
| 模块 | 功能点 | 是否支持沙盒 | 是否支持更改集 | 说明 |
|---|---|---|---|---|
| 字段加密后台标记 | 指定字段启用加密 | 待确认 | 不支持 | 一期不是客户自助配置,不作为更改集配置项流转 |
3.4 PaaS 国际化兼容检查
| ID | 多语接入事项 | 是否需要 | 注意事项 |
|---|---|---|---|
| 1 | 接入翻译工作台 | 否 | 不涉及业务数据翻译 |
| 2 | CRM 提醒 | 否 | 不新增提醒内容 |
| 3 | 企信消息提醒 | 否 | 不新增消息内容 |
| 4 | 修改记录 | 待确认 | 若字段变更记录展示加密字段值,需要遵守解密/掩码规则 |
| 5 | 审计日志 | 待确认 | 审计日志不得记录加密字段明文 |
| 6 | 支持快捷翻译能力 | 否 | 不涉及 |
| 7 | 支持数据多语能力 | 否 | 不涉及 |
| 8 | 预置配置多语 | 否 | 不涉及 |
| 9 | 预置示例数据多语 | 否 | 不涉及 |
3.5 新对象/新字段 BI 分析申请
不涉及新增对象/字段 BI 分析申请。加密字段在 BI 侧默认不可见,不支持分析。
3.6 操作日志说明
本期不新增用户可见操作日志。后台执行历史数据迁移、正式切换、对象描述变更时,应记录租户、对象、字段、执行人、执行时间、执行结果和失败原因,但不得记录加密字段明文。
3.7 需求风险点检测
| ID | 风险分组 | 风险类型 | 有无该风险 | 涉及风险的功能点 | 影响范围 | 响应策略 |
|---|---|---|---|---|---|---|
| 1 | 对现逻辑有影响 | 功能有减少 | 有 | 筛选、搜索、排序、BI、公式引用 | HKBN 指定字段及后续申请字段 | 在客户沟通和审批中明确限制,并在配置侧拦截 |
| 2 | 对现逻辑有影响 | 功能逻辑调整 | 有 | 写入加密、读取解密、ES 同步 | 加密字段全链路 | Dev/UAT 先验证,再申请正式环境 |
| 3 | 新能力风险 | 性能压力 | 有 | 读写加解密、历史数据迁移 | 442 万历史数据及后续增量数据 | 分批迁移,正式切换选择低峰期 |
| 4 | 新能力风险 | 逻辑不完善 | 有 | 对象基础能力未全量拦截 | 计算、规则、自动化、布局、导入等 | 995 先按禁止策略处理,后续按白名单放开 |
3.8 上线策略
3.8.1 收费标准
待确认。
3.8.2 上线节奏
| 项 | 说明 |
|---|---|
| 服务发布时间 | 跟随 995 发版,预计 2026-05-23 24:00 全网发布 |
| 申请节奏 | 995 全网后接受申请 |
| 灰度策略 | 先 Dev/UAT,后正式环境;每个租户单独申请 |
| 客户切换窗口 | 建议低峰期执行,切换期间建议用户不要修改加密字段值 |
3.8.3 适用版本
待确认。当前按专项客户申请处理,不作为全版本自助能力开放。
四、待确认事项
| ID | 待确认事项 | 影响范围 | 负责人 | 结论 |
|---|---|---|---|---|
| 1 | 995 是否必须覆盖所有公式类能力的保存期二次校验,还是先覆盖计算字段、统计字段、验证规则、布局规则四类高频入口 | 元数据配置拦截范围 | 元数据 / PaaS 产品 | 待确认 |
| 2 | ES 是否需要支持完整值 equal 匹配,若支持采用密文匹配还是安全哈希索引 | ES 同步与搜索口径 | ES 同步服务 / 元数据 | 待确认 |
| 3 | 修改记录、审计日志、导出、打印、第三方同步是否都已确认不会落加密字段明文 | 数据扩散风险 | 各链路负责人 | 待确认 |
| 4 | 现有配置引用待加密字段时,是否由迁移程序输出影响清单并阻断开启 | 开启前检查 | 迁移程序 / 元数据 | 待确认 |
| 5 | 标准字段与自定义字段的加密标记、迁移和回滚策略是否完全一致 | HKBN 字段范围 | 元数据 / 迁移程序 | 待确认 |
| 6 | 字段加密后是否允许导出明文值,还是按权限导出脱敏值 | 导出能力 | 产品 / 安全 / 交付 | 待确认 |
五、原始沟通依据
以下内容为项目沟通原文承载,不做改写。
能力现状:只有被后台/元数据标记为加密的字段,才会在写入时由系统自动加密保存,读取时由系统自动解密返回。普通字段不会默认加密,业务方也不需要、不能通过 APL/API 自行调用加密能力。
改造项 迁移程序改造@钱凌锋irony :因为有442万的历史数据需要迁移处理,需要改造迁移程序;上线的时候分两步: A、刷442万历史数据:需要先对待加密的字段在Table上增加新的字段,把历史数据分批加密刷进去;预计耗时1-2天; B、切换:把增量变更的数据重新加密刷到新字段上,然后修改对象描述启用加密并指向新字段,然后把旧字段删除;预计耗时30分钟-1小时之内;在这个过程中用户最好不要修改加密字段的值 ES同步服务改造@李晨Jason :现在的ES同步服务没有处理加密字段,需要改造处理
影响 字段开启加密后,只支持equal匹配,不支持模糊搜索、部分搜索、全文搜索等,不支持排序 字段开启加密后,在BI侧不可见,不支持任何分析
上线时间 服务发布:程序改造的量不小,预计跟随995发版(5月23日24:00全网发布); 接受申请:995全网后接受申请,请在工作圈中提审批,写清楚对象和字段的api_name和名字;先在Dev和UAT环境开开启验证后,然后再提正式环境的申请;每个租户分开申请;
新提出的问题:从基础对象的角度,加密字段对基础对象能力的适配兼容还需要做完整改造。 基于加密字段的计算字段先不做加密有一个点请确认一下:计算字段中是否可以引用加密字段?SalesForce 中好像是不可以的,也就是说:开启了字段加密的字段,不能被作为计算字段的来源字段;我们是否也要类似方式处理?
六、附录:竞品官方资料
| 资料 | 链接 |
|---|---|
| Salesforce 标准字段加密配置 | https://help.salesforce.com/s/articleView?id=xcloud.security_pe_apply_fle_in_lightning.htm&language=en_US&type=5 |
| Salesforce 可加密的标准字段范围 | https://help.salesforce.com/s/articleView?id=xcloud.security_pe_standard_fields.htm&language=en_US&type=5 |
| Salesforce 可加密的自定义字段范围 | https://help.salesforce.com/s/articleView?id=xcloud.security_pe_custom_fields.htm&language=en_US&type=5 |
| Salesforce Shield Platform Encryption 通用限制 | https://help.salesforce.com/s/articleView?id=sf.security_pe_considerations_general.htm&type=5 |
| Salesforce 确定性加密限制 | https://help.salesforce.com/s/articleView?id=xcloud.security_pe_deterministic_considerations.htm&language=en_US&type=5 |
| Salesforce 加密数据用于公式的限制 | https://help.salesforce.com/s/articleView?id=xcloud.security_pe_formulas.htm&language=en_US&type=5 |
| Salesforce Classic Encryption 自定义字段限制 | https://help.salesforce.com/s/articleView?id=platform.fields_about_encrypted_fields.htm&language=en_US&type=5 |





