
Estou executando o minikube em um host MacOSX com um hipervisor VirtualBox. Ele compartilha uma pasta (/Users) com o host. Para que serve e quão seguro é isso, seguro o suficiente para executar meu cluster online?
Acho que é difícil escapar de um contêiner e depois de um pod e depois da VM, mas entrei lá simplesmente com minikube ssh
e, não sabia da pasta compartilhada e que o shell me permite explorar o host.
Responder1
Não, não é seguro. Imagine ter um pod implantado com uma imagem de contêiner que foi construída com uma diretiva USER daemon no Dockerfile, o que faz com que o contêiner seja executado sob o usuário daemon. E se um invasor obtiver acesso ao seu registro de imagem e inserir uma imagem diferente na mesma tag? A imagem do invasor está configurada para ser executada como usuário root. Quando o Kubernetes agenda uma nova instância do seu pod, o Kubelet baixará a imagem do invasor e executará qualquer código colocado nela. Embora os contêineres sejam em sua maioria isolados do sistema host, executar seus processos como root ainda é considerado uma prática inadequada. Por exemplo, quando um diretório host é montado no contêiner, se o processo em execução no contêiner estiver sendo executado como root, ele terá acesso total ao diretório montado, enquanto se estiver sendo executado como não-root, não terá. Para evitar o cenário de ataque descrito anteriormente, você pode especificar que o contêiner do pod precisa ser executado como um usuário não root, conforme mostrado na listagem a seguir.
apiVersion: v1
kind: Pod
metadata:
name: pod-run-as-non-root
spec:
containers:
- name: main
image: alpine
command: ["/bin/sleep", "999999"]
securityContext:
runAsNonRoot: true