跳转到: 导航, 搜索

OSSN/OSSN-0025


通过 Swift 可能暴露 Glance 镜像

总结

Glance 可以使用 Swift 作为后端存储虚拟机镜像。当 Glance 以这种方式配置(仅在多租户模式下),未经验证的用户即使 Glance 限制了对这些镜像的访问,也可以直接从 Swift 访问“公共”虚拟机镜像。

受影响的服务 / 软件

Glance, Swift, Havana, Icehouse

讨论

Swift 变量 'delay_auth_decision' 修改了 ACL,使其要么需要通过 Keystone 进行身份验证,要么允许未经身份验证的访问。当 'delay_auth_decision' 设置为 '1' 时,Swift ACL 使用通配符 (*) 来接受所有传入的响应。

当 Glance 配置为多租户模式时,这将允许所有租户以及未经验证的用户访问 Swift 的“公共”镜像。

当 Swift 和 Glance 以以下方式配置时,可能会发生这种情况

Swift proxy-server.conf 片段

 delay_auth_decision = 1

Glance glance-api.conf 片段

 default_store = swift
 swift_store_multi_tenant = True
 swift_store_create_container_on_put = True

一种发现 URL 的方法是拍摄公共镜像的快照。快照的 URL 与公共镜像的所有者 ID 结合使用,可以推断出公共镜像的 Swift URL。然后可以使用此 URL 匿名下载镜像。

建议的操作

如果您的 Swift 和 Glance 服务配置成易受攻击的方式,建议审计 Swift 镜像请求,以确定是否进行了未经授权的镜像请求。默认情况下,当访问镜像时,会向 Swift 日志文件记录一条消息。

将 Swift 的 'delay_auth_decision' 值设置为 '0' (False) 将需要 Keystone 身份验证才能访问 Swift 容器,仅建议用于使用 Keystone 进行身份验证的环境。

修改 Glance 配置以不在多租户模式下使用 Swift 可以缓解此问题,但具体取决于使用的配置,可能会引入其他问题。

实施替代后端(例如 Ceph)也可以消除此问题,但需要额外的知识来安全地安装和配置新的对象存储服务。

Swift 和 Glance 的配置项特定于给定的环境,因此在将其部署到生产环境之前,请测试配置。

联系方式 / 参考文献