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 会使用命名空间的defaultServiceAccount运行 pod。Module资源无法运行特权工作负载,除非您手动启用它以使用privilegedSCC。
-
如果在 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}" ]
$ oc adm policy add-scc-to-user privileged -z "${serviceAccountName}" [ -n "${namespace}" ]
4.6.2. Pod 安全标准 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
OpenShift 运行一个同步机制,它根据使用的安全上下文自动设置命名空间 Pod 安全级别。不需要操作。