【问题标题】:Azure kubernetes - Secure pod access to resourcesAzure kubernetes - 对资源的安全 pod 访问
【发布时间】:2021-01-14 19:59:56
【问题描述】:

我来自 Windows 操作系统背景,对 Linux 了解有限。

根据微软文档

为了让您的应用程序能够正确运行,Pod 应该以定义的用户或组而不是 root 身份运行。 pod 或容器的 securityContext 允许您定义诸如 runAsUser 或 fsGroup 之类的设置来承担适当的权限。只分配所需的用户或组权限,不要使用安全上下文作为承担额外权限的手段。 runAsUser、权限提升和其他 Linux 功能设置仅在 Linux 节点和 Pod 上可用。

他们提供了以下示例

kind: Pod
metadata:
  name: security-context-demo
spec:
  securityContext:
    fsGroup: 2000
  containers:
    - name: security-context-demo
      image: nginx:1.15.5
      securityContext:
        runAsUser: 1000
        allowPrivilegeEscalation: false
        capabilities:
          add: ["NET_ADMIN", "SYS_TIME"]

根据给定的描述,我了解到 pod 没有被授予 root 访问权限,并且在网络和时间上的访问权限受到限制。

runAsUser: 1000 & fsGroup: 2000 是什么意思?如何设置fsGroup

【问题讨论】:

    标签: azure kubernetes


    【解决方案1】:

    runAsUser: 1000 字段指定对于 Pod 中的任何 Container,所有进程都以用户 ID 1000 运行

    fsGroup: 2000 指定容器的所有进程也是补充组 ID 2000 的一部分。此组 ID 与挂载在 pod 中的 emptyDir 卷以及在该卷中创建的任何文件相关联。您应该记住,只有某些卷类型允许 kubelet 将卷的所有权更改为由 pod 拥有。如果卷类型允许这样做(如 emptyDir 卷类型),则拥有组 ID 将是 fsGroup

    fsGroup 要记住的一件事是,当您尝试从主机挂载文件夹时。由于 Docker 从主机挂载保留 UUID 和 GUID 的主机卷,因此 Docker 卷中的权限问题是可能的。运行容器的用户可能没有适当的权限来写入卷。

    可能的解决方案是使用与主机相同的 UUID 和 GUID 运行容器,或者在将主机文件夹挂载到容器之前更改其权限。

    有关fsGroup的更多详细信息,请参阅docs

    【讨论】:

    • 谢谢。是不是说 fsGroup 是在节点中创建的本地安全组?如果是这样,默认分配什么样的权限?当两个 Pod 部署在同一个节点上会发生什么?
    猜你喜欢
    • 1970-01-01
    • 2018-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-26
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多