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 num único tema: reduzir o que pode ser atacado. Vamos rodar o contêiner como um utilizador não-root: o padrão num contêiner é root, e a instrução USER nos leva a um utilizador limitado,
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.
- utilizador não-root (USER)
- Rodar o processo do contêiner sob um utilizador 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.