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

CSFLE 服务器端模式强制执行

本页内容

  • 示例
  • 了解更多

在客户端字段级加密(CSFLE)启用的客户端应用程序中,您可以使用模式验证 来让您的 MongoDB 实例强制加密特定字段。要指定哪些字段需要加密,请使用使用带有 自动加密规则关键词$jsonSchema 验证对象。服务器拒绝任何对那些指定字段不是 Binary (BinData) 子类型 6 对象的集合进行的写入操作。

要了解启用了 CSFLE 的客户端配置为使用自动加密时遇到服务器端模式的行为,请参阅 服务器端字段级加密执行。

要了解启用了 CSFLE 的客户端配置为使用显式加密时遇到服务器端模式的行为,请参阅 服务器端字段级加密执行。

考虑一个名为 hr 的数据库,其中有一个名为 employees 的集合。在 employees 集合中的文档具有以下形式

{
"name": "Jane Doe",
"age": 51
}

您希望对使用您的集合的客户端应用程序执行以下行为

  • 当加密 age 字段时,客户端必须遵循以下加密规则

    • 使用具有 _idUUID("e114f7ad-ad7a-4a68-81a7-ebcb9ea0953a") 的数据加密密钥。

    • 使用 随机 加密算法。

    • age 字段必须是整数。

  • 当加密 name 字段时,客户端必须遵循以下加密规则

    • 使用具有 _idUUID("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 加密模式。

返回

模式

本页内容