跳到主要内容

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 表示容器中的进程将以 GID3000 的组身份运行。

  • 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"]