securityContext
2024年11月13日
一、securityContext
1.1 认识
在 Kubernetes
中,securityContext
是一个用于配置 Pod
和容器安全性的选项。通过 securityContext
,用户可以指定一些安全性参数来控制容器的权限、执行环境和行为,从而提高集群的安全性。securityContext
可以在 Pod
级别和容器级别进行配置:
-
Pod
级别:应用于整个Pod
中的所有容器。 -
容器级别:只应用于特定容器,并覆盖
Pod
级别的设置。
1.2 参数
Pod
级别配置项如下:
-
fsGroup
: 设置在Pod
中挂载的卷的文件系统组ID
。确保挂载卷对该组的用户具有读写权限,特别适合持久化存储。fsGroup: 2000
表示卷中的文件将属于GID 为 2000
的组。 -
runAsGroup
: 定义在Pod
中的所有容器进程的组ID (GID)
。指定组权限,以控制容器中的访问权限。runAsGroup: 3000
表示容器中的进程将以GID
为3000
的组身份运行。 -
runAsNonRoot
: 确保容器不以root
用户身份运行。防止以root
身份运行,降低安全风险。runAsNonRoot: true
强制要求所有容器使用非root
用户。
1.3 语法
apiVersion: v1
kind: Pod
metadata:
name: security-context-demo
spec:
securityContext:
fsGroup: 2000
runAsNonRoot: true
containers:
- name: myapp
image: busybox
command: ["sleep", "3600"]
securityContext:
runAsUser: 1000
runAsGroup: 3000
readOnlyRootFilesystem: true
allowPrivilegeEscalation: false
capabilities:
add: ["NET_ADMIN"]
drop: ["MKNOD"]