Libvirt 设置管理员 root 密码

https://blueprints.launchpad.net/nova/+spec/libvirt-set-admin-password

Nova 提供了一个 API,允许用户为已经激活的虚拟机设置管理员密码。本规范的目的是利用 libvirt API set-user-password(版本 1.2.16 提供)来实现 Qemu/KVM 用户的功能。

问题描述

Nova 提供 API 来设置管理员密码,但 Qemu/KVM 用户无法利用它。

用例

用户希望能够使用“nova root-password <instance>”命令重置已经激活的实例的管理员密码。

项目优先级

无。

提议的变更

需要注意的是,此功能需要镜像安装 qemu 客户代理才能正常工作。大部分更改将在 Nova 的 libvirt 驱动程序中完成。

为了支持类 Unix(GNU/Linux)虚拟机和 Windows,默认行为将是更新类 Unix 虚拟机的用户名“root”的密码,以及 Windows 的“Administrator”密码。

为了提供更大的灵活性,并为用户提供更改不同用户名的管理员密码的方式,将引入一个新的镜像属性“os_admin_user”,让用户定义要更新的管理员用户名。

备选方案

此 API 的用例是允许管理员重新获得对已经运行的客户机的控制权,因为他们丢失了密码,或者允许管理员批量更改所有正在运行的客户机的密码,而无需手动/单独登录到每个客户机的控制台。注入密码功能并不能真正满足该需求。

数据模型影响

REST API 影响

安全影响

通知影响

其他最终用户影响

  • 最终用户需要在镜像内部安装 QEMU Guest Agent 守护程序,并设置镜像属性‘hw_qemu_guest_agent’。

  • 如果镜像请求更新不同的用户名,最终用户必须正确设置镜像属性‘os_admin_user’。

性能影响

其他部署者影响

开发人员影响

实现

负责人

主要负责人

sahid-ferdjaoui

工作项

  • 实现方法 set_admin_password

  • 扩展方法 set_admin_password 以读取特定管理员用户的镜像属性

依赖项

Libvirt 1.2.16

测试

  • 单元测试将涵盖新代码

  • nova API 已经通过测试覆盖

文档影响

需要记录新的 glance 镜像属性。

参考资料