Blindagem: não-root e base mínima
Uma imagem que funciona não é necessariamente uma imagem segura para colocar em produção. Nesta aula, vamos focar em um único tema: reduzir o que pode ser atacado. Vamos rodar o contêiner como um usuário não-root: o padrão em um contêiner é root, e a instrução USER nos leva a um usuário limitado, de
Dê a um funcionário só as chaves de que ele precisa (não-root), e mantenha a caixa de ferramentas pequena (base mínima) — assim, mesmo que alguém invada, ele tem menos chaves e menos ferramentas para usar.
- usuário não-root (USER)
- Rodar o processo do contêiner sob um usuário com privilégios limitados em vez de root. A instrução USER no Dockerfile define isso e reduz o dano (raio de impacto) se um atacante conseguir executar código.
- base de imagem mínima
- Uma base pequena como alpine ou distroless, com poucos pacotes e ferramentas. Quanto menos coisas instaladas na imagem, menos vulnerabilidades possíveis e menor a superfície de ataque (attack surface).
- varredura de imagem (CVE)
- Uma verificação automática da imagem contra um banco de vulnerabilidades conhecidas (CVE) nas bibliotecas e na base. A varredura sinaliza pacotes vulneráveis, então você fixa versões e atualiza.