如何在 dot net core 中使用 Mongodb CSFLE 加密 Class 属性
How to encrypt a Class property using Mongodb CSFLE in dot net core
我正在尝试将 Mongodb 客户端字段级加密 (CSFLE) 与 Dot net 核心 (v5.0) 一起使用。
我根据文档使用 Json 模式映射来工作,它使用 BSONDocument 类型,我可以定义每个字段进行加密(已遵循本指南 https://www.mongodb.com/developer/how-to/client-side-field-level-encryption-mongodb-csharp/)
我现在需要将其应用于我的 C# Class 模型上的各个属性。
我可以使用注释或以某种方式告诉 MongoDb 驱动程序将我的 class 属性 序列化为 BsonDocument 模式中所需的二进制类型吗?
这个有效:
var schemaMap = $@"{{
properties: {{
SSN: {{
encrypt: {{
keyId: [{{
'$binary' : {{
'base64' : '{base64DataKeyId}',
'subType' : '04'
}}
}}],
bsonType: 'string',
algorithm: 'AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic'
}}
}}
}},
'bsonType': 'object'
}}";
var autoEncryptionSettings = new AutoEncryptionOptions(
keyVaultNamespace,
kmsProviders,
schemaMap: new Dictionary<string, BsonDocument>()
{
{ collectionNamespace.ToString(), BsonDocument.Parse(schemaMap) }
});
我需要以某种方式将其应用于 C# class 模型,如下所示:
public class TestModel
{
[MongoEncrypted?]
public string SSN { get; set; }
}
我使用基本的存储库模式,目前将我的 Class 模型像这样传递给 Mongo 驱动程序
_mongoCollection = _mongoContext.GetCollection<TEntity>(collectionName);
如何告诉 Mongodb 驱动程序将 Json 架构应用到我现有的 class 属性?
这可能吗?
谢谢。
不,不可能,json 架构应该在您创建 mongo 客户端时提供
我正在尝试将 Mongodb 客户端字段级加密 (CSFLE) 与 Dot net 核心 (v5.0) 一起使用。
我根据文档使用 Json 模式映射来工作,它使用 BSONDocument 类型,我可以定义每个字段进行加密(已遵循本指南 https://www.mongodb.com/developer/how-to/client-side-field-level-encryption-mongodb-csharp/)
我现在需要将其应用于我的 C# Class 模型上的各个属性。 我可以使用注释或以某种方式告诉 MongoDb 驱动程序将我的 class 属性 序列化为 BsonDocument 模式中所需的二进制类型吗?
这个有效:
var schemaMap = $@"{{
properties: {{
SSN: {{
encrypt: {{
keyId: [{{
'$binary' : {{
'base64' : '{base64DataKeyId}',
'subType' : '04'
}}
}}],
bsonType: 'string',
algorithm: 'AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic'
}}
}}
}},
'bsonType': 'object'
}}";
var autoEncryptionSettings = new AutoEncryptionOptions(
keyVaultNamespace,
kmsProviders,
schemaMap: new Dictionary<string, BsonDocument>()
{
{ collectionNamespace.ToString(), BsonDocument.Parse(schemaMap) }
});
我需要以某种方式将其应用于 C# class 模型,如下所示:
public class TestModel
{
[MongoEncrypted?]
public string SSN { get; set; }
}
我使用基本的存储库模式,目前将我的 Class 模型像这样传递给 Mongo 驱动程序
_mongoCollection = _mongoContext.GetCollection<TEntity>(collectionName);
如何告诉 Mongodb 驱动程序将 Json 架构应用到我现有的 class 属性? 这可能吗?
谢谢。
不,不可能,json 架构应该在您创建 mongo 客户端时提供