对 Cassandra 的 ‘root’ 操作的支持¶
在 Cassandra 客体代理中实现 root 启用(带密码)/禁用和显示调用。同时包含与数据存储无关的场景测试,用于 root 操作。
Launchpad 蓝图: https://blueprints.launchpad.net/trove/+spec/cassandra-root-enable
提议的变更¶
Cassandra 的超级用户名为 ‘cassandra’。它随任何新的 Cassandra 安装一起提供,但可以被删除。
在 Cassandra 中,只有超级用户才能创建其他用户并授予数据库资源的权限。Trove 使用 ‘os_admin’ 超级用户执行其管理任务。1 它创建的用户都是 ‘normal’ (NOSUPERUSER) 帐户。
内置的 ‘cassandra’ 超级用户会在准备阶段被主动移除,因为它不需要。
在正常操作期间(未启用 ‘root’),系统中应该只有一个超级用户(os_admin)。因此,‘root’ 默认情况下是未启用的。
配置¶
无
数据库¶
无
公共 API¶
无
公共 API 安全¶
无
Python API¶
无
CLI (python-troveclient)¶
无
内部 API¶
无
Guest Agent¶
‘enable’ 操作将通过创建一个新的超级用户(‘cassandra’)并授予其对所有 keyspace 的完全访问权限来实现。用户名(‘cassandra’)和密码(用户提供或随机生成)将返回给客户端。
此后,系统中将存在多个超级用户帐户,并且 ‘root’ 将因此被报告为 ‘enabled’。
‘disable’ 操作仅仅是将用户的密码重置为新的随机字符串,而不将其暴露给最终用户。帐户本身不会被删除,因此 root-show 将继续报告 root 为 ‘enabled’,正如它应该的那样。
在恢复备份时,将检查是否存在除 ‘os_admin’ 之外的其他超级用户,如果存在,则新实例的 root 状态将被报告为 ‘enabled’。
请注意,超级用户无法删除其超级权限或删除自身。因此,不应该可以通过创建新的超级用户、删除旧的超级用户并将状态恢复到新实例来绕过 root 检查。
一旦获得对数据库的超级用户访问权限,最终用户当然可以更改/删除 ‘os_admin’,但这样做将导致实例无法从 Trove 进行管理。
备选方案¶
无
Dashboard 影响 (UX)¶
无
实现¶
负责人¶
- 主要负责人
Petr Malik <pmalik@tesora.com>
里程碑¶
Mitaka
工作项¶
在 Cassandra 管理器中实现与 root 相关的调用。
添加与数据存储无关的场景测试,以测试新功能。
升级影响¶
无
测试¶
将根据需要添加管理器单元测试。
将实现与数据存储无关的场景测试,以测试相关功能。
文档影响¶
为 Cassandra 数据存储记录新启用的功能。
参考资料¶
- 1(1,2,3)
Cassandra 用户/数据库实现审查: https://review.openstack.org/#/c/206739/
附录¶
无