4.6. 安全和权限
重要
加载内核模块是一个高度敏感的操作。加载后,内核模块具有在节点上执行任何类型的操作的所有可能权限。
4.6.1. ServiceAccounts 和 SecurityContextConstraints
内核模块管理 (KMM) 创建一个特权工作负载,以在节点上加载内核模块。该工作负载需要 ServiceAccounts
被允许来使用 privileged
SecurityContextConstraint
(SCC) 资源。
该工作负载的授权模型取决于 Module
资源的命名空间及其 spec。
-
如果设置了
.spec.moduleLoader.serviceAccountName
或.spec.devicePlugin.serviceAccountName
字段,则始终使用它们。 如果没有设置这些字段,则:
-
如果在 Operator 命名空间中创建了
Module
资源(默认为openshift-kmm
),则 KMM 使用其默认的、强大的ServiceAccount
来运行 worker 和设备插件 Pod。 -
如果在任何其他命名空间中创建了
Module
资源,则 KMM 会使用命名空间的default
ServiceAccount
运行 pod。Module
资源无法运行特权工作负载,除非您手动启用它以使用privileged
SCC。
-
如果在 Operator 命名空间中创建了
重要
openshift-kmm
是一个可信命名空间。
在设置 RBAC 权限时,请记住在 openshift-kmm
命名空间中创建 Module
资源的任何用户或 ServiceAccount
都会导致 KMM 在集群中的任何节点上运行特权工作负载。
要允许任何 ServiceAccount
使用 特权
SCC 并运行 worker 或设备插件 pod,您可以使用 oc adm policy
命令,如下例所示:
$ oc adm policy add-scc-to-user privileged -z "${serviceAccountName}" [ -n "${namespace}" ]
4.6.2. Pod 安全标准
OpenShift 运行一个同步机制,它根据使用的安全上下文自动设置命名空间 Pod 安全级别。不需要操作。
其他资源