Kubernetes PV com armazenamento em bloco pela internet - Seguro?

1

Estou tentando criar um Volume Persistente no meu cluster k8s com o armazenamento do DigitalOcean Block, usando o driver CSI .

Funciona bem, mas também quero saber que isso é seguro até mesmo para produção.

Ainda estou procurando documentos sobre segurança de PV, mas não consigo encontrar o que preciso.

Eu preciso da sua opinião. Obrigado.

    
por Yechan Kim 18.07.2018 / 09:12

1 resposta

1

Acho que seria útil considerar seguir os aspectos gerais de segurança para aplicá-los em seu cluster do Kubernetes, conforme descrito em Documentação do Kubernetes . Eu acho que pode ser um ponto de partida para você analisar potenciais brechas de segurança em seu Kubernetes Cluster. No entanto, você pode encontrar algumas informações sobre como proteger Persistent Volume storage abaixo.

O armazenamento de Volume Persistente (PV) consiste em estratégias essenciais que você pode aplicar usando seção SecurityContext em uma definição de conjunto, como Group IDs , user ID e SELinux valores. Group IDs são globais para o pod e aplicados a todos os contêineres definidos no pod. User IDs também pode ser global ou específico para cada contêiner. Na verdade, existem quatro seções com o objetivo de controlar o acesso a volumes:

supplementalGroups - Grupos suplementares são grupos regulares do Linux. Quando um processo é executado no Linux, ele tem um UID, um GID e um ou mais grupos suplementares normalmente usados para controlar o acesso ao armazenamento compartilhado, como NFS e 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 : define o ID do "grupo do sistema de arquivos" de um grupo, que é adicionado aos grupos suplementares do contêiner. O supplementalGroups ID é aplicado ao armazenamento compartilhado, enquanto o fsGroup ID é usado para armazenamento em bloco.

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

runAsUser - Os IDs de usuário podem ser definidos globalmente para todos os contêineres ou específicos para contêineres individuais (ou ambos):

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

seLinuxOptions - Possibilidade de atribuir rótulos SELinux a um contêiner com vários valores para políticas de segurança de controle de acesso para identificar o rótulo de nível:

  securityContext: 
    seLinuxOptions:
      level: "s0:c123,c456"
    
por 19.07.2018 / 11:50