Назад | Перейти на главную страницу

Kubernetes PV с блочным хранилищем через Интернет - безопасно?

Я пытаюсь создать постоянный том на моем кластере k8s с блочным хранилищем DigitalOcean, используя Драйвер CSI.

Он работает нормально, но я также хочу знать, что это безопасно даже для производства.

Я все еще ищу документы по PV-безопасности, но не могу найти то, что мне нужно.

Мне нужно твое мнение. Спасибо.

Я думаю, что было бы полезно рассмотреть следующие общие аспекты безопасности, чтобы применить их к вашему кластеру Kubernetes, как описано в Документация Kubernetes. Думаю, это может стать отправной точкой для анализа потенциальных нарушений безопасности в вашем кластере Kubernetes. Однако вы можете найти некоторую информацию о защите Persistent Volume хранилище ниже.

Постоянный объем (PV) хранилище состоит из основных стратегий, которые вы можете применять, используя SecurityContext раздел в определении модуля, например Group IDs, то user ID, и SELinux ценности. Group IDs являются глобальными для модуля и применяются ко всем контейнерам, определенным в модуле. User IDs также может быть глобальным или специфичным для каждого контейнера. Собственно, есть четыре раздела, предназначенных для управления доступом к томам:

supplementalGroups - Дополнительные группы - это обычные группы Linux. Когда процесс выполняется в Linux, у него есть UID, GID и одна или несколько дополнительных групп, обычно используемых для управления доступом к общему хранилищу, например NFS и GlusterFS:

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 - Определяет идентификатор "группы файловой системы" модуля, который добавляется в дополнительные группы контейнера. В supplementalGroups ID применяется к общему хранилищу, тогда как fsGroup ID используется для блочного хранилища.

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

runAsUser - Идентификаторы пользователей могут быть определены глобально для всех контейнеров или для отдельных контейнеров (или для обоих):

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

seLinuxOptions - Возможность назначить SELinux метки к контейнеру с несколькими значениями для политик безопасности управления доступом для определения метки уровня:

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