Я пытаюсь создать постоянный том на моем кластере 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"