强制远程控制台会话超时¶
https://blueprints.launchpad.net/nova/+spec/enforce-remote-console-session-timeout
目前提供 VNC 控制台包含 3 个部分
- 1 - 用于 Nova 实例的工作控制台。
一旦在 hypervisor 中创建了 Nova 实例,hypervisor 本身就会提供一个控制台,无需在实例内部进行额外的安装(根据 nova.conf)。要访问控制台,操作员可以使用 virsh console instance-xxx,它提供一个串行控制台(字符终端访问)并提示实例登录控制台。
- 2 - 通过浏览器提供计算节点外部的控制台访问。
当用户创建控制台 URL 以通过 Web 浏览器访问控制台时。
$ openstack console URL show <vm>
该命令调用 Nova API,Nova API 反过来通过 RPC 与计算服务通信,后者返回一个用于连接到现有控制台的新 URL。
该命令不会创建新的控制台,而是生成一个用于连接到现有控制台的 URL。该 URL 包含用于通过代理进行身份验证的令牌。
可以使用此 URL 连接到 Nova 实例控制台。控制台令牌用于与代理进行身份验证,从而可以建立新的会话,直到令牌 TTL 过期。即使在令牌过期后,现有的会话仍将继续工作,直到 TCP 连接关闭。
- 3- 控制器的 Nova 代理:桥接客户端浏览器和计算节点
当用户通过浏览器连接到提供的 URL 时,Nova 代理充当中间体。它建立到 hypervisor 的 WebSocket 连接,并将控制台代理到客户端。对于 VNC 控制台,Nova 代理提供一个包含在用户浏览器中运行的 JavaScript 应用程序的 HTML 页面,从而提供 VNC 客户端体验。对于串行控制台,Nova 代理提供一个直接的 WebSocket 连接,而无需预构建的客户端,允许用户创建与其 WebSocket 交互的自己的客户端。
[ Nova API, Compute, virt driver ]
[client browser] <======> <======> [target virtual machine]
[ Nova proxy ]
Controller Node Compute Node
问题描述¶
目前,没有机制可以强制在控制台令牌过期时终止控制台会话。用户可以继续访问控制台,超出令牌过期时间,需要解决此行为以增强安全措施。
用例¶
作为操作员,我希望确保使用控制台身份验证 TTL,控制台会话也会关闭,因此用户应自动从控制台断开连接。
提议的变更¶
实现一个定时器机制,以便在服务器端根据确切的令牌过期时间自动关闭目标套接字连接。这将中断客户端浏览器或其他应用程序上的实时控制台会话。
此外,引入一个新的 consoleauth 配置选项 enforce_session_timeout,允许操作员启用或禁用令牌过期检查。默认设置为禁用,其默认值为 False。这为基于其特定要求的现有控制台用户提供了灵活性。
备选方案¶
客户端轮询以检查令牌是否过期。但是,由于有许多 VNC 客户端,最好在服务器端解决此问题,以确保会话超时的一致性。
数据模型影响¶
无
REST API 影响¶
无
安全影响¶
此更改启用了严格的控制台访问时间跨度,虽然它本身并不能提高控制台访问的安全性,但它确保用户必须在指定时间段后重新进行身份验证。
通知影响¶
无
其他最终用户影响¶
无
性能影响¶
无
其他部署者影响¶
将添加一个新的可选配置选项。
开发人员影响¶
无
升级影响¶
无
实现¶
负责人¶
- 主要负责人
auniyal
功能联络人¶
- 功能联络人
auniyal
工作项¶
更新 Nova webproxy 代码
测试
依赖项¶
无
测试¶
功能
文档影响¶
发布说明
参考资料¶
无
历史¶
发布名称 |
描述 |
|---|---|
2024.1 Caracal |
引入 |