You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过SecurityContextConstraints实现OpenShift容器访问主机/proc目录

OpenShift 4.13:通过自定义SCC实现主机/proc只读访问(无需特权容器)

1. 定义自定义SecurityContextConstraints

创建host-proc-scc.yaml文件,配置仅允许挂载主机/proc且只读,同时最小化容器权限:

apiVersion: security.openshift.io/v1
kind: SecurityContextConstraints
metadata:
  name: host-proc-access
allowHostPaths:
- pathPrefix: "/proc"
  readOnly: true
allowPrivilegeEscalation: false
allowedCapabilities: []
defaultAddCapabilities: []
fsGroup:
  type: RunAsAny
priority: 10
readOnlyRootFilesystem: false
requiredDropCapabilities:
- ALL
runAsUser:
  type: RunAsAny
seLinuxContext:
  type: MustRunAs
supplementalGroups:
  type: RunAsAny
users: []
volumes:
- configMap
- downwardAPI
- emptyDir
- hostPath
- secret

应用该配置:

oc apply -f host-proc-scc.yaml

2. 配置服务账户并绑定SCC

在DaemonSet所在命名空间创建专用服务账户,将自定义SCC授权给它:

# 替换my-namespace为你的实际命名空间
oc create sa host-proc-sa -n my-namespace
oc adm policy add-scc-to-user host-proc-access -z host-proc-sa -n my-namespace

3. 调整DaemonSet配置

修改DaemonSet的YAML,指定服务账户,添加主机/proc挂载,同时关闭特权模式:

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: my-daemonset
  namespace: my-namespace
spec:
  selector:
    matchLabels:
      app: my-daemon
  template:
    metadata:
      labels:
        app: my-daemon
    spec:
      serviceAccountName: host-proc-sa
      containers:
      - name: my-container
        image: your-image:tag
        volumeMounts:
        - name: host-proc
          mountPath: /host/proc
          readOnly: true
        securityContext:
          privileged: false
          allowPrivilegeEscalation: false
      volumes:
      - name: host-proc
        hostPath:
          path: /proc
          type: Directory

应用DaemonSet配置:

oc apply -f your-daemonset.yaml

4. 验证权限与访问

进入容器检查主机/proc的访问情况,同时确认容器未处于特权模式:

# 替换pod-name为实际Pod名称
oc exec -n my-namespace <pod-name> -- ls /host/proc
# 查看容器运行用户与权限状态
oc exec -n my-namespace <pod-name> -- id

安全优化建议

  • 若不需要容器以root用户运行,可将SCC中runAsUser.type改为MustRunAsNonRoot,并确保镜像支持非root运行
  • 严格控制SCC的授权范围,仅将其绑定到需要访问主机/proc的服务账户
  • 保持主机/proc挂载为只读,杜绝容器修改主机系统参数的可能

内容的提问来源于stack exchange,提问作者Kavin Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 21:47:23