Root 用户禁用¶
包含您的 Launchpad 蓝图的 URL
https://blueprints.launchpad.net/trove/+spec/root-disable
由于实例上存在启用 root 用户的功能,因此也应提供禁用 root 用户的功能。
提议的变更¶
此更改将添加一个新的 `root-disable` 命令。
该命令将从指定的实例中删除 root 用户。执行该命令不会对 `root_enable_history` 表进行任何更改。这确保了 `root-show` 命令将继续按预期运行。
配置¶
无
数据库¶
无
公共 API 安全¶
无
Python API¶
Root 类中的 Python API
- def delete(self, instance)
“””实现 root-disable API。
移除指定数据库实例的 root 用户。
- param instance
从中移除 root 用户的实例
“””
内部 API¶
无
Guest Agent¶
适当的 root 禁用方法将仅针对 MySQL 添加。所有其他数据存储也需要具有相应的未实现错误。
备选方案¶
另一种选择是 `root-disable` 将简单地调用 `root-enable` 并且不将密码返回给用户。这种替代方案也不会影响 `root-show`。
但是,操作员可能认为在执行 `root-disable` 调用后,root 用户已完全从数据库中删除。保留 root 用户可能不是操作员所期望的。
讨论总结¶
在讨论此蓝图期间提出了一些问题。完整的详细信息可以在这里找到 https://review.openstack.org/#/c/189837/。
总而言之,这些问题围绕着用户执行 root 启用后可能发生的问题。
存在一个安全漏洞,用户可以创建一个替代的 root 用户,删除现有的 root 用户并进行备份然后恢复,从而不会留下任何痕迹表明 root 用户已被启用,并且恢复的数据库中留下一个“未知”的替代 root 用户。
启用的 root 用户可以更改管理用户访问权限,从而使实例处于无法通过 Trove 进行管理的狀態。
确定添加 `root-disable` 命令不会使上述提出的问题比现有情况更糟。
实现¶
负责人¶
- 主要负责人
dloi
里程碑¶
liberty-1
工作项¶
实现 CLI、Python API 和 REST API 调用
在 guest 中添加 MySQL 数据库的 `disable_root` 方法以及所有其他数据存储的未实现存根。
单元和集成测试
升级影响¶
无
依赖项¶
无
测试¶
添加到现有的 root 启用测试中,以测试禁用 root 用户。
文档影响¶
需要将新的 `root-disable` 命令添加到 API 文档中。
参考资料¶
无