Docs 菜单
Docs 主页
/
MongoDB Manual
/ / / /

功能

在此页面上

  • Overview
  • 客户端字段级加密 (Client-Side Field Level Encryption)
  • 其他安全机制
  • 基于角色的访问控制
  • 静态加密
  • 传输加密 (TLS/SSL)
  • 功能对比
  • Scenario
  • 解决方案
  • 了解详情

在此页面上,您可以了解客户端字段级加密 (CSFLE) 的安全优势,以及 CSFLE 与 MongoDB 支持的其他安全机制的比较。 您还可以查看一个虚构的场景,该场景演示了 CSFLE 在保护数据方面的价值。

客户端字段级加密 (CSFLE) 是 MongoDB 的一项功能,可让客户端应用程序在通过网络传输数据之前对数据进行加密。 敏感数据由客户端透明地加密和解密,并且仅以加密形式与服务器通信。 CSFLE 在以下情况下确保加密字段的安全:

  • 数据库超级用户直接访问加密字段

  • 通过读取服务器内存来访问加密字段

  • 通过不安全的网络捕获加密字段

  • 通过读取数据库或备份文件访问磁盘加密字段

虽然所有客户端都可以访问非敏感数据字段,但只有适当配置的 CSFLE 客户端才能读取和写入加密数据字段。

重要

远程密钥管理系统

在生产中使用 CSFLE 时,必须使用远程密钥管理系统 (KMS) 来存储加密密钥。

要查看演示如何将远程KMS与 CSFLE 结合使用的分步指南,请参阅教程。

要查看所有受支持的 KMS 提供商的列表,请参阅 KMS 提供商。

要详细了解为什么要使用远程 KMS,请参阅使用远程密钥管理系统的理由

本节介绍 MongoDB 支持的以下安全机制,并解释其使用案例和局限性:

  • 基于角色的访问控制

  • 静态加密

  • 传输加密 (TLS/SSL)

基于角色的访问控制是一种安全机制,允许管理员授予和限制用户的集合级别权限。通过适当的角色定义和分配,此解决方案可防止意外泄露数据和访问。

基于角色的访问控制无法针对以下情况提供防护:

  • 通过不安全的网络捕获数据

  • 通过读取数据库或备份文件访问磁盘数据

  • 通过读取服务器内存来访问数据

  • 数据库超级用户直接访问数据

要了解更多信息,请参阅基于角色的访问控制

静态加密是一种对磁盘上的数据库文件进行加密的机制。此机制可防止缺少数据库凭据但有权访问托管数据库的计算机的人员查看您的数据。

该机制无法在以下情况下保护您的数据:

  • 通过不安全的网络捕获数据

  • 通过读取服务器内存来访问数据

  • 数据库超级用户直接访问数据

要了解详情,请参阅静态加密。

使用 TLS/SSL 的传输加密会加密您通过网络的数据。TLS/SSL 在数据通过不安全的网络传输时保护数据,但无法保护数据免受特权用户侵害或保护磁盘上的数据。

若要了解详情,请参阅使用 TLS/SSL 进行传输加密

下表描述了潜在的安全威胁以及MongoDB安全功能如何解决这些威胁:

警告

这是用于一般比较的高级摘要。有关详细信息,请参阅可查询 Queryable Encryption概述 无状态文档数据库加密方案的设计与分析 白皮书。

威胁
TLS/SSL 传输加密
静态加密 (EaR)
Queryable Encryption (相等)+ TLS/SSL + EaR
CSFLE + TLS/SSL + EaR
网络侦听(攻击者可以访问权限网络流量)
显示操作元数据
显示操作元数据
显示操作元数据
从磁盘恢复数据库(攻击者具有物理磁盘访问权限)
显示数据库
显示数据库和操作元数据的大小
显示数据库和操作元数据的大小
显示数据库和操作元数据的大小
从磁盘和内存进行的数据库渗漏(攻击者具有物理磁盘访问权限和多个数据库快照) [ 1 ]
显示数据库
显示数据库
显示数据库和操作元数据的大小
显示和操作元数据的频率
高级持续性威胁(攻击者长期持续访问权限网络、磁盘和内存,而不被发现)
显示数据库
显示数据库
虽然Queryable Encryption并非旨在防范 ATP,但它针对此威胁模型提供了一些ACID 一致性保证。请参阅 白皮书 了解详细信息。
虽然 CSFLE 并不是为了防范 ATP 而设计的,但它为防范这种威胁模型提供了一些ACID 一致性保证。请参阅 白皮书 了解详细信息。
[1] 假设泄露发生在已完成的操作之间。请参阅 白皮书 了解详细信息。

重要

同时使用这些机制

同时使用基于角色的访问控制、静态加密、传输加密和可选的正在使用的加密安全机制。请注意,您不能在同一集合中同时使用客户端字段级加密和可查询Queryable Encryption。

要了解有关 Queryable Encryption 的更多信息,请参阅Queryable Encryption 功能。

以下虚构场景演示了客户端字段级加密 (CSFLE) 在保护应用程序数据方面的价值,以及 CSFLE 如何与本指南中讨论的其他安全机制交互。

在此场景中,我们保护医疗保健管理系统上的敏感数据,该系统为一家虚构的公司MedcoMD存储患者的个人信息、保险信息和医疗记录。 患者数据均不公开,而社会安全号(SSN,美国政府颁发的 ID 号)、保单号码和生命体征测量值等特定数据特别敏感,须遵守隐私合规性。 对于公司和患者来说,保持数据的私密性和安全性非常重要。

MedcoMD 需要该系统来满足以下使用案例:

  • 医生使用该系统访问患者的病历和保险信息,并添加新的生命体征测量值。

  • 导医使用该系统,通过患者的联系信息来验证其身份。

  • 接待员可以查看患者的保单提供商,但不能查看其保单号码。

  • 导医无法访问患者的病历。

MedcoMD 还关注通过以下任何一种方法披露敏感数据:

  • 在导医的可公开查看的屏幕上意外泄露数据。

  • 由超级用户(如数据库管理员)直接访问数据库。

  • 通过不安全的网络捕获数据。

  • 通过读取数据库服务器的内存来访问数据。

  • 通过读取数据库或备份文件来访问数据。

MedcoMD 可以做些什么来平衡其医疗保健管理系统的功能和访问限制?

MedcoMD 使用以下安全机制来满足其用例,并防止敏感医疗数据泄露:

  • 传输加密 (TLS/SSL),确保数据在网络上传输时的安全。

  • 静态加密,防止通过读取数据库或备份文件泄露数据。

  • 基于角色的访问控制,将数据库用户访问权限限制在执行任务所需的集合范围内。

  • 使用 CSFLE 加密敏感字段以满足以下使用案例和约束:

    • 防止从服务器内存中读取数据,因为 CSFLE 加密数据永远不会以未加密的形式存在于数据库服务器上。

    • 为接待员提供未启用 CSFLE 的客户端,允许接待员验证患者身份,并防止在接待员可公开查看的屏幕上意外泄露敏感数据。

    • 为医生提供启用 CSFLE 的客户端,允许医生在办公室私下查看敏感数据。

要查看为保护 MongoDB 部署而应实施的安全措施列表,请参阅安全清单

要开始使用 CSFLE,请参阅快速入门

后退

客户端字段级加密 (Client-Side Field Level Encryption)