Network policy e networking con privilegi minimi
Protegga il traffico tra container con network policy deny-by-default, regole di autorizzazione esplicite e il principio del privilegio minimo applicato al networking.
Network policy e networking con privilegi minimi è una lezione Docker & DevOps Fundamentals gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Docker & DevOps Fundamentals, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Docker & DevOps Fundamentals include 4 lezioni in totale.
L'apertura predefinita è rischiosa
Per impostazione predefinita, in genere i container di un cluster possono comunicare con tutti gli altri container. Un Pod compromesso può quindi raggiungere liberamente database e servizi interni. Le policy di rete chiudono questa possibilità.
Il minimo privilegio per la rete
Il principio del minimo privilegio si applica anche al traffico: un servizio dovrebbe accettare ed effettuare solo le connessioni di cui ha realmente bisogno, senza eccezioni.
Che cos'è una NetworkPolicy?
Una NetworkPolicy è un oggetto Kubernetes che seleziona i Pod in base alle label e specifica quale traffico in ingresso e in uscita è consentito. Un plugin CNI (Calico, Cilium) la applica.
È necessario un CNI che applichi le regole
Come Ingress richiede un controller, le NetworkPolicy richiedono un CNI che le supporti. Se il plugin le ignora, le regole non producono alcun effetto senza segnalare errori.
Negare per impostazione predefinita il traffico in ingresso
Iniziate negando tutto il traffico in ingresso verso un namespace, quindi consentite solo ciò che serve. Un podSelector vuoto corrisponde a tutti i Pod.
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default-deny-ingress
spec:
podSelector: {}
policyTypes:
- IngressConsentire traffico specifico
A questo punto consentite solo ai Pod frontend di raggiungere l'API sulla porta 8080. Tutto il resto rimane bloccato.
spec:
podSelector:
matchLabels:
app: api
ingress:
- from:
- podSelector:
matchLabels:
app: frontend
ports:
- port: 8080Limitare il traffico in uscita
Potete limitare anche il traffico in uscita; ad esempio, potete consentire a un Pod di raggiungere soltanto il database, impedendo a un Pod compromesso di contattare il server dell'attaccante.
spec:
podSelector:
matchLabels:
app: api
policyTypes:
- Egress
egress:
- to:
- podSelector:
matchLabels:
app: dbSelector di namespace
Le regole possono usare namespaceSelector per consentire traffico tra namespace soltanto se proviene da namespace attendibili, una soluzione utile per i servizi condivisi della piattaforma.
from:
- namespaceSelector:
matchLabels:
team: platformConsentire il DNS
Un problema comune: una rigorosa regola di negazione predefinita per il traffico in uscita blocca anche il DNS, interrompendo la risoluzione dei nomi. Ricordate di consentire UDP/TCP 53 verso kube-dns.
egress:
- to: []
ports:
- protocol: UDP
port: 53Oltre Kubernetes
Gli utenti Docker ottengono un vantaggio analogo dalle reti definite dall'utente: solo i container sulla stessa rete possono raggiungersi, isolando le app non correlate.
docker network create --internal backendMentalità zero trust
La rete basata sul minimo privilegio vi avvicina al modello zero trust: considerate la rete ostile, autenticate e autorizzate ogni connessione e non consentite nulla per impostazione predefinita.
Verifica rapida
Qual è una strategia sensata da cui partire per le policy di rete?
Riepilogo
Ora potete limitare il traffico in sicurezza:
- Applicate la regola default-deny, quindi aggiungete regole esplicite di autorizzazione
- Controllate sia il traffico in ingresso sia quello in uscita in base a label e namespace
- Ricordate di consentire il DNS; è necessario un CNI che applichi le regole
- Le reti interne Docker offrono un isolamento simile
La rete basata sul minimo privilegio riduce il raggio d'impatto di qualsiasi violazione.
Domande Frequenti
La lezione «Network policy e networking con privilegi minimi» è gratuita?
Sì — il testo completo di «Network policy e networking con privilegi minimi» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Docker & DevOps Fundamentals, passa a CoddyKit PRO. Il corso Docker & DevOps Fundamentals include 4 lezioni in totale.
Cosa imparerò in «Network policy e networking con privilegi minimi»?
Protegga il traffico tra container con network policy deny-by-default, regole di autorizzazione esplicite e il principio del privilegio minimo applicato al networking. Eserciti Docker & DevOps Fundamentals con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Docker & DevOps Fundamentals?
Non è richiesta alcuna esperienza precedente. Docker & DevOps Fundamentals su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.
Quanto tempo richiede la lezione «Network policy e networking con privilegi minimi»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Docker & DevOps Fundamentals?
Sì. Ogni lezione Docker & DevOps Fundamentals include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Scansione di sicurezza delle immagini dei container
- Sicurezza dei container a runtime
- Gestione dei Secret e RBAC
- Network policy e networking con privilegi minimi