Azure kubernetes-对资源的安全pod访问

时间:2020-09-29 08:24:11

标签: azure kubernetes

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

根据Microsoft文档

为使您的应用程序正确运行,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: 1000fsGroup: 2000是什么意思?如何设置fsGroup

1 个答案:

答案 0 :(得分:2)

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

运行

fsGroup: 2000指定容器的所有进程也是补充组ID 2000的一部分。此组ID与安装在容器中的emptyDir卷以及创建的任何文件相关联在那个数量。您应该记住,只有某些卷类型允许kubelet更改要由Pod拥有的卷的所有权。如果卷类型允许使用此卷(作为emptyDir卷类型),则拥有组ID将为fsGroup

fsGroup要记住的一件事是,当您尝试从主机挂载文件夹时。当Docker装载主机卷并保留来自主机的UUID和GUID时,可能会在Docker卷中出现权限问题。运行该容器的用户可能没有适当的特权来写入该卷。

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

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