新的MongoDB Shell现在支持客户端的现场级加密

457 阅读3分钟

去年夏天,我们推出了mongosh,这是一个新的MongoDB Shell,具有增强的用户体验和强大的、基于Node.js的脚本环境

从那时起,我们一直在增加新的功能和API,以缩小与传统的mongo shell的差距,使其成为MongoDB的默认外壳。除了我们在第一个版本中支持的CRUD和其他命令集之外,我们最近还增加了:

  • 批量操作
  • 更改流
  • 会话和交易
  • 日志和剖析命令
  • 复制集和分片配置命令

加上其他一些小东西和实用的命令。

支持客户端现场级加密

MongoDB客户端字段级加密(FLE)允许开发者使用MongoDB驱动(现在也可以使用mongosh)在客户端有选择地加密文档的各个字段,然后再将其发送到服务器上。这使得数据在数据库内存中使用时保持加密(但仍可查询),并保护其不受托管数据库的供应商以及直接访问数据库的任何用户的影响。

早在11月,我们就宣布,除了AWS的KMS,客户端FLE现在还支持Azure和谷歌云的测试版的密钥管理系统。

最新版本的MongoDB Shell可以通过几个简单的步骤轻松测试这一功能:

  1. [创建一个免费的Atlas集群]

  2. [安装mongosh]

  3. 查阅我们的文档,在Azure或GCP中设置你的KMS。

  4. [开始加密!]

为了让你更容易开始使用客户端FLE,这里有两个简单的脚本,你可以编辑并复制粘贴到mongosh中:mongosh-fle-gcp-kms用来设置谷歌云的客户端FLE,mongosh-fle-local-kms用来使用本地密钥。

在下面的截图中,你可以看到一个在客户端上自动加密的文件,然后再通过电线发送并插入MongoDB。字段在shell中是明文,但当用Compass连接到同一个Atlas集群时,则显示为已加密:

Client-side Field-level Encryption

一个强大的脚本环境

由于mongosh是建立在Node.js之上的,它是一个很好的脚本环境,不管是检查复制集的健康状态,还是想快速查看数据,以确保它是按照你的期望从你的应用程序中进来的。

有了npm的模块,体验变得更加丰富和互动。

例如,如果我想查看Atlas样本数据集中的sample_mflix集合,并检查历年来惊悚电影的分布情况,我可以编写一个简单的脚本,包括运行一个聚合,并通过一个名为babar的开源库对结果进行视觉格式化。

Mongosh npm Module

这只是你通过利用社区多年来建立的伟大的JavaScript库和模块生态系统来扩展MongoDB Shell功能的众多方法之一,并且每天都在不断地建立。

开始编写脚本并让我们知道它是如何为你工作的!

当我们为MongoDB Shell添加新的功能时,我们尽可能地保持与mongo的向后兼容,而且我们大多能够做到这一点。然而,在有限的情况下,我们利用机会清理了API,并解决了一些意外的行为。

想知道mongosh的下一步是什么吗?我们正在努力增加对load() 和 rc 文件的支持,以使你的脚本能够很容易地加载到 shell 中。