0

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

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

包含以下代码段:

  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。

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

4

1 回答 1

0

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

在我看来MustRunAsMayRunAs. 让我们看看引入的Pull RequestMayRunAs

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

这种新策略的工作方式类似于“MustRunAs”策略,除了在 pod/容器安全上下文中未指定 GID 时,不会为相应的容器生成 GID。

这是 Realease 说明:

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

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

  • forMustRunAs将被设置为默认值(最小)
  • forMayRunAs不会被设置为默认值。
于 2020-08-13T14:30:04.500 回答