2.2. 客户端访问控制
libvirt的客户端访问控制框架允许系统管理员在客户端用户、受管对象和 API 操作之间设置精细的权限规则。这使得客户端连接可以锁定到一组最少的特权。
在默认配置中,libvirtd 守护进程有三个级别的访问控制:
- 所有连接都以未经身份验证的状态开始,其中唯一允许的 API 操作是完成身份验证所需的操作。
- 身份验证成功后,连接具有对所有 libvirt API 调用的完整、不受限制的访问权限,或者根据客户端连接源自的套接字将其锁定为"只读"操作。
- 访问控制框架允许经过身份验证的连接具有由管理员定义的细粒度权限规则。
libvirt 中的每个 API 调用都有一组权限,这些权限将针对使用的对象进行验证。如果 API 调用中设置了特定标志,还将检查进一步的权限。除了检查传递给 API 调用的对象外,一些方法还会过滤其结果。
2.2.1. 访问控制驱动程序 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
访问控制框架设计为可插拔系统,以便将来与任意访问控制技术集成。默认情况下使用
none 驱动程序,它根本不执行访问控制检查。目前,libvirt 支持将 polkit 用作真正的访问控制驱动程序。要了解如何使用 polkit 访问驱动程序,请参阅配置文档。
访问驱动程序在
/etc/libvirt/libvirtd.conf 配置文件中使用 access_drivers 参数进行配置。此参数接受一组访问控制驱动程序名称。如果请求多个访问驱动程序,则所有访问驱动程序都必须成功才能授予访问权限。要启用 'polkit' 作为驱动程序,请使用 augtool 命令:
augtool -s set '/files/etc/libvirt/libvirtd.conf/access_drivers[1]' polkit
# augtool -s set '/files/etc/libvirt/libvirtd.conf/access_drivers[1]' polkit
要将驱动程序设置为默认(没有访问控制),请输入以下命令:
augtool -s rm /files/etc/libvirt/libvirtd.conf/access_drivers
# augtool -s rm /files/etc/libvirt/libvirtd.conf/access_drivers
若要使
libvirtd.conf 所做的更改生效,请重新启动 libvirtd 服务。
systemctl restart libvirtd.service
# systemctl restart libvirtd.service