使用确定性加密的注意事项
这些注意事项应用于使用 Shield 平台加密的确定性加密方案加密的数据。根据数据是否使用区分大小写或不区分大小写的的确定性加密方案加密,一些注意事项声明略有不同。
所需的 Edition
| 适用于 Salesforce Classic(并非在所有组织中可用)和 Lightning Experience。 |
| 适用于:具有 Salesforce Shield 或 Shield Platform Encryption 许可证的 Enterprise、Performance 和 Unlimited Edition。 |
| 在 Developer Edition 中免费提供。 |
识别可筛选字段的 API 选项
使用确定性加密方案加密的字段可以筛选。您可以使用 isFilterable() 方法确定特定加密字段的加密方案。如果字段可筛选,方法将返回真。
但您无法通过 API 明确检测或设置确定性加密方案。
可用字段和其他数据
确定性加密对自定义 URL、电子邮件、电话、文本和文本区域字段类型可用。它不适用于其他类型的数据,包括:
- 自定义日期、日期/时间、长文本区域、富文本区域或描述字段类型
- Chatter
- 文件和附件
区分大小写
在您使用区分大小写的确定性加密时,大小写很重要。在报表、列表视图和对加密字段的 SOQL 查询中,结果区分大小写。因此,针对联系人对象的 SOQL 查询(其中 LastName = ‘Jones’)仅返回 Jones,而不是 jones 或 JONES。同样,当区分大小写的确定性方案测试唯一性时,每个版本的“Jones”都是唯一的。
聊天
话语建议对象上的话语字段仅支持不区分大小写的确定性加密。虽然 UI 显示区分大小写的确定性加密和区分大小写的概率性加密,但这些方案目前不可用。
对话条目对象中的操作者名称字段支持区分大小写的确定性加密,但不支持区分大小写的确定性加密。
复合字段
即使使用确定性加密,当使用区分大小写的确定性加密对数据进行加密时,某些类型的搜索也不起作用。复合名称等连接值与单独值不同。例如,复合名称“William Jones”的密文与“William”和“Jones”的密文连接不同。
因此,如果在“联系人”对象中加密了“名字”和“姓氏”字段,则此查询不起作用。
Select Id from Contact Where Name = 'William Jones'但此查询的确有效。
Select Id from Contact Where FirstName = 'William’ And LastName ='Jones'
区分大小写和不区分大小写的确定性加密方案支持复合字段,但只支持单个列查询。
将客户和联系人记录转换为个人客户
在将客户和联系人记录转换为个人客户时,同步数据。同步会重置允许区分大小写的编制索引。
无法使用合并客户工具搜索
当客户名称或联系人名称字段使用概率性或确定性加密进行加密时,搜索要合并的重复客户或联系人不会返回任何结果。
自定义字段分配
为了支持不区分大小写的查询,Salesforce 将您的数据的小写重复项存储为数据库中的自定义字段。这些重复项是不区分大小写的查询所必需的,但它们会计入您的自定义字段总数。例如,如果您的组织中拥有 200 个自定义字段,并且您选择使用不区分大小写的确定性加密来加密其中一个,则您的自定义字段总数为 201。
外部 ID
不区分大小写的确定性加密支持文本和电子邮件外部 ID 自定义字段,但不支持其他外部 ID 自定义字段。创建或编辑这些字段时,请使用以下字段设置组合之一。
| 外部 ID 字段类型 | 唯一属性 | 加密 |
|---|---|---|
| 文本 | 无 | 使用不区分大小写的确定性加密。 |
| 文本 | 唯一且区分大小写 | 使用区分大小写的确定性加密。 |
| 文本 | 唯一且不区分大小写 | 使用不区分大小写的确定性加密。 |
| 电子邮件 | 无 | 使用不区分大小写的确定性加密。 |
| 电子邮件 | 唯一 | 使用区分大小写的确定性加密。 |
您不能同时保存对唯一 - 区分大小写和加密选项的更改。更改一个设置,保存它,然后更改下一个设置。
筛选运算符
在报表和列表视图中,区分大小写的确定性加密支持运算符“equals”和“not equal to”。“contains”或“starts with”等其他运算符不会返回精确匹配,因此也不支持。依赖于不受支持的操作符的功能,例如“细化依据”筛选器,也不受支持。
不区分大小写的确定性加密支持列表视图和报表。但是,用户界面显示所有运算符,包括加密数据不支持的运算符。要查看 Salesforce Classic 中可用的受支持运算符列表,请参阅在公式中使用加密数据。
按字符串筛选记录
您可以使用字符串搜索记录。但字符串中的逗号相当于 OR 语句。如果字符串包含逗号,使用引号包含字符串。例如,搜索“Universal Containers, Inc, Berlin”会返回包含完整字符串(含逗号)的记录。搜索 Universal Containers, Inc, Berlin 会返回包含“Universal Containers”或“Inc”或“Berlin”的记录。
公式
使用概率加密方案加密的字段无法在 SOQL WHERE 查询中引用。但是,您可以使用 SOQL WHERE 查询,以及使用确定性加密方案加密的非公式字段。名称是非公式字段的示例。
索引
当您的加密方案包括加密索引中使用的字段时,请对这些字段使用确定性加密。
如果您选择加密作为索引一部分的字段或具有唯一性的字段,则会产生重大的影响。请仔细阅读本节,以便您了解问题。
支持区分大小写的和不区分大小写的确定性加密。
- 区分大小写的确定性加密在标准和自定义字段中支持单列索引、单列区分大小写的唯一索引、两列索引和自定义索引。
- 不区分大小写的确定性加密对这些标准字段的标准索引提供了有限的支持。
- 联系人 - 电子邮件
- 电子邮件消息—关系
- 潜在客户 - 电子邮件
- 名称
在计划加密索引字段之前,请注意这些性能注意事项。
- 查询性能差:对使用不区分大小写的确定性加密加密的字段进行查询在大表中表现不佳。为了获得最佳查询性能,请使用自定义索引而不是标准索引。要设置自定义索引,请联系 Salesforce 客户支持。
- 查找字段筛选:引用名称字段的查找字段也依赖于索引。要在列表视图和报表中筛选名称字段,请根据标准名称字段而不是查找字段进行筛选。
- 漫长的启用过程:当您对具有大量记录的字段应用确定性加密时,预计启用过程需要更长时间。启用过程也会重建字段索引。
如果您选择加密索引字段,请使用这些最佳实践。
- 确保一致的加密:当对索引字段或具有唯一性的字段使用确定性加密时,请确保所有值都使用相同的确定性密钥加密。这确保了可靠地识别记录之间的重复项。
- 执行加密同步:我们建议在进行任何可能影响索引唯一性的更改后尽快执行加密同步,例如更改加密方案或轮换确定性加密租户密码。
- 计划停机时间:在非高峰时段计划这些更改,以最大限度地减少中断。加密同步会批量运行,并可能需要不同的时间,这取决于实体的结构、记录量和所涉及的字段。与支持团队合作,计划必要的停机时间。
密钥更迭和筛选器可用性
添加、删除或更改确定性加密方案会重建索引。用户对加密字段的活动会导致索引中的数据重复,这会干扰同步操作。在更迭确定性密钥材料或将字段的加密方案更改为区分大小写的确定性加密或不区分大小写的确定性加密后,请尽快将数据同步到活动密钥。同步会将活动密钥材料应用于现有和新数据。如果不同步数据,对具有唯一属性的字段进行筛选和查询不会返回准确的结果。
您可以在“设置”的“加密统计和数据同步”页面上自行同步标准和自定义字段中的数据。要同步所有其他数据或大量数据,请联系 Salesforce 客户支持。有关数据同步的更多信息,请参阅与后台加密服务同步数据加密。
Next Best Action 推荐
当您使用确定性加密时,您只能在加载条件下使用等于或不等于运算符的加密字段。
从字段中删除确定性加密
如果您从使用确定性加密加密的字段中删除加密,Shield Platform Encryption 需要一些时间来解密整个组织中的该字段。贵组织的大小决定了此过程需要多长时间,因此该字段在更新完成之前不会有未加密字段的筛选和排序特征。
SOQL GROUP BY 语句
根据 SOQL/SOSL 参考页面比较运算符中的规则汇编 where 子句
确定性加密不支持 GROUP BY 子句。如果您使用确定性字段指定 GROUP BY,分组将不准确或不一致。
SOQL LIKE 和 STARTS WITH 语句
确定性加密仅支持区分大小写的完全匹配。不支持返回部分匹配项的比较运算符。例如,不支持 LIKE 和 STARTS WITH 语句。
SOQL ORDER BY 语句
由于确定性加密不会在数据库中维持加密数据的排序顺序,因此不支持 ORDER BY。

