9.1 Aspetti principali della sicurezza delle reti Docker
In questa lezione daremo un'occhiata agli aspetti principali della sicurezza delle reti Docker, con raccomandazioni e best practice per proteggere i tuoi container e i tuoi dati.
Principali aspetti della sicurezza delle reti Docker
- Isolamento dei container
- Controllo degli accessi
- Crittografia dei dati
- Monitoraggio e audit
- Aggiornamenti e patch
9.2 Isolamento dei container
L'isolamento dei container è il primo passo per garantire la sicurezza delle reti Docker. Aiuta a minimizzare l'impatto delle potenziali vulnerabilità e previene l'accesso non autorizzato tra i container.
Utilizzo di reti personalizzate
Crea reti personalizzate per isolare i container e limitare la loro interazione solo ai servizi necessari.
docker network create --driver bridge my_secure_network
In Docker Compose puoi definire una rete personalizzata per ogni servizio.
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
Utilizzo delle regole inter-container
Docker permette di impostare regole inter-container per gestire l'interazione tra i container a livello di rete.
docker network connect --link <source_container>:<alias> <target_network> <container_name>
Esempio:
docker network connect --link container1:c1 multi-host-network container2
9.3 Controllo di accesso
Il controllo di accesso è importante per prevenire accessi non autorizzati ai container e alle reti.
Restrizione dell'accesso alle porte
Restringi l'accesso alle porte pubblicate utilizzando indirizzi IP e regole del firewall.
docker run -d -p 127.0.0.1:8080:80 --name my_secure_container nginx
Uso di ruoli e policy
Usa i ruoli e le policy di accesso per limitare i diritti degli utenti che gestiscono container e reti.
docker run -d --user <uid>:<gid> my_secure_container
9.4 Crittografia dei dati
La crittografia dei dati aiuta a proteggere i dati riservati sia a riposo che durante la trasmissione.
Crittografia dei dati a riposo
Usa la crittografia del file system per i volumi utilizzati dai container.
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
Crittografia dei dati durante la trasmissione
Utilizza TLS per crittografare i dati trasmessi tra i container e i servizi esterni.
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 Monitoraggio e audit
Il monitoraggio e l'audit permettono di tracciare l'attività dei container e delle reti, identificare potenziali minacce e reagire ad esse.
Log e metriche
Raccogli i log e le metriche dei container per analisi e monitoraggio.
docker logs <container_name>
Usa strumenti di monitoraggio, come Prometheus e Grafana, per tracciare lo stato dei container e delle reti.
Audit
Attiva l'audit per monitorare le azioni degli utenti e i cambiamenti nella configurazione dei container e delle reti.
docker events
9.6 Aggiornamenti e patch
Gli aggiornamenti regolari e le patch aiutano a proteggere i container e le reti da vulnerabilità conosciute.
Aggiornamento di Docker
Segui gli aggiornamenti di Docker e installa tempestivamente le versioni nuove.
sudo apt-get update
sudo apt-get install docker-ce
Aggiornamento delle immagini
Aggiorna regolarmente le immagini dei container alle ultime versioni che contengono correzioni di sicurezza.
docker pull nginx:latest
9.7 Esempi di migliori pratiche
Esempio 1: Creazione di reti isolate
Crea reti isolate per ogni componente della tua applicazione.
docker network create --driver bridge frontend_network
docker network create --driver bridge backend_network
Avvia i container nelle reti corrispondenti.
docker run -d --name frontend --network frontend_network nginx
docker run -d --name backend --network backend_network myapp
Esempio 2: Limitare l'accesso alle porte
Limita l'accesso alle porte dei container solo agli indirizzi IP e agli host necessari.
docker run -d -p 192.168.1.100:8080:80 --name restricted_container nginx
Esempio 3: Utilizzo di TLS per la crittografia
Configura i container per utilizzare TLS per proteggere i dati durante la trasmissione.
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