CSFLE 服务器端模式实施
在启用了客户端字段级加密 (CSFLE) 的客户端应用程序中,您可以使用模式验证 让您的 MongoDB 实例强制对特定字段进行加密。要指定哪些字段需要加密,请将 自动加密规则关键字 与$jsonSchema
验证对象一起使用。如果指定的字段不是Binary (BinData)
子类型 6 对象,服务器将拒绝对该集合的任何写操作。
要了解配置为使用自动加密的启用 CSFLE 的客户端在遇到服务器端模式时的行为方式,请参阅服务器端字段级加密实施。
要了解启用 CSFLE 的客户端配置为使用显式加密时遇到服务器端模式时的行为方式,请参阅服务器端字段级加密实施。
例子
考虑一个hr
带有集合的数据库employees
。集合中的文档employees
具有以下形式:
{
"name": "Jane Doe",
"age": 51
}
您希望使用您的集合对客户端应用程序强制执行以下行为:
- 加密
age
字段时,客户端必须遵循以下加密规则:_id
使用带有of 的数据加密密钥UUID("e114f7ad-ad7a-4a68-81a7-ebcb9ea0953a")
。- 使用 随机 加密算法。
- 该
age
字段必须是整数。
- 加密
name
字段时,客户端必须遵循以下加密规则:_id
使用带有of 的数据加密密钥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 加密模式。
译者:韩鹏帅