OSSN/OSSN-0066
MongoDB guest 实例允许任何用户连接
总结
在创建新的 MongoDB 单实例或集群时,MongoDB 中的默认设置 `security.authorization` 被设置为禁用。这导致无需提供用户凭据即可连接到 mongo 实例,并从实例创建时附加的任何网络执行读/写操作。
受影响的服务 / 软件
Trove, Liberty
讨论
MongoDB 在 `mongo.conf` 中包含一个安全配置,如下所示
security:
authorization: "enabled"
在 Trove 中创建新的 MongoDB 实例或集群时,`security` 值未被填充,导致 MongoDB 采用默认值 `disabled`。 禁用安全授权后,将不会强制执行用户身份验证,允许用户从实例创建时附加的任何网络连接并执行读/写数据操作。
Mitaka 中已实施一个修复程序,通过默认情况下启用单实例的授权来解决此问题。可以通过配置组进行切换。
集群安全性由 Trove 配置变量 `mongodb.cluster_secure` 确定。集群创建后无法切换此设置。
建议的操作
单实例现在默认使用基于角色的访问控制 (RBAC)。要禁用 RBAC,Trove 用户可以附加一个 `security.authorization` 设置为 `disabled` 的安全组。可以通过分离安全组或将其值更改为 `enabled` 来重新启用它。
Trove 配置变量 `mongodb.cluster_secure`(布尔类型,位于 `trove.conf` 中)决定了创建的 MongoDB 集群的 RBAC 状态。将其设置为 true 可启用 RBAC,而设置为 false 可禁用它。这适用于所有 MongoDB 集群,并且需要重启 trove-api 服务才能更改,并且无法在正在运行的集群上切换。
可以通过以下更改 `mongo.conf` 来保护现有的 mongoDB 实例
security:
authorization: "enabled"
勘误
此 OSSN 之前错误地声明该修复程序已回移植到 Liberty 版本。事实并非如此,该修复程序仅应用于 Mitaka。
联系方式 / 参考文献
作者:Luke Hinds, Red Hat
此 OSSN : https://wiki.openstack.org/wiki/OSSN/OSSN-0066
原始 LaunchPad Bug : https://bugs.launchpad.net/trove/+bug/1507841
邮件列表:[Security] 标签在 openstack-dev@lists.openstack.org 上
OpenStack Security Group:https://launchpad.net/~openstack-ossg