分享到

简介

当今世界由数据驱动。组织创建、存储和交换的数据是其最有价值的资产。数据加密是所有组织为保护自身、用户以及遵守数据隐私法规而进行的关键实践。组织应确保内部用户只能查看与其相关的数据。更重要的是,组织需要保护其数据免受泄露和未经授权的访问。

对于处理敏感信息的组织而言,数据加密的需求更为重要。在本文中,我们将讨论除了强大的身份验证授权措施之外,您为什么要加密数据,MongoDB 中不同类型的加密以及加密的最佳实践。

为什么要加密数据?

基于角色的访问控制 (RBAC) 是防止数据库权限滥用的绝佳措施。然而,此功能仅涵盖了在保护系统时必须考虑的一些漏洞。RBAC 无法解决恶意行为者窃听您的网络、彻底的数据盗窃或访问数据库主机内存的情况。

早在 2019 年,世界经济论坛就预测到 2020 年整个数字宇宙中的数据单元量将达到44 泽字节。这个预测数字是宇宙中可观测恒星数量的 40 倍。截至本指南发布时(2022 年),这个数字无疑已经增长,使得加密的必要性显而易见。

简而言之,加密是将数据编码以使其对未经授权访问数据的人员无法读取的行为。只有知道加密“密钥”的授权人员才能读取和理解数据。有效实施的加密方法应提供针对受损访问导致数据被盗的完全安全性。

加密最基本的原理是通过加密器用其他字符替换字母、数字和符号来创建密码。对于非密码学家或黄道十二宫的粉丝来说,密码是代表原始消息的一组字符,在本例中是原始数据。这个密码的创建者持有加密密钥,即描述编码密码方法​​的数字。现代加密比简单的字符交换复杂得多。大多数现代实现会将纯文本转换为密文,密文由文本、图像和二进制 Blob 形式的块或字节流组成。没有这个密钥,计算机或人类无法读取实际数据,任何未经授权的数据都无法正确呈现。

加密类型

加密方法通常分为两类:对称密钥加密和非对称加密。它们的定义是

  • 对称加密 - 一种加密密钥和解密密钥相同(对称)的方法
  • 非对称加密 - 一种也称为公钥加密的方法,它创建两个不同的密钥,即私钥和公钥,它们不相同。公钥可以与任何人共享,私钥只能与授权人员共享。公钥可用于加密只能由私钥解密的数据。

这两种方法都存在一些固有的漏洞,具体取决于数据状态,但它们弥补了 RBAC 遗漏的问题,例如网络窥探和数据盗窃。这种保证是 MongoDB 根据数据状态在所有数据库中采用这两种方法的原因。

传输中加密

传输中加密是在数据从一个点移动到另一个点时保护数据。在发送之前,数据被加密以进行其“旅程”,然后在接收点解密和验证。最好的可视化是想象数据就像通过装甲车从一个银行分支机构运到另一个分支机构以补充金库的钱一样。

MongoDB Atlas 通过为服务器设置证书来支持应用程序客户端与服务器之间以及集群内部通信的传输层安全 (TLS) 和安全套接字层 (SSL)。证书是用于证明私钥所有权有效性的电子文档。证书确保数据通过受信任的网络连接加密传输,防止网络嗅探活动,例如数据包嗅探或 IP/DNS 欺骗。

通过包含公钥,我们看到 MongoDB 利用非对称加密来保护运动中的数据。对称加密将需要通过某个通道在各方之间通信加密密钥。单个密钥在传输过程中必须保持安全,并且在此阶段存在风险。非对称加密理论上通过其公钥解决了这种不安全的传输问题。加密通信可以在没有任何事先通信的情况下进行。

通过公钥加密,发送方的消息只能由预期的接收方使用其私钥解密。公钥加密在传输中具有优势,因为无需共享私钥,并且签名可确保接收方能够验证消息来自受信任的发送方。

Asymmetric Encryption

非对称加密的缺点是它比对称加密花费的时间更长,并且需要消耗更多的资源才能实现。如果您的数据没有主动地从设备到设备或从网络到网络移动,那么这些权衡就没有必要进行,并且对称加密提供了足够的安全性。

