4.2.6 设置 Pod 对象的安全上下文

Pod 对象的安全上下文用于设定 Pod 或容器的权限和访问控制功能,其支持设置的常用属性包括以下几个方面:

  • 基于用户ID(UID)和组ID(GID)控制访问对象(如文件)时的权限。
  • 以特权或非特权的方式运行。
  • 通过Linux Capabilities为其提供部分特征。
  • 基于 Seccomp 过滤进程的系统调用。
  • 基于 SELinux 的安全标签。
  • 是否能够进行权限升级。

Pod 对象的安全上下文定义在 spec.securityContext 字段中,而容器的安全上下文则定义在 spec.containers[].securityContext 字段中,且二者可嵌套使用的字段还有所不同。下面的配置清单示例为 busybox 容器定义了安全上下文,它以 uid 为 1000 的非特权用户运行容器,并禁止权限升级:

apiVersion: v1
kind: Pod
metadata:
    name: pod-with-securitycontext
spec:
    containers:
    - name: busybox
      image: busybox
      command: ["/bin/sh", "-c", "sleep 86400"]
      securityContext:
        runAsNonRoot: true
        runAsUser: 1000
        allowPrivilegeEscalation: false

将上面的配置清单保存与配置文件(如 pod-with-securitycontext.yaml 文件)中,而后创建于集群中即可验证容器进程的运行者身份:

**[terminal]
**[delimiter $ ]**[command kubectl apply -f pod-with-securitycontext.yaml]
**[delimiter $ ]**[command exec pod-with-securitycontext -- ps aux]
PID   USER     TIME  COMMAND
    1 1000      0:00 sleep 86400
    6 1000      0:00 ps aux

另外,可设置的安全上下文属性还有 fsGroup、seLinuxOptions、supplementalGroups、sysctls、capabilities 和 privileged 等,且 Pod 和容器各自支持的字段也有所不同,感兴趣的读者可按需对各属性进行测试。

results matching ""

    No results matching ""