13.2. 配置自定义 seccomp 配置集
您可以配置自定义 seccomp 配置集,允许您根据应用要求更新过滤器。这使得集群管理员能够更好地控制在 OpenShift Container Platform 中运行的工作负载的安全性。
seccomp 安全配置集列出了进程可以进行的系统调用(系统调用)。权限比 SELinux 更广泛,可限制操作,如全系统范围内的 write
。
13.2.1. 创建 seccomp 配置集
您可以使用 MachineConfig
对象来创建配置集。
seccomp 可以限制容器内的系统调用(系统调用),限制应用的访问权限。
先决条件
- 有集群管理员权限。
- 您已创建了自定义安全上下文约束 (SCC)。如需更多信息,请参阅附加资源。
流程
创建
MachineConfig
对象:apiVersion: machineconfiguration.openshift.io/v1 kind: MachineConfig metadata: labels: machineconfiguration.openshift.io/role: worker name: custom-seccomp spec: config: ignition: version: 3.2.0 storage: files: - contents: source: data:text/plain;charset=utf-8;base64,<hash> filesystem: root mode: 0644 path: /var/lib/kubelet/seccomp/seccomp-nostat.json
13.2.2. 设置自定义 seccomp 配置集
前提条件
- 有集群管理员权限。
- 您已创建了自定义安全上下文约束 (SCC)。如需更多信息,请参阅"附加资源"。
- 您已创建了自定义 seccomp 配置集。
流程
-
使用 Machine Config 将自定义 seccomp 配置集上传到
/var/lib/kubelet/seccomp/<custom-name>.json
。有关详细信息,请参阅"附加资源"。 通过引用创建的自定义 seccomp 配置集来更新自定义 SCC:
seccompProfiles: - localhost/<custom-name>.json 1
- 1
- 提供自定义 seccomp 配置集的名称。
13.2.3. 将自定义 seccomp 配置集应用到工作负载
前提条件
- 集群管理员已设置了自定义 seccomp 配置集。如需了解更多详细信息,请参阅 "设置自定义 seccomp 配置集"。
流程
通过设置
securityContext.seccompProfile.type
字段,将 seccomp 配置集应用到工作负载,如下所示:示例
spec: securityContext: seccompProfile: type: Localhost localhostProfile: <custom-name>.json 1
- 1
- 提供自定义 seccomp 配置集的名称。
另外,您可以使用 pod 注解
seccomp.security.alpha.kubernetes.io/pod: localhost/<custom-name>.json
。但是,此方法在 OpenShift Container Platform 4.16 中已弃用。
在部署过程中,准入控制器会验证以下内容:
- 用户角色允许的当前 SCC 的注解。
- Pod 允许包含 seccomp 配置集的 SCC。
如果 pod 允许 SCC,kubelet 会使用指定的 seccomp 配置集运行 pod。
确保 seccomp 配置集已部署到所有 worker 节点。
自定义 SCC 必须具有自动分配给 pod 的适当优先级,或满足 Pod 所需的其他条件,如允许 CAP_NET_ADMIN。