Kubernetes PV 通过互联网进行块存储——安全吗?

Kubernetes PV 通过互联网进行块存储——安全吗?

我正在尝试使用 DigitalOcean Block 存储在 k8s 集群上创建持久卷,使用CSI 驱动程序

它运行良好,但我还想知道它即使对于生产来说也是安全的。

我仍在寻找有关 PV 安全的文档,但找不到我需要的内容。

我需要你的意见。谢谢。

答案1

我认为考虑以下总体安全方面可能会有所帮助,并将其应用于 Kubernetes 集群,如下所述Kubernetes 文档。我想这可以作为您分析 Kubernetes 集群中潜在安全漏洞的起点。但是,您可以Persistent Volume在下面找到一些有关保护存储的信息。

持久卷 (PV)存储包含一些基本策略,您可以使用这些策略来应用安全上下文pod 定义中的部分,例如Group IDsuser IDSELinux值。 Group IDs对于 pod 而言是全局的,并应用于 pod 中定义的所有容器。User IDs也可以是全局的,也可以特定于每个容器。实际上,有四个部分旨在控制对卷的访问:

supplementalGroups- 补充组是常规 Linux 组。当进程在 Linux 中运行时,它具有 UID、GID 以及一个或多个通常用于控制对共享存储的访问的补充组,例如NFSGlusterFS

apiVersion: v1
    kind: Pod
    ...
    spec:
      containers:
      - name: ...
        volumeMounts:
        - name: nfs 
          mountPath: /usr/share/... 
      securityContext: 
        supplementalGroups: [5555] 
      volumes:
      - name: nfs 
        nfs:
          server: <nfs_server_ip_or_host>
          path: /opt/nfs

fsGroup- 定义 pod 的“文件系统组”ID,该 ID 将添加到容器的补充组中。适用supplementalGroups ID于共享存储,而fsGroup ID适用于块存储。

 kind: Pod
...
spec:
  containers:
  - name: ...
  securityContext: 
    fsGroup: 5555

runAsUser- 用户 ID 可以全局定义到所有容器,也可以特定于单个容器(或两者):

spec:
  containers:
  - name: ...
    securityContext:
      runAsUser: 1000100001

seLinuxOptions- 可以分配SELinux标签到具有多个值的容器中,用于访问控制安全策略来识别级别标签:

  securityContext: 
    seLinuxOptions:
      level: "s0:c123,c456"

相关内容