分享到

简介

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

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

为什么要加密数据?

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

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

简单来说,加密是将数据编码,使其对未经授权访问数据的人来说不可读。只有知道加密“密钥”的授权人员才能读取和理解数据。有效实施的加密方法应提供针对受损访问(导致数据被盗)的完全安全保障。

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

加密类型

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

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

这两种方法根据数据状态都有一些固有的漏洞,但它们弥补了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

Alex Emerich

Alex是一个典型的观鸟、热爱嘻哈的“书虫”,也喜欢撰写关于数据库的文章。他目前居住在柏林,在那里可以看到他像利奥波德·布鲁姆一样漫无目的地在城市中行走。
© . All rights reserved.