美文网首页
kubernetes资源对象之security context

kubernetes资源对象之security context

作者: 一舍 | 来源:发表于2020-04-01 10:14 被阅读0次

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

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

  • Container-level Security Context:应用于容器级别
  • Pod-level Security Context:应用于Pod级别
  • Pod Security Policy:应用于集群级别

容器级别

仅应用到指定的容器上,并且不会影响 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

  • MustRunAs - 必须配置一个 range。使用该范围内的第一个值作为默认值。验证是否不在配置的该范围内。
  • MustRunAsNonRoot - 要求提交的 Pod 具有非零 runAsUser 值,或在镜像中定义了 USER 环境变量。不提供默认值。
  • RunAsAny - 没有提供默认值。允许指定任何 runAsUser

SELinux

  • MustRunAs - 如果没有使用预分配的值,必须配置 seLinuxOptions。默认使用 seLinuxOptions
  • RunAsAny - 没有提供默认值。允许任意指定的 seLinuxOptions ID。

SupplementalGroups

  • MustRunAs - 至少需要指定一个范围。默认使用第一个范围的最小值。
  • RunAsAny - 没有提供默认值。允许任意指定的 supplementalGroups ID。

FSGroup

  • MustRunAs - 至少需要指定一个范围。默认使用第一个范围的最小值。
  • RunAsAny - 没有提供默认值。允许任意指定的 fsGroup ID。

主机网络

  • HostPorts , 默认为 emptyHostPortRange 列表通过 min(包含) and max(包含) 来定义,指定了被允许的主机端口。

允许的主机路径

  • AllowedHostPaths 是一个被允许的主机路径前缀的白名单。空值表示所有的主机路径都可以使用。

控制卷

通过设置 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:
  - '*'

相关文章

网友评论

      本文标题:kubernetes资源对象之security context

      本文链接:https://www.haomeiwen.com/subject/ntrouhtx.html