CSFLE 服务器端模式强制执行
在客户端字段级加密(CSFLE)启用的客户端应用程序中,您可以使用模式验证 来让您的 MongoDB 实例强制加密特定字段。要指定哪些字段需要加密,请使用使用带有 自动加密规则关键词 的 $jsonSchema
验证对象。服务器拒绝任何对那些指定字段不是 Binary (BinData)
子类型 6 对象的集合进行的写入操作。
要了解启用了 CSFLE 的客户端配置为使用自动加密时遇到服务器端模式的行为,请参阅 服务器端字段级加密执行。
要了解启用了 CSFLE 的客户端配置为使用显式加密时遇到服务器端模式的行为,请参阅 服务器端字段级加密执行。
示例
考虑一个名为 hr
的数据库,其中有一个名为 employees
的集合。在 employees
集合中的文档具有以下形式
{ "name": "Jane Doe", "age": 51 }
您希望对使用您的集合的客户端应用程序执行以下行为
当加密
age
字段时,客户端必须遵循以下加密规则使用具有
_id
为UUID("e114f7ad-ad7a-4a68-81a7-ebcb9ea0953a")
的数据加密密钥。使用 随机 加密算法。
age
字段必须是整数。
当加密
name
字段时,客户端必须遵循以下加密规则使用具有
_id
为UUID("33408ee9-e499-43f9-89fe-5f8533870617")
的数据加密密钥。使用 确定 性加密算法。
“
name
” 字段必须是字符串。
以下 mongosh
代码使用 collMod
命令更新 hr.employees
集合,添加一个 validator
以强制执行前面的行为
db.getSiblingDB("hr").runCommand({ collMod: "employees", validator: { $jsonSchema: { bsonType: "object", properties: { age: { encrypt: { keyId: [UUID("e114f7ad-ad7a-4a68-81a7-ebcb9ea0953a")], algorithm: "AEAD_AES_256_CBC_HMAC_SHA_512-Random", bsonType: "int", }, }, name: { encrypt: { keyId: [UUID("33408ee9-e499-43f9-89fe-5f8533870617")], algorithm: "AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic", bsonType: "string", }, }, }, }, }, });
了解更多
有关 CSFLE 支持的加密算法的更多信息,请参阅 字段和加密类型。
有关加密模式和加密规则的更多信息,请参阅 CSFLE 加密模式。