【译】 安全智能:MongoDB EF Core 提供程序中的可查询加密和向量搜索

【译】 安全智能:MongoDB EF Core 提供程序中的可查询加密和向量搜索 ▲点击上方“DotNet NB”关注公众号回复“1”获取开发者路线图学习分享丨作者 / 郑 子 铭这是DotNet NB 公众号的第242篇原创文章原文 | Rishit, Luce翻译 | 郑子铭本文由 Rishit Bhatia 和 Luce Carter 撰写。Rishit 是 MongoDB 的高级产品经理专注于 .NET 开发人员体验在转行产品管理之前他曾多年从事 C# 的实践工作。Luce 是 MongoDB 的高级开发者布道师、微软 MVP热爱代码、阳光和学习。本文已由微软 .NET 团队审核适用于 EF Core。*MongoDB Entity Framework (EF) Core 提供程序自 2024 年 5 月起正式发布。自发布以来我们欣喜地看到 .NET 开发人员社区给予了积极的反馈并且该提供程序在各种应用程序中得到了越来越广泛的采用。该提供商使开发人员能够利用 LINQ 查询、更改跟踪和乐观并发等 EF Core 功能将 MongoDB 无缝集成到他们的 .NET 项目中同时利用 MongoDB 的灵活性和可扩展性。我们持续增强提供程序的功能新增了诸多特性例如改进了对 MongoDB 特定操作的支持、优化了性能并扩展了与最新 EF 版本的兼容性。这些更新体现了我们致力于为开发者提供强大、直观且可靠的方式让他们能够使用 MongoDB 和 EF Core 构建现代应用程序的承诺。我们很高兴地宣布两项新增的重大功能——可查询加密和向量搜索这些功能让您可以直接通过便捷的 API 从 MongoDB EF Core 提供程序利用一些重要的 MongoDB 功能而无需依赖底层的 .NET C# 驱动程序。让我们先睹为快看看它们长什么样。MongoDB 可查询加密可查询加密是一项突破性功能它允许您加密 MongoDB 数据库中的敏感数据同时仍然能够查询这些数据。这意味着您可以在不牺牲查询能力的前提下维护强大的数据隐私和合规性。对于医疗保健和金融等数据治理要求严格的行业来说这一点尤其重要。对于用户而言这意味着更高的安全性、更低的数据泄露风险和更简化的合规工作因为他们可以自信地对静态数据和传输中的数据进行加密而无需重新设计应用程序架构来查询加密字段。配置数据模型以定义加密属性DbContext非常OnModelCreating简单如下所示protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.EntityEmployee(entity { entity.Property(e e.TaxPayerId) .IsEncryptedForEquality(Your Data Encryption Key GUID)); entity.Property(e e.Salary) .HasBsonRepresentation(BsonType.Decimal128) // Salaries from 0 to 10 million, no decimal place precision .IsEncryptedForRange(0m, 10000000m, 0, Your Data Encryption Key GUID)); }); }下面简要展示一下相等性查询和范围查询的工作原理//Encrypted Equality Query var specificEmployee db.Employees.Where(e e.TaxPayerId 45678); //Encrypted Range Query var seniorEmployees db.Employees.Where(e e.Salary 100000m e.Salary 200000m);完整的教程将向您展示如何使用 MongoDB EF Core 提供程序加密数据并进行查询。MongoDB 向量搜索向量搜索彻底革新了查找和分析非结构化数据的方式它支持基于语义而非精确关键词的相似性搜索。这项功能由向量嵌入技术驱动该技术将数据点例如文本、图像或音频表示为高维空间中的数值向量。向量搜索的重要性在于它能够为人工智能应用如推荐引擎、语义搜索和异常检测开启新的可能性。对于用户而言这意味着更智能、更相关的搜索结果能够直接在 MongoDB 数据上构建复杂的 AI 应用程序以及更深入地了解其非结构化信息。OnModelCreating以下代码块展示了如何轻松地在函数或数据模型类本身中设置带有向量嵌入字段的数据模型//Inside the OnModelCreating function b.Property(e e.PlotEmbedding) .HasElementName(plot_embedding_voyage_3_large) .HasBinaryVectorDataType(BinaryVectorDataType.Float32); // OR In the data model definition for the property [BinaryVector(BinaryVectorDataType.Float32)] public float[] ? PlotEmbedding {get; set;}完成上述配置并拥有运行向量搜索查询所需的适当向量索引后使用您的数据运行查询就非常简单如下所示//Simple LINQ Vector Search query var similarMovies await db.Movies.VectorSearch( e e.PlotEmbedding, myCustom.PlotEmbedding, limit: 10) .ToListAsync();我们的完整教程中还介绍了更多功能例如使用预过滤器运行向量搜索查询并预测其得分。立即开始MongoDB EF Core 提供程序现在允许您直接从提供程序使用 MongoDB 的标志性功能例如可查询加密和向量搜索。首先您可以创建一个简单的 .NET 控制台应用程序连接到MongoDB AtlasMongoDB 的全托管云数据库服务。之后您可以使用 MongoDB EF Core 提供程序在应用程序中探索这些强大的功能。有关分步说明请参阅快速入门指南。了解更多要了解更多关于 EF Core 和 MongoDB 的信息请参阅EF Core 文档了解有关使用 EF Core 访问各种数据库的更多信息。请参阅MongoDB 文档了解有关从任何平台使用 MongoDB 的更多信息。有关如何入门的更多信息请参阅MongoDB EF Core 提供程序文档。请查阅有关可查询加密和向量搜索的官方文档以了解更多相关主题。不妨一试此外如果您想提升 MongoDB 技能并获得 Credly 认证的徽章以便在 LinkedIn 上炫耀何不试试Vector Search 徽章呢原文链接Secure and Intelligent: Queryable Encryption and Vector Search in MongoDB EF Core Provider