如何在 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 客户端时提供