kubernetes资源对象之security context

2020-04-01  本文已影响0人  一舍

Security Context,即安全上下文,用于定义Pod或Container的权限和访问控制。

Kubernetes 提供了三种配置 Security Context 的方法:

容器级别

仅应用到指定的容器上,并且不会影响 Volume。

apiVersion: v1
kind: Pod
metadata:
  name: hello-world
spec:
  containers:
    - name: hello-world-container
      securityContext:
        privileged: true

Pod级别

应用到 Pod 内所有容器,会影响 Volume。

apiVersion: v1
kind: Pod
metadata:
  name: hello-world
spec:
  containers:
  securityContext:
    fsGroup: 1234
    supplementalGroups: [5678]
    seLinuxOptions:
      level: "s0:c123,c456"

PSP,集群级别

PSP 是集群级的 Pod 安全策略,自动为集群内的 Pod 和 Volume 设置 Security Context。

支持的控制项

privileged 运行特权容器
defaultAddCapabilities 可添加到容器的 Capabilities
requiredDropCapabilities 会从容器中删除的 Capabilities
allowedCapabilities 允许使用的 Capabilities 列表
volumes 控制容器可以使用哪些 volume
hostNetwork 允许使用 host 网络
hostPorts 允许的 host 端口列表
hostPID 使用 host PID namespace
hostIPC 使用 host IPC namespace
seLinux SELinux Context
runAsUser user ID
supplementalGroups 允许的补充用户组
fsGroup volume FSGroup
readOnlyRootFilesystem 只读根文件系统
allowedHostPaths 允许 hostPath 插件使用的路径列表
allowedFlexVolumes 允许使用的 flexVolume 插件列表
allowPrivilegeEscalation 允许容器进程设置
defaultAllowPrivilegeEscalation 默认是否允许特权升级

RunAsUser

SELinux

SupplementalGroups

FSGroup

主机网络

允许的主机路径

控制卷

通过设置 PSP 卷字段,能够控制具体卷类型的使用。

apiVersion: extensions/v1beta1
kind: PodSecurityPolicy
metadata:
  name: permissive
spec:
  seLinux:
    rule: RunAsAny
  supplementalGroups:
    rule: RunAsAny
  runAsUser:
    rule: RunAsAny
  fsGroup:
    rule: RunAsAny
  hostPorts:
  - min: 8000
    max: 8080
  volumes:
  - '*'
上一篇 下一篇

猜你喜欢

热点阅读