Horizon 添加了基于时间的 One-Time Password (TOTP) 身份验证支持,利用 Keystone 已经存在的双因素身份验证。现在,如果用户在 Keystone 上激活 TOTP,它也会在 Horizon 上激活。
这个特定功能请求来自 Infomaniak 的公共云客户的需求。他们希望 Horizon 具有 TOTP 功能,并认为这将提高安全性。如果 OpenStack 云上的用户密码泄露(被盗、笔记本电脑被黑等),TOTP 仍然需要第二台设备。TOTP 身份验证令牌通常存储在运行 Android 或 IOS 的手机上(但也有“numberstation”之类的,可以在任何基于 Debian 的操作系统上运行,包括 Mobian 平台,因此它实际上可以在任何手机上运行)。
作为 OpenStack 运营商,Infomaniak 的政策是始终发送补丁到上游,绝不将未经合并的补丁投入生产。一旦补丁被合并,通常可以将其回移植到非官方的 Debian 包回移植中,该回移植由 http://osbpo.debian.net 维护。这样,始终存在可用的升级路径,这非常重要。
此功能是对 OpenStack Horizon 的重要贡献,因为如果 OpenStack 出现问题,而 TOTP 仅在 Keystone 中启用,用户将无法连接到 Horizon。这将移除操作员访问 Web 界面以管理其 OpenStack 服务的权限。
Infomaniak 的站点可靠性工程师 Benjamin Lasseye 于 2023 年 4 月 24 日开始尝试不同的模拟图。一旦他对用户体验感到满意,他就继续开发此功能。第一个补丁集于 6 月 6 日发送,补丁于 8 月 29 日合并。这花费了令人惊讶的时间,因为从 6 月初到 7 月底,Horizon CI 出现故障,因此无法检查我们的补丁是否破坏了任何内容。Thomas 写信给邮件列表询问发生了什么,Horizon 团队能够以一种连贯的方式做出很好的回复:他们不得不解决与 JQuery 相关的依赖地狱。在这种情况下,只需要耐心等待。
然后,为了使一切正常,需要进行多达 29 次补丁迭代。Benjamin 非常有耐心,并解决了 Horizon 核心团队提出的所有建议,最终取得了这一成果。
所有这些都只有因为存在一种经过验证的将补丁合并到上游 OpenStack 的方法,并且该方法被仔细遵循。必须确保补丁中包含:
- 正确的文档
- 发行说明
- 一些有意义的单元或功能测试
在功能完成方面,Benjamin 简化了 OTP 功能的激活,默认情况下该功能处于关闭状态,以允许更平滑的升级。在获得更多反馈后,它可以被实现到 Horizon 的默认配置中。仍然有贡献的空间。Horizon 可以添加一个功能,允许管理员使用 Horizon 为用户激活 TOTP。即使任何人都可以贡献此功能,Infomaniak 也不计划这样做,因为自动化任务是在他们自己的 Web 界面中完成的,使用 Keystone API(通过 openstacksdk)。
要启用 TOTP,以下是一些指导和文档
- 首先,应在 Horizon 的 local_settings.py 中设置 OPENSTACK_KEYSTONE_MFA_TOTP_ENABLED=True,并且应将 ‘openstack_auth.plugin.totp.TotpPlugin’ 添加到 local_settings.py 中的 AUTHENTICATION_PLUGINS 中。请参阅 https://docs.openstack.org/horizon/latest/configuration/settings.html
- 然后,按照 Keystone 中 TOTP 部分的文档操作:https://docs.openstack.org/keystone/latest/admin/auth-totp.html
我们欢迎 OpenStack 运营商和开发人员社区继续我们在这里开始的工作,以继续优先考虑所有 OpenStack Horizon 用户的安全性!
感谢为 OpenStack 2023.2, Bobcat 构建、审查和合并此功能的 OpenStack 贡献者
- NEC Corporation 印度公司的技术负责人 Vishal Manchanda 非常乐于助人,并在补丁审查中写了许多评论。
- Red Hat 波兰的软件工程师 Radomir Dopieralskim 也帮助审查了补丁。
- Infomaniak 的 SRE Benjamin Lasseye 是补丁的主要作者。
- Infomaniak 的高级 OpenStack 管理员 Thomas Goirand 兼 Debian 包维护者,自 2011 年以来一直维护 OpenStack,他为 Benjamin 提供了建议并帮助他将补丁调整到足够好的状态,以便可以合并。
关于 Infomaniak:
Infomaniak 自 2014 年以来一直在生产中使用 OpenStack,首先提供 VM 服务,他们至今仍在提供。Infomaniak 现在运营一个适度的 大型公共云集群(10k 物理核心,超过 1PB NVMe Ceph 存储,为大约 4k 个 VM 提供支持)。Infomaniak 还提供市场上最好的定价,运行在最新的硬件上(AMD Epyc 和 Gen 4 NVMe)。所有内容都使用免费软件设置和维护,包括 集群管理工具、Ceilometer 的计费附加组件,或一些 Designate 工具。所有这些都上传到 Debian(由于 Thomas Goirand 自 2011 年以来一直在 Debian 中维护 OpenStack)。这项公共云服务已经运行两年了,Infomaniak 目前正在致力于设置第二个区域,该区域即将开放用于生产(希望在 2024 年初完成),使用更先进的硬件(AMD EPYC Genoa、PCI 5、DDR5 等)。
了解更多关于 OpenStack Bobcat 的信息,OpenStack 第 28 个版本于 2023 年 10 月 4 日发布。
发表评论