SecurityContext安全上下文



  1. 简介 安全上下文(Security Context)定义 Pod 或 Container 的特权与访问控制设置。安全上下文 包括但不限于: ​自主访问控制(Discretionary Access Control)​:基于用户 ID(UID)和组 ID(GID).来判 定对对象(例如文件)的访问权限 ​安全性增强的 Linux(SELinux)​:为对象赋予安全性标签。 以特权模式或者非特权模式运行。 ​Linux 权能​: 为进程赋予 root 用户的部分特权而非全部特权。 ​AppArmor​:使用程序文件来限制单个程序的权限。 ​Seccomp​:限制一个进程访问文件描述符的权限。 ​AllowPrivilegeEscalation​:控制进程是否可以获得超出其父进程的特权。此布尔值直接控制 是否为容器进程设置no_new_privs 标志。当容器以特权模式运行或者具有 CAP_SYS_ADMIN权能时,AllowPrivilegeEscalation 总是为 true。 ​readOnlyRootFilesystem​:以只读方式加载容器的根文件系统。 2.1 配置pod的安全上下文 apiVersion: v1 kind: Pod metadata: name: security-context-demo spec: securityContext: runAsUser: 1000 runAsGroup: 3000 fsGroup: 2000 volumes: - name: sec-ctx-vol emptyDir: {} containers: - name: sec-ctx-demo image: busybox command: [ “sh”, “-c”, “sleep 1h” ] volumeMounts: - name: sec-ctx-vol

mountPath: /data/demo securityContext: allowPrivilegeEscalation: false 在配置文件中,该​runAsUser​字段指定对于Pod中的任何容器,所有进程都以用户ID 1000运行。 该​runAsGroup​字段为Pod中的任何容器中的所有进程指定主组ID3000。如果省略此字段,则容器的主要组ID将为root (0)。runAsGroup指定时,用户1000和组3000也将拥有所有创建的文件。 由于​fsGroup​指定了字段,因此容器的所有进程也是补充组ID2000的一部分。卷的所有者/data/demo和在该卷中创建的 任何文件都将是组ID 2000。 说明:‘privileged’(特权模式) ‘不等于’ root–>比如:root用户无法’关闭容器网卡’