可查询加密(Queryable Encryption)实现隐私保护下的等值查询
深入 MongoDB 7.0 的可查询加密特性,演示如何在加密字段上执行精确匹配查询而无需解密。 · 难度:入门 · +10XP
可查询加密(Queryable Encryption)实现隐私保护下的等值查询
MongoDB 7.0 推出的可查询加密(Queryable Encryption)允许对敏感字段(如身份证号、邮箱)进行确定性加密,同时保留等值查询能力。本教程将详细解释其原理:基于封装的加密索引结构(ESC / ECOC),以及客户端如何通过 mongocryptd 自动解密。我们会演示配置加密 schema、插入加密数据、执行精确查询的完整流程,并讨论其性能开销与适用场景(如医疗、金融数据合规)。注意:目前仅支持等值匹配,不支持范围查询。
// 需要在客户端创建加密集合
const encryptedClient = new MongoClient(uri, {
autoEncryption: {
keyVaultNamespace: 'encryption.__keyVault',
kmsProviders: { local: { key: base64Key } },
schemaMap: {
'test.patients': {
bsonType: 'object',
properties: {
ssn: { encrypt: { keyId: [keyId], algorithm: 'AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic' } }
}
}
}
}
});
// 之后可以正常进行 ssn 的等值查询