OSSN/OSSN-0042
Keystone token 范围划分不提供安全益处
总结
Keystone 提供“范围划分”的 token,这些 token 被限制只能由单个项目使用。用户可能期望他们的范围划分 token 只能用于执行与其范围项目相关的操作,但事实并非如此。获得范围划分 token 的服务或其他方可以使用它来获取不同授权范围的 token,这可能被视为权限提升。
受影响的服务 / 软件
Keystone, Diablo, Essex, Folsom, Grizzly, Havana, Icehouse, Juno, Kilo
讨论
这不是 keystone 中的错误,而是一种设计特性,一些用户可能期望它能带来安全增强,但实际上并非如此。OSSG 发布此安全说明是为了突出这个问题。
OpenStack 中的许多操作会从用户那里获取 token,并将其传递给另一个服务以执行预期操作的一部分。这个 token 非常强大,可以用于为用户执行许多操作。范围划分的 token 似乎将其使用限制在授予其权限的项目和角色范围内,但也可以用于请求具有其他范围的 token。重要的是要注意,这仅适用于当前有效的 token。一旦 token 过期,就无法使用它来获取新的 token。
Token 范围划分有助于避免 token 的意外泄露,因为使用 token 与其他服务交互需要额外的步骤,即从 keystone 请求一个新的重新划分范围的 token。范围划分有助于审计跟踪并促进良好的编码实践。目前没有办法创建无法用于请求重新划分范围 token 的严格范围划分的 token。不能依赖范围划分的 token 来仅限制操作在该范围之内。
建议的操作
OpenStack 的用户和部署者不应依赖 token 的范围来限制可以使用它们执行的操作。
鼓励关注此问题的用户阅读 (OSSG 成员) Nathan Kinder 发布的关于此问题的博客文章以及一些潜在的未来解决方案。
联系方式 / 参考文献
- 作者:Robert Clark, IBM
- Nathan Kinder 关于 Token 范围划分:https://blog-nkinder.rhcloud.com/?p=101
- 此 OSSN:https://wiki.openstack.org/wiki/OSSN/OSSN-0042
- 原始 LaunchPad Bug:https://bugs.launchpad.net/ossn/+bug/1341816
- OpenStack Security ML:openstack-security@lists.openstack.org
- OpenStack Security Group:https://launchpad.net/~openstack-ossg