9.1 Aspectos principais de segurança de redes Docker
Nesta aula, vamos dar uma olhada nos principais aspectos de segurança de redes Docker, recomendações e melhores práticas pra garantir a proteção dos seus containers e dados.
Aspectos principais de segurança de redes Docker
- Isolamento de containers
- Controle de acesso
- Criptografia de dados
- Monitoramento e auditoria
- Atualizações e patches
9.2 Isolamento de containers
O isolamento de containers é o primeiro passo pra garantir a segurança de redes Docker. Ele ajuda a minimizar os impactos de vulnerabilidades potenciais e evita o acesso não autorizado entre containers.
Usando redes personalizadas
Crie redes personalizadas pra isolar containers, limitando a interação deles apenas aos serviços necessários.
docker network create --driver bridge my_secure_network
No Docker Compose, você pode definir uma rede personalizada para cada serviço.
version: '3.8'
services:
web:
image: nginx:latest
networks:
- my_secure_network
app:
image: myapp:latest
networks:
- my_secure_network
networks:
my_secure_network:
driver: bridge
Usando regras entre containers
O Docker permite definir regras entre containers pra gerenciar a interação entre eles no nível da rede.
docker network connect --link <source_container>:<alias> <target_network> <container_name>
Exemplo:
docker network connect --link container1:c1 multi-host-network container2
9.3 Controle de Acesso
O controle de acesso é importante pra evitar acesso não autorizado aos containers e redes.
Restrição de acesso às portas
Restrinja o acesso às portas publicadas usando endereços IP e regras de firewall.
docker run -d -p 127.0.0.1:8080:80 --name my_secure_container nginx
Uso de roles e políticas
Use roles e políticas de acesso pra limitar os direitos dos usuários que gerenciam os containers e redes.
docker run -d --user <uid>:<gid> my_secure_container
9.4 Criptografia de dados
Criptografia de dados ajuda a proteger dados confidenciais tanto em repouso quanto durante a transmissão.
Criptografia de dados em repouso
Use criptografia do sistema de arquivos para volumes usados pelos containers.
docker run -d --name my_secure_container --mount
type=volume,source=my_volume,destination=/data,volume-driver=local,volume-opt=o=bind,volume-opt=device=/mnt/secure_data nginx
Criptografia de dados durante a transmissão
Use TLS para criptografar dados transmitidos entre containers e serviços externos.
docker run -d -p 443:443 --name my_secure_container -v /path/to/cert.pem:/etc/nginx/cert.pem -v
/path/to/key.pem:/etc/nginx/key.pem nginx
9.5 Monitoramento e auditoria
O monitoramento e a auditoria permitem rastrear a atividade dos containers e das redes, identificar possíveis ameaças e reagir a elas.
Logs e métricas
Recolha logs e métricas dos containers para análise e monitoramento.
docker logs <container_name>
Use ferramentas de monitoramento, como Prometheus e Grafana, para rastrear o estado dos containers e das redes.
Auditoria
Ative a auditoria para rastrear ações dos usuários e alterações na configuração de containers e redes.
docker events
9.6 Atualizações e patches
Atualizações e patches regulares ajudam a proteger os containers e redes contra vulnerabilidades conhecidas.
Atualização do Docker
Fique de olho nas atualizações do Docker e instale as novas versões no tempo certo.
sudo apt-get update
sudo apt-get install docker-ce
Atualização das imagens
Atualize regularmente as imagens dos containers para as versões mais recentes, que incluem correções de segurança.
docker pull nginx:latest
9.7 Exemplos de Melhores Práticas
Exemplo 1: Criando redes isoladas
Crie redes isoladas para cada componente do seu aplicativo.
docker network create --driver bridge frontend_network
docker network create --driver bridge backend_network
Execute os containers nas respectivas redes.
docker run -d --name frontend --network frontend_network nginx
docker run -d --name backend --network backend_network myapp
Exemplo 2: Restringindo o acesso às portas
Restrinja o acesso às portas dos containers apenas para os endereços IP e hosts necessários.
docker run -d -p 192.168.1.100:8080:80 --name restricted_container nginx
Exemplo 3: Usando TLS para criptografia
Configure os containers para usar TLS para proteger os dados durante a transmissão.
docker run -d -p 443:443 --name tls_container -v /path/to/cert.pem:/etc/nginx/cert.pem -v
/path/to/key.pem:/etc/nginx/key.pem nginx
GO TO FULL VERSION