Docs 菜单
Docs 主页
/
MongoDB Manual
/ / / / /

创建加密模式

在此页面上

  • 关于此任务
  • 步骤
  • 创建 JSON 加密模式文档。
  • 为要加密的每个字段指定加密参数。
  • 例子

要使加密字段可查询,请创建加密模式。 此模式定义了哪些字段可查询,以及允许哪些查询类型。 有关更多信息,请参阅加密字段和查询。

1

包含一个带有嵌套fields数组的 encryptedFieldsObject

const encryptedFieldsObject = {
fields: []
}
2
  1. pathbsonType字符串添加到fields数组中:

    const encryptedFieldsObject = {
    fields: [
    {
    path: "myDocumentField",
    bsonType: "int"
    }
    ]
    }

    重要

    您可以指定除 _id 字段之外的任何字段进行加密。

  2. 如果使用显式加密,请添加具有 DEK ID 的keyId字段。

    {
    path: "myDocumentField",
    bsonType: "int",
    keyId: "<unique data encryption key>"
    }

    提示

    通过自动加密,MongoDB 为每个字段创建加密密钥。 您可以在客户端上配置AutoEncryptionSettings ,然后使用createEncryptedCollection辅助方法创建集合。

  3. 如果您希望某个字段可查询,请添加queries属性并列出允许的queryTypes

    Queryable Encryption 目前仅支持equality查询。

    {
    path: "myDocumentField",
    bsonType: "int",
    queries: { queryType: "equality" }
    }
  4. (可选)在可查询字段中包含contention属性,以提高查找性能或写入和更新性能:

    {
    path: "myDocumentField",
    bsonType: "int",
    queries: { queryType: "equality",
    contention: "0"}
    }

    有关详细信息,请参阅争用。

此示例展示了如何为医院数据创建加密模式。

考虑以下包含个人身份信息 (PII)、信用卡信息和敏感医疗信息的文档:

{
"firstName": "Jon",
"lastName": "Snow",
"patientId": 12345187,
"address": "123 Cherry Ave",
"medications": [
"Adderall",
"Lipitor"
],
"patientInfo": {
"ssn": "921-12-1234",
"billing": {
"type": "visa",
"number": "1234-1234-1234-1234"
}
}
}

为了确保 PII 和敏感医疗信息的安全,此加密模式添加了相关字段:

const encryptedFieldsObject = {
fields: [
{
path: "patientId",
bsonType: "int"
},
{
path: "patientInfo.ssn",
bsonType: "string"
},
{
path: "medications",
bsonType: "array"
},
{
path: "patientInfo.billing",
bsonType: "object"
}
]
}

添加queries属性后, patientIdpatientInfo.ssn字段将成为可查询字段。此示例启用相等查询:

const encryptedFieldsObject = {
fields: [
{
path: "patientId",
bsonType: "int",
queries: { queryType: "equality" }
},
{
path: "patientInfo.ssn",
bsonType: "string",
queries: { queryType: "equality" }
},
{
path: "medications",
bsonType: "array"
},
{
path: "patientInfo.billing",
bsonType: "object"
},
]
}

后退

字段和查询