【发布时间】:2022-08-20 05:12:37
【问题描述】:
我最近将我的应用程序从 Micronaut 2 更新到了 Micronaut 3,因此所有 Mongo 自动 CSFLE 加密/解密都停止工作。
如果我创建一个 ClientEncryption 对象并手动解密该字段,则该字段有效,并且日志记录显示它正在获取解密所需的 KMS 和密钥信息:
INFO org.mongodb.driver.client - executeStateMachine: READY
INFO org.mongodb.driver.client - executeStateMachine: NEED_MONGO_KEYS
INFO org.mongodb.driver.client - executeStateMachine: NEED_KMS
// manual decryption result here
但对于自动过程,它只打印 READY 状态,不进行加密/解密。
是否有任何示例显示自动 CSFLE 与 Micronaut 3 一起使用,或者有人遇到过这个问题吗?这可能是 Micronaut 3 的错误吗?
Micronaut 3 升级中的两个相关依赖项是:
implementation \"io.micronaut.mongodb:micronaut-mongo-reactive:4.2.0\" // driver
implementation \"org.mongodb:mongodb-crypt:1.5.2\" // uses libmongocrypt
并且 mongodb-enterprise-cryptd v5.0.6 二进制文件安装在我们运行应用程序的 ubuntu:20.04 操作系统上。 Mongo 连接中的mongocryptdSpawnPath 额外选项属性指向安装位置。
- 服务器版本:企业版4.2.21
我无法给出确切的 schemaMap 和 DB 详细信息,但这里有一个由相同代码生成的类似数据,用于一个名为 zoo 的 DB 和两个使用 CSFLE 的名为 dogAnimals 和 catAnimals 的集合。
样本 dogAnimals 文件:
{
\"basicDetails\": {
\"dogName\":\"Barney\", // should be encrypted
\"age\":5,
},
\"furtherDetails\": {
\"dogBreedInfo\": { // should be encrypted
\"breedName\": \"Golden Retriever\",
\"averageLifeSpanInYears\": 20
}
}
}
样本 catAnimals 文档:
{
\"catName\":\"Mrs Miggins\", // should be encrypted
\"age\":2,
\"catFacts\": {
\"favouriteHuman\": \"Robert Bingley\", // should be encrypted
\"mood\": \"snob\"
}
}
匹配 schemaMap:
{
\"zoo.dogAnimals\": {
\"bsonType\": \"object\",
\"encryptMetadata\": {
\"keyId\": [
{
\"$binary\": {
\"base64\": \"12345678\",
\"subType\": \"04\"
}
}
]
},
\"properties\": {
\"basicDetails\": {
\"bsonType\": \"object\",
\"properties\": {
\"dogName\": {
\"encrypt\": {
\"bsonType\": \"string\",
\"algorithm\": \"AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic\"
}
}
}
},
\"futherDetails\": {
\"bsonType\": \"object\",
\"properties\": {
\"dogBreedInfo\": {
\"encrypt\": {
\"bsonType\": \"object\",
\"algorithm\": \"AEAD_AES_256_CBC_HMAC_SHA_512-Random\"
}
}
}
}
}
},
\"zoo.catAnimals\": {
\"bsonType\": \"object\",
\"encryptMetadata\": {
\"keyId\": [
{
\"$binary\": {
\"base64\": \"12345678\",
\"subType\": \"04\"
}
}
]
},
\"properties\": {
\"catName\": {
\"encrypt\": {
\"bsonType\": \"string\",
\"algorithm\": \"AEAD_AES_256_CBC_HMAC_SHA_512-Random\"
}
},
\"catFacts\": {
\"bsonType\": \"object\",
\"properties\": {
\"favouriteHuman\": {
\"encrypt\": {
\"bsonType\": \"string\",
\"algorithm\": \"AEAD_AES_256_CBC_HMAC_SHA_512-Random\"
}
}
}
}
}
}
}
-
哪个服务器版本?你的 schemaMap(或 encryptedFieldsMap)是什么?什么集合名称?文件示例?
标签: mongodb encryption micronaut mongodb-csfle micronaut-mongodb