0Pricing
Docker & DevOps Fundamentals · Lezione

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:
  - Ingress

Consentire 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: 8080

Limitare 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: db

Selector 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: platform

Consentire 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: 53

Oltre 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 backend

Mentalità 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

  1. Scansione di sicurezza delle immagini dei container
  2. Sicurezza dei container a runtime
  3. Gestione dei Secret e RBAC
  4. Network policy e networking con privilegi minimi
← Torna a Docker & DevOps Fundamentals