美文网首页
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