【问题标题】:Shouldn't a restricted PodSecurityPolicy use 'MayRunAs' instead of 'MustRunAs'受限制的 PodSecurityPolicy 不应该使用“MayRunAs”而不是“MustRunAs”吗
【发布时间】:2020-11-26 22:00:42
【问题描述】:

k8s 文档有一个受限 PodSecurityPolicy 的示例:

https://kubernetes.io/docs/concepts/policy/pod-security-policy/#example-policies

包含以下sn-p:

  supplementalGroups:
    rule: 'MustRunAs'
    ranges:
      # Forbid adding the root group.
      - min: 1
        max: 65535
  fsGroup:
    rule: 'MustRunAs'
    ranges:
      # Forbid adding the root group.
      - min: 1
        max: 65535

我想知道为什么他们使用规则“MustRunAs”而不是“MayRunAs”。

“MustRunAs”的文档说明:“使用第一个范围的最小值作为默认值。”

因此,我的理解是,对于任何容器,supplementalGroup 和 fsGroup 都将默认为 1(如果未在 pod 或容器 securityContext 中另行指定),而如果使用了“MayRunAs”,则不会使用默认的supplementalGroup / fsGroup已分配。

因此,对限制性 PodSecurityPolicy 使用“MayRunAs”而不是“MustRunAs”不是更好吗?

【问题讨论】:

    标签: kubernetes podsecuritypolicy


    【解决方案1】:

    因此,对限制性 PodSecurityPolicy 使用“MayRunAs”而不是“MustRunAs”不是更好吗?

    在我看来MustRunAsMayRunAs 更严格。让我们看看Pull Request 是在哪里引入了MayRunAs

    在其他组策略中添加“MayRunAs”值。这种策略 允许为 FSGroupStrategy 定义一定范围的 GID 和 PSP 中的补充组策略。

    这种新策略的工作方式类似于“MustRunAs”策略,不同之处在于 如果在 pod/container 安全上下文中没有指定 GID,则没有 为各个容器生成 GID。

    这里是Realease Notes:

    PodSecurityPolicy 对象现在支持 MayRunAs 规则用于 fsGroupsupplementalGroups 选项。这允许为 pod/容器指定允许的 GID 范围,而无需像 MustRunAs 那样强制使用默认 GID。这意味着如果没有明确指定,应用此类策略的容器将不会使用任何 fsGroup/supplementalGroup GID,但指定的 GID 仍必须在根据策略的 GID 范围内。

    对于容器定义中未指定 GID 的两种情况:

    • MustRunAs 将设置为默认值(最小)
    • MayRunAs 不会被设置为默认值。

    【讨论】:

    • 这正是我提出问题的前提。为什么设置一个默认的补充组和一个默认的 fsgroup 会更好?这将如何限制更多?它只是向用户添加了更多可能不需要的组,因此打开了不必要的门,使其更加不安全。
    猜你喜欢
    • 1970-01-01
    • 2020-12-04
    • 2020-11-26
    • 2023-03-15
    • 2011-03-02
    • 2010-09-28
    • 1970-01-01
    • 1970-01-01
    • 2011-05-04
    相关资源
    最近更新 更多