非对称加密的一个潜在风险是,如果您的私钥落入坏人之手,那么您的所有消息都可能被读取。MongoDB 通过前向保密密码套件提供额外的安全性。这些套件会创建一个受服务器私钥保护的临时会话密钥。此会话密钥从不传输,它确保即使服务器的私钥被泄露,过去的会话也无法通过被泄露的私钥解密。MongoDB 支持临时 Diffie-Hellman (DHE)临时椭圆曲线 Diffie-Hellman (ECDHE) 算法。

MongoDB Atlas 使用Let's Encrypt 已知证书来验证启用 TLS 的客户端,一旦它们通过访问和身份验证控制。TLS 协议通过在两个或多个计算机应用程序之间使用证书来提供完整性和真实性。MongoDB 可以通过使用此协议在网络中进行通信,从而防止不必要的窃听和篡改。您可以参考官方 MongoDB 文档,了解客户端的 TLS 配置。

静态加密

静态加密保护处于非传输状态但闲置的数据。您可以将静态加密数据想象成银行分支机构金库中安全的钱。它不再传输到另一个分支机构,而是静止在一个地方。这种静态状态避免了非对称加密解决的传输不安全性,因此对称加密是一种强大的方法。

Symmetric Encryption

磁盘上的加密数据保持加密状态,除非攻击者可以访问加密密钥。静态加密可在物理驱动器丢失或被盗或数据库文件暴露的情况下保护敏感数据。

MongoDB 静态加密是企业功能。这为您的数据库添加了一个保护层,保证存储的写入文件只有在经过授权的进程或应用程序解密后才能访问。

MongoDB Atlas 默认情况下为集群中的每个节点提供内置的磁盘静态加密。但是,您还可以从WiredTiger 存储引擎启用额外的加密。此功能允许您使用首选云提供商的密钥管理服务 (KMS)。KMS 是一种集中管理所有加密密钥的实用程序。

MongoDB 支持 AWSAzureGoogle Cloud Platform 密钥管理服务。对于那些不想仅仅依赖 MongoDB 的加密密钥并希望自行控制生成的加密密钥的人来说,这是一个很棒的功能。

使用中加密

最后一种 MongoDB 加密类型是一个提供使用中加密的功能,即客户端字段级加密 (CSFLE)。CSFLE 允许工程师指定应保持加密的文档字段。敏感数据由客户端加密/解密,并仅以加密形式与服务器通信。

此功能确保服务器和网络上所需加密字段的安全性,并且只能由适当的客户端访问。在任何时候,敏感数据都在数据库主机和网络传输中加密。安全责任转移到客户端。CSFLE 防止了前面描述的所有漏洞:数据库权限滥用、网络窃听、数据盗窃以及访问数据库主机内存。

轮换加密密钥

静态加密和客户端字段级加密始终存在对称密钥被泄露的风险。就像您对重要的互联网账户密码所做的那样,您也应该定期更改加密密钥。这种做法就是轮换加密密钥。

对于数据库管理员来说,轮换加密密钥至关重要,因为它虽然不能万无一失地防止密钥泄露,但它极大地限制了风险。如果密钥被泄露,那么它很有可能已经过时,无法访问敏感数据。这是一项需要维护的额外任务,但最好采用并永远不需要它,而不是不采用它并后悔不已。

MongoDB Atlas 静态加密和 CSFLE 内置了指南,可用于轮换您可能正在使用的每个 KMS 云提供商所需的密钥

如果您是自托管 MongoDB,则有关于执行手动密钥轮换以及 MongoDB 的Ops ManagerCloud Manager 平台的指南。

结论

在本指南中,我们讨论了数据加密日益增长的重要性以及许多数据安全漏洞。MongoDB 中的数据经过加密,以确保其在任何状态下的安全性。这种状态可以是空闲、运动中或使用中。

随着越来越多的数据进入数字宇宙,越来越多的威胁正试图访问它。所有组织都应采取一切预防措施来保护有价值的信息。MongoDB 提供了一套加密安全功能,这些功能最好在您需要之前就已了解。

作者简介
Alex Emerich

亚历克斯·埃默里奇

亚历克斯是一个典型的观鸟、热爱嘻哈的“书呆子”,也喜欢写关于数据库的文章。他目前住在柏林,在那里他像利奥波德·布鲁姆一样漫无目的地穿梭于城市。
© . This site is unofficial and not affiliated with Prisma Data, Inc.