Docs 菜单

Docs 主页开发应用程序MongoDB Manual

功能

在此页面上

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

在此页面上,您可以了解客户端字段级加密 (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 支持的安全功能及其解决的潜在安全漏洞:

描述 MongoDB 安全功能及其解决的潜在漏洞的图表

重要

同时使用这些机制

要保护生产部署,请同时使用基于角色的访问控制、静态加密、传输加密和可选的正在使用的加密安全机制。 请注意,您不能同时使用 CSFLE 和 Queryable Encryption 来加密同一collection中的不同fields。

要了解有关 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)