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 加密模式。

译者:韩鹏帅

原文:CSFLE Server-Side Schema Enforcement

Copyright © 上海锦木信息技术有限公司 all right reserved,powered by Gitbook文件修订时间: 2023-09-01 17:10:26

results matching ""

    No results matching ""