使用本地密钥MONGODB启用数据加密时出错

Gur*_*kha 6 security encryption ssl bigdata mongodb

我已经成功加密了mongoDB中的通信,但是当我尝试启用数据加密时,我遇到了错误.我正在使用版本为3.2.4的mongoDB企业版.我在控制台中收到以下消息:

ERROR: child process failed, exited with error number 14
Run Code Online (Sandbox Code Playgroud)

但是当我查看日志时,我看到如下详细错误:

Unable to retrieve key .system, error: there are existing data files, but no valid keystore could be located.
Fatal Assertion 28561
Run Code Online (Sandbox Code Playgroud)

以下是我的配置文件的片段:

# enable authentication
security:
  authorization: enabled
  enableEncryption: true
  encryptionKeyFile: /home/test/mongodb-keyfile
Run Code Online (Sandbox Code Playgroud)

没有enableEncryptionencryptionKeyFile参数,它工作正常.谁能解释一下我在这里缺少什么?谢谢!

Wan*_*iar 7

MongoDB的加密存储引擎支持两种密钥管理选项:

  • 密钥管理器:通过密钥管理互操作性协议(KMIP)与第三方密钥管理设备集成.
  • 本地密钥:通过密钥文件使用本地密钥管理.

值得一提的是,使用密钥管理器符合监管密钥管理指南,建议通过本地密钥管理.

如果您使用的是密钥管理器选项,请参阅KMIP主密钥轮换.

由于您使用的是本地密钥选项,因此如果您具有副本集部署,则可以旋转副本集成员.这将重新同步从未加密到加密的数据mongod.

或者,如果您只有一个独立的mongod,您可以:

  1. 备份数据库文件.
  2. 停止mongod进程.
  3. 删除或移动现有数据库文件dbpath.要格外小心!- 如果要删除,请确保您有备份数据.
  4. mongod使用--enableEncryption--encryptionKeyFile重新启动.
  5. 将备份文件还原到重新启动和加密mongod.

作为一个例子,你可以使用mongodump转储数据,并使用mongorestore恢复转储文件.

最后,请注意MongoDB Enterprise Edition是商业支持的产品.如果您有商业支持订阅,我建议您打开支持案例.

  • @ null1941以上答案适用于支持`--enableEncryption`的MongoDB Enterprise(v3.2 +)功能. (5认同)
  • 谢谢你的一步一步指导.我清空了数据目录,重新生成了本地密钥并启动了MongoDB实例.现在它的工作就像一个魅力. (2认同)