$ oc get scc kubevirt-controller -o yaml
了解 OpenShift 虚拟化安全性和授权。
OpenShift 虚拟化遵循restricted
Kubernetes Pod 安全标准 配置文件,旨在强制执行当前 Pod 安全的最佳实践。
虚拟机 (VM) 工作负载作为非特权 Pod 运行。
安全上下文约束 (SCC) 为kubevirt-controller
服务帐户定义。
OpenShift 虚拟化组件的 TLS 证书会自动更新和轮换。
默认情况下,虚拟机 (VM) 工作负载在 OpenShift 虚拟化中不会以 root 权限运行,并且没有需要 root 权限的支持的 OpenShift 虚拟化功能。
对于每个虚拟机,virt-launcher
Pod 会运行一个会话模式下的libvirt
实例来管理虚拟机进程。在会话模式下,libvirt
守护进程作为非 root 用户帐户运行,并且只允许来自以相同用户标识符 (UID) 运行的客户端的连接。因此,虚拟机作为非特权 Pod 运行,遵循最小权限的安全原则。
OpenShift 虚拟化组件的 TLS 证书会自动更新和轮换。无需手动刷新。
TLS 证书将根据以下计划自动删除和替换
KubeVirt 证书每天更新一次。
容器化数据导入控制器 (CDI) 证书每 15 天更新一次。
MAC 池证书每年更新一次。
自动 TLS 证书轮换不会中断任何操作。例如,以下操作将继续运行而不会中断
迁移
镜像上传
VNC 和控制台连接
OpenShift 虚拟化使用基于角色的访问控制 (RBAC) 来定义人员用户和服务帐户的权限。为服务帐户定义的权限控制 OpenShift 虚拟化组件可以执行的操作。
您还可以使用RBAC角色来管理用户对虚拟化功能的访问权限。例如,管理员可以创建一个RBAC角色,该角色提供启动虚拟机的所需权限。然后,管理员可以通过将该角色绑定到特定用户来限制访问权限。
通过使用集群角色聚合,OpenShift Virtualization扩展了默认的OpenShift Container Platform集群角色,以包含访问虚拟化对象的权限。
默认集群角色 | OpenShift Virtualization集群角色 | OpenShift Virtualization集群角色描述 |
---|---|---|
|
|
可以查看集群中所有OpenShift Virtualization资源但无法创建、删除、修改或访问它们的用户的角色。例如,用户可以看到虚拟机 (VM) 正在运行,但无法将其关闭或访问其控制台。 |
|
|
可以修改集群中所有OpenShift Virtualization资源的用户的角色。例如,用户可以创建虚拟机、访问虚拟机控制台和删除虚拟机。 |
|
|
对所有OpenShift Virtualization资源拥有完全权限的用户,包括删除资源集合的能力。用户还可以查看和修改OpenShift Virtualization运行时配置,该配置位于 |
以下权限授予容器化数据导入器 (CDI),包括cdi-operator
和cdi-controller
服务帐户。
CDI集群角色 | 资源 | 动词 |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
API组 | 资源 | 动词 |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
允许列表: |
|
|
允许列表: |
|
|
|
|
API组 | 资源 | 动词 |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
API组 | 资源 | 动词 |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
API组 | 资源 | 动词 |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
安全上下文约束 (SCC) 控制Pod的权限。这些权限包括Pod(容器集合)可以执行的操作以及它可以访问的资源。您可以使用SCC来定义Pod必须运行的一组条件才能被系统接受。
virt-controller
是一个集群控制器,它为集群中的虚拟机创建virt-launcher
Pod。这些Pod的权限由kubevirt-controller
服务帐户授予。
kubevirt-controller
服务帐户被授予额外的SCC和Linux功能,以便它可以创建具有适当权限的virt-launcher
Pod。这些扩展的权限允许虚拟机使用超出典型Pod范围的OpenShift Virtualization功能。
kubevirt-controller
服务帐户被授予以下SCC
scc.AllowHostDirVolumePlugin = true
这允许虚拟机使用hostpath卷插件。
scc.AllowPrivilegedContainer = false
这确保virt-launcher Pod不会作为特权容器运行。
scc.AllowedCapabilities = []corev1.Capability{"SYS_NICE", "NET_BIND_SERVICE"}
SYS_NICE
允许设置CPU亲和性。
NET_BIND_SERVICE
允许DHCP和Slirp操作。
您可以使用oc
工具查看kubevirt-controller
的SecurityContextConstraints
定义
$ oc get scc kubevirt-controller -o yaml
您可以使用oc
工具查看kubevirt-controller
集群角色的RBAC定义
$ oc get clusterrole kubevirt-controller -o yaml