文档菜单
文档首页
/
MongoDB 手册
/ / / /

CSFLE 限制

在本页

  • 概述
  • 读写操作支持
  • 数组
  • 视图
  • 排序
  • 唯一索引
  • 分片键
  • 读写查询支持

在启用CSFLE之前,请考虑这些限制和约束。某些操作不受支持,其他操作的行为可能不同。

有关兼容性限制,请参阅兼容性.

mongod仅存储加密的BinData,并将任何指定加密字段的聚合表达式或查询运算符应用于BinData值。虽然表达式或运算符可能支持BinData字段,但与对解密值执行相同表达式或运算符相比,结果值可能不正确或不符合预期。如果表达式或运算符不支持BinData值,则mongod会抛出错误。

例如,考虑一个确定性加密的整数 Salary。一个查询会筛选出 Salary 大于 100000 的文档。应用程序在发出查询之前会明确(手动)使用确定性加密加密查询值。在 mongod 中,将 100000加密 BinData 值与每个文档中存储的 加密 BinData 值进行比较。虽然操作成功返回,但 BinData 值的比较可能与解密整数值的比较返回不同的结果。

自动客户端字段级加密拒绝了对加密字段执行将返回不正确或意外结果的读取或写入操作。有关完整文档,请参阅自动加密支持的操作。

执行显式(手动)加密的应用程序可以参考链接页面,以获取对加密字段执行读取/写入操作的指导。

CSFLE 不支持对文档数组中的字段进行自动加密。

如果对包含使用客户端字段级加密加密的值的集合上的视图执行查询,则可能会返回意外或不正确的结果,如果底层视图聚合管道 查询引用了加密字段。如果要在包含使用客户端字段级加密加密的值的集合上创建视图,请避免在加密字段上操作,以降低意外或不正确结果的风险。

虽然4.2+兼容驱动程序配置了自动客户端字段级加密,并且有自动加密支持的操作,但对于不受支持的读取和写入操作,底层支持库无法检查视图目录以识别给定的集合是否为视图。因此,应用程序不能依赖自动客户端字段级加密验证来防止对具有加密字段的集合上的视图执行不受支持的查询。

对于使用显式(手动)加密查询包含加密值的集合上的视图的应用程序,请考虑使用在针对加密字段发出时具有已知 正常行为 的仅查询运算符来构建查询。

客户端字段级加密不尊重用户指定的排序或集合默认 排序。字段级加密会隐藏字段值并阻止正常的排序行为。对加密字段的排序敏感查询可能会返回意外或不正确的结果。

虽然为自动客户端字段级加密配置的4.2+兼容驱动程序支持自动加密的 支持操作,但对于不支持的读取和写入操作,底层支持库无法检查集合目录以确定默认排序。因此,应用程序不能依赖客户端字段级加密验证来防止对具有默认排序的加密字段进行查询。

唯一索引 不能 保证唯一性,如果索引键指定了任何 随机加密 字段。

使用随机算法加密的字段 总是 产生给定特定输入的不同加密值。服务器将每个加密值视为唯一,即使解密值本身不是唯一的。因此,集合可以包含多个具有索引强制唯一约束的字段具有重复解密值的文档。

虽然为自动客户端字段级加密配置的4.2+兼容驱动程序支持自动加密的 支持操作 对于不支持的读取和写入操作,但底层支持库无法检查索引目录以确定给定的字段是否为唯一。因此,应用程序不能依赖自动客户端字段级加密验证来防止在随机加密字段上违反唯一约束。

在加密字段上指定分片键或在现有分片键的字段上加密可能会导致意外的或不正确的分片行为。

尽管4.2+兼容的驱动程序已配置为支持自动客户端字段级加密,但对于不支持的读写操作,底层支持库无法内省分片目录元数据以识别分片键字段。因此,应用程序不能依赖自动字段级加密验证来防止分片键字段的加密。

自动客户端字段级加密支持一部分命令、查询操作符、更新操作符、聚合阶段和聚合表达式。有关完整文档,请参阅自动加密支持的操作。

返回

可查询加密限制