下面哪些是Security Context的设置项
A. SELinux
B. privileged
C. Seccomp
D. AllowPrivilegeEscalation
选择ABCD
Security Context的设置项包括runAsUser、fsGroup、allowPrivilegeEscalation和sysctls。
runAsUser:这个设置项用于指定容器默认用户的UID,确保容器以特定的用户身份运行,从而控制容器内的文件访问权限。例如,runAsUser: 1000 表示容器将以UID为1000的用户身份运行。
fsGroup:用于设置数据卷挂载后的目录属组,确保容器访问文件时具有适当的组权限。
allowPrivilegeEscalation:这个设置项用于控制是否允许容器内的进程提升权限。设置为false将不允许容器内的进程提升权限,增加了安全性。
sysctls:允许在容器中修改特定的系统调用参数,尽管只有一小部分的sysctls可以在每个容器的基础上进行修改,但这个设置项提供了对容器内部系统配置的精细控制。
这些设置项共同构成了Security Context,旨在提供对容器运行环境的细粒度安全控制,确保容器化应用的安全性和隔离性。
安全上下文(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:以只读方式加载容器的根文件系统。
apiVersion: v1
kind: Pod
metadata:
name: security-context-test
spec:
securityContext:
runAsUser: 1000
runAsGroup: 3000
fsGroup: 2000
volumes:
- name: sec-ct-vol
emptyDir: {}
containers:
- name: sec-ctx-test
image: busybox
command: [ "sh", "-c", "sleep 1h" ]
volumeMounts:
- name: sec-ct-vol
mountPath: /data/test
securityContext:
allowPrivilegeEscalation: false
在配置文件中,该runAsUser字段指定对于Pod中的任何容器,所有进程都以用户ID 1000运行。
该runAsGroup字段为Pod中的任何容器中的所有进程指定主组ID3000。如果省略此字段,则容器的主要组ID将为root(0)。runAsGroup指定时,用户1000和组3000也将拥有所有创建的文件。
由于fsGroup指定了字段,因此容器的所有进程也是补充组ID2000的一部分。卷的所有者/data/demo和在该卷中创建的任何文件都将是组ID 2000。