View a markdown version of this page

Usa le policy di rete con la modalità automatica di EKS - Amazon EKS

Contribuisci a migliorare questa pagina

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Per contribuire a questa guida per l'utente, scegli il GitHub link Modifica questa pagina su che si trova nel riquadro destro di ogni pagina.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Usa le policy di rete con la modalità automatica di EKS

Panoramica di

Man mano che i clienti scalano i propri ambienti applicativi utilizzando EKS, l'isolamento del traffico di rete diventa sempre più fondamentale per prevenire l'accesso non autorizzato alle risorse all'interno e all'esterno del cluster. Ciò è particolarmente importante in un ambiente multi-tenant con più carichi di lavoro non correlati eseguiti fianco a fianco nel cluster. Le policy di rete Kubernetes consentono di migliorare il livello di sicurezza della rete per i carichi di lavoro Kubernetes e le relative integrazioni con gli endpoint esterni del cluster. EKS Auto Mode supporta diversi tipi di policy di rete.

Isolamento di livello 3 e 4

Le policy di rete Kubernetes standard operano ai livelli 3 e 4 del modello di rete OSI e consentono di controllare il flusso di traffico a livello di indirizzo IP o porta all'interno del cluster Amazon EKS.

Casi d’uso

  • Segmenta il traffico di rete tra i carichi di lavoro per garantire che solo le applicazioni correlate possano comunicare tra loro.

  • Isola i tenant a livello di namespace utilizzando politiche per imporre la separazione della rete.

DNS-based applicazione

I clienti in genere implementano carichi di lavoro in EKS che fanno parte di un ambiente distribuito più ampio, alcuni dei quali devono comunicare con sistemi e servizi esterni al cluster (traffico in direzione nord). Questi sistemi e servizi possono essere nel AWS cloud o completamente all'esterno. AWS Le policy basate sul Domain Name System (DNS) consentono di rafforzare il livello di sicurezza adottando un approccio più stabile e prevedibile per prevenire l'accesso non autorizzato dai pod alle risorse o agli endpoint esterni del cluster. Questo meccanismo elimina la necessità di tracciare e consentire manualmente un elenco di indirizzi IP specifici. Proteggendo le risorse con un DNS-based approccio, si ha anche una maggiore flessibilità per aggiornare l'infrastruttura esterna senza dover allentare il livello di sicurezza o modificare le politiche di rete a causa delle modifiche ai server e agli host a monte. È possibile filtrare il traffico in uscita verso endpoint esterni utilizzando un nome di dominio completo (FQDN) o uno schema corrispondente per un nome di dominio DNS. Ciò offre la maggiore flessibilità di estendere l'accesso a più sottodomini associati a un particolare endpoint esterno del cluster.

Casi d’uso

  • Stabilisci un DNS-based approccio standardizzato per filtrare l'accesso da un ambiente Kubernetes agli endpoint esterni del cluster.

  • Accesso sicuro ai servizi in un ambiente multi-tenant. AWS

  • Gestisci l'accesso alla rete dai pod ai carichi di lavoro on-premise nei tuoi ambienti cloud ibridi.

Regole amministrative (o con ambito di cluster)

In alcuni casi, come negli scenari multi-tenant, i clienti potrebbero dover applicare uno standard di sicurezza di rete applicabile all'intero cluster. Invece di definire e mantenere ripetutamente una policy distinta per ogni namespace, è possibile utilizzare un'unica policy per gestire centralmente i controlli di accesso alla rete per i diversi carichi di lavoro nel cluster, indipendentemente dal rispettivo namespace. Questi tipi di policy consentono di estendere l'ambito di applicazione delle regole di filtro di rete applicate a livello 3, livello 4 e quando si utilizzano le regole DNS.

Casi d’uso

  • Gestisci centralmente i controlli di accesso alla rete per tutti (o un sottoinsieme di) carichi di lavoro nel tuo cluster EKS.

  • Definisci un livello di sicurezza di rete predefinito in tutto il cluster.

  • Estendi gli standard di sicurezza organizzativi all'ambito del cluster in un modo più efficiente dal punto di vista operativo.

Nozioni di base

Prerequisiti

  • Un cluster Amazon EKS con la modalità automatica di EKS abilitata

  • kubectl configurato per connettersi al cluster

Fase 1: abilitare il controller della policy di rete

Per utilizzare le policy di rete con EKS Auto Mode, devi prima abilitare il Network Policy Controller applicando a ConfigMap al tuo cluster.

  1. Crea un file denominato enable-network-policy.yaml con i seguenti contenuti:

    apiVersion: v1 kind: ConfigMap metadata: name: amazon-vpc-cni namespace: kube-system data: enable-network-policy-controller: "true"
  2. Applicalo ConfigMap al tuo cluster:

    kubectl apply -f enable-network-policy.yaml

Passaggio 2: creare e testare le politiche di rete

Il cluster della modalità automatica di EKS è ora configurato per supportare le policy di rete di Kubernetes. Puoi testarlo con la Demo delle policy di rete con Stars per Amazon EKS.

Passaggio 3: modifica della configurazione del Network Policy Agent nella classe Node (opzionale)

Facoltativamente, è possibile creare una nuova classe di nodi per modificare il comportamento predefinito del Network Policy Agent sui nodi o abilitare la registrazione degli eventi di Network Policy. A tale scopo, seguire queste fasi:

  1. Crea o modifica un file YAML di classe del nodo (ad esempio, nodeclass-network-policy.yaml) con i seguenti contenuti:

    apiVersion: eks.amazonaws.com/v1 kind: NodeClass metadata: name: network-policy-config spec: # Optional: Changes default network policy behavior networkPolicy: DefaultAllow # Optional: Enables logging for network policy events networkPolicyEventLogs: Enabled # Include other Node Class configurations as needed
  2. Applica la configurazione di classe del nodo al cluster:

    kubectl apply -f nodeclass-network-policy.yaml
  3. Verifica che la classe del nodo sia stata creata:

    kubectl get nodeclass network-policy-config
  4. Aggiorna il pool di nodi per utilizzare questa classe di nodi. Per ulteriori informazioni, consulta Crea un pool di nodi per la modalità automatica di EKS.

Come funziona?

DNS-based politica di rete

Illustrazione del flusso di lavoro quando una DNS-based politica viene applicata in EKS Auto
Illustrazione del flusso di lavoro quando una DNS-based politica viene applicata in EKS Auto
  1. Il team della piattaforma applica una DNS-based policy al cluster EKS.

  2. Il Network Policy Controller è responsabile del monitoraggio della creazione delle politiche all'interno del cluster e quindi della riconciliazione degli endpoint delle politiche. In questo caso d'uso, il controller delle policy di rete indica all'agente del nodo di filtrare le richieste DNS in base ai domini consentiti nella policy creata. I nomi di dominio sono elencati nell'elenco consentito utilizzando l'FQDN o un nome di dominio che corrisponde a uno schema definito nella configurazione delle risorse Kubernetes.

  3. Il carico di lavoro A tenta di risolvere l'IP per un endpoint esterno al cluster. La richiesta DNS passa innanzitutto attraverso un proxy che filtra tali richieste in base all'elenco di autorizzazioni applicato tramite la politica di rete.

  4. Dopo che la richiesta DNS è passata attraverso l'elenco dei filtri DNS consentiti, il proxy la inoltra a CoreDNS,

  5. CoreDNS a sua volta invia la richiesta al resolver DNS esterno (Amazon Route 53 Resolver) per ottenere l'elenco degli indirizzi IP dietro il nome di dominio.

  6. Gli IP risolti con TTL vengono restituiti nella risposta alla richiesta DNS. Questi IP vengono quindi scritti in una mappa eBPF che viene utilizzata nella fase successiva per l'applicazione del livello IP.

  7. Le sonde eBPF collegate all'interfaccia Pod veth filtreranno quindi il traffico in uscita dal carico di lavoro A all'endpoint esterno del cluster in base alle regole in vigore. Ciò garantisce che i pod possano inviare solo traffico esterno al cluster agli IP dei domini consentiti elencati. La validità di questi IP si basa sul TTL recuperato dal resolver DNS esterno (Amazon Route 53 Resolver).

Utilizzo dell'Application Network Policy

ApplicationNetworkPolicyCombina le funzionalità delle policy di rete standard di Kubernetes con il filtro basato su DNS a livello di namespace utilizzando un'unica Custom Resource Definition (CRD). Pertanto, può essere utilizzato per: ApplicationNetworkPolicy

  1. Definire le restrizioni ai livelli 3 e 4 dello stack di rete utilizzando blocchi IP e numeri di porta.

  2. Definizione di regole che operano al livello 7 dello stack di rete e che consentono di filtrare il traffico in base agli FQDN.

Importante

Le regole basate sul DNS definite utilizzando il ApplicationNetworkPolicy sono applicabili solo ai carichi di lavoro eseguiti nelle istanze EKS Auto EC2. Mode-launched ApplicationNetworkPolicysupporta tutti i campi dello standard KubernetesNetworkPolicy, con un filtro FQDN aggiuntivo per le regole di uscita.

avvertimento

Non utilizzare lo stesso nome per un ApplicationNetworkPolicy e all'interno dello stesso namespace. NetworkPolicy Se i nomi si scontrano, gli PolicyEndpoints oggetti risultanti potrebbero non riflettere correttamente nessuna delle due politiche. Entrambe le risorse vengono accettate senza errori, il che rende difficile la diagnosi del problema.

Per risolvere un conflitto di denominazione, rinomina una ApplicationNetworkPolicy o le altre NetworkPolicy in modo che siano univoci all'interno dello spazio dei nomi, quindi verifica che gli PolicyEndpoints oggetti corrispondenti siano aggiornati correttamente.

Esempio

Nel cluster EKS Auto Mode è presente un carico di lavoro che deve comunicare con un'applicazione locale che si trova dietro un load balancer con un nome DNS. È possibile ottenere ciò utilizzando la seguente politica di rete:

apiVersion: networking.k8s.aws/v1alpha1 kind: ApplicationNetworkPolicy metadata: name: my-onprem-app-egress namespace: galaxy spec: podSelector: matchLabels: role: backend policyTypes: - Egress egress: - to: - ipBlock: { cidr: 10.100.0.10/32 } ports: - protocol: TCP port: 53 - protocol: UDP port: 53 - to: - domainNames: - "myapp.mydomain.com" ports: - protocol: TCP port: 8080

A livello di rete Kubernetes, ciò consentirebbe l'uscita da qualsiasi pod nel namespace «galaxy» etichettato con l'etichetta role: backend per connettersi al nome di dominio myapp.mydomain.com sulla porta TCP 8080 e a CoreDNS sulla porta 53. Inoltre, è necessario configurare la connettività di rete per il traffico in uscita dal VPC al data center aziendale.

Illustrazione del carico di lavoro in EKS Auto che comunica con le applicazioni in locale

Determinazione dell'indirizzo IP CoreDNS

Affinché l'applicazione risolva il DNS, deve essere autorizzata a comunicare con CoreDNS, che viene eseguito localmente su ogni istanza di EKS Auto Mode. L'indirizzo IP CoreDNS è derivato dall'intervallo Service CIDR configurato per il cluster e rimane fisso per tutta la durata del cluster. È quindi possibile determinarlo una volta e farvi riferimento direttamente nelle politiche di rete.

  1. Recupera il Service CIDR per il tuo cluster.

    Per i cluster IPv4:

    aws eks describe-cluster --name my-cluster --query 'cluster.kubernetesNetworkConfig.serviceIpv4Cidr' --output text

    Per i cluster IPv6:

    aws eks describe-cluster --name my-cluster --query 'cluster.kubernetesNetworkConfig.serviceIpv6Cidr' --output text
  2. Ricava l'indirizzo IP CoreDNS dal Service CIDR:

    • IPv4: utilizza l'indirizzo del CIDR. .10 Ad esempio 10.100.0.0/16 diventa 10.100.0.10/32.

    • IPv6: aggiungi a all'indirizzo di rete. Ad esempio fd12:3456:789a::/108 diventa fd12:3456:789a::a/128.

Politica di rete dell'amministratore (o del cluster)

Illustrazione dell'ordine di valutazione delle politiche di rete in EKS

Utilizzo della Cluster Network Policy

Quando si utilizza aClusterNetworkPolicy, le policy del livello di amministrazione vengono valutate per prime e non possono essere sovrascritte. Una volta valutate le politiche del livello di amministrazione, vengono utilizzate le politiche standard con ambito di namespace per eseguire le regole di segmentazione della rete applicate. Ciò può essere ottenuto utilizzando uno o. ApplicationNetworkPolicy NetworkPolicy Infine, verranno applicate le regole del livello di base che definiscono le restrizioni di rete predefinite per i carichi di lavoro del cluster. Queste regole del livello di base possono essere sostituite dalle policy con ambito di namespace, se necessario.

Esempio

Nel cluster è presente un'applicazione che si desidera isolare dai carichi di lavoro degli altri tenant. È possibile bloccare esplicitamente il traffico del cluster proveniente da altri namespace per impedire l'accesso di rete al namespace sensibile del carico di lavoro.

apiVersion: networking.k8s.aws/v1alpha1 kind: ClusterNetworkPolicy metadata: name: protect-sensitive-workload spec: tier: Admin priority: 10 subject: namespaces: matchLabels: kubernetes.io/metadata.name: earth ingress: - action: Deny from: - namespaces: matchLabels: {} # Match all namespaces. name: select-all-deny-all

Considerazioni

Comprendi l'ordine di valutazione delle policy

Le funzionalità delle politiche di rete supportate in EKS vengono valutate in un ordine specifico per garantire una gestione del traffico prevedibile e sicura. Pertanto, è importante comprendere il flusso di valutazione per progettare un sistema di sicurezza di rete efficace per il proprio ambiente.

  1. Criteri di livello amministrativo (valutati per primi): tutti i livelli di amministrazione ClusterNetworkPolicies vengono valutati prima di qualsiasi altra politica. All'interno del livello Amministratore, le politiche vengono elaborate in ordine di priorità (prima il numero con la priorità più bassa). Il tipo di azione determina cosa succede dopo.

    • Azione di rifiuto (precedenza massima): quando una politica di amministrazione con un'azione Nega corrisponde al traffico, tale traffico viene immediatamente bloccato indipendentemente da qualsiasi altra politica. Non vengono elaborate ClusterNetworkPolicy ulteriori NetworkPolicy regole. Ciò garantisce che i controlli di sicurezza a livello di organizzazione non possano essere sostituiti da policy a livello di namespace.

    • Consenti azione: dopo aver valutato le regole di rifiuto, le politiche di amministrazione con azioni Consenti vengono elaborate in ordine di priorità (prima il numero con la priorità più bassa). Quando un'azione Consenti corrisponde, il traffico viene accettato e non viene effettuata alcuna ulteriore valutazione della policy. Queste policy possono concedere l'accesso a più namespace in base a selettori di etichette, fornendo un controllo centralizzato su quali carichi di lavoro possono accedere a risorse specifiche.

    • Passare all'azione: le azioni passate nelle policy di livello amministrativo delegano il processo decisionale ai livelli inferiori. Quando il traffico corrisponde a una regola Pass, la valutazione ignora tutte le restanti regole di livello di amministratore per quel traffico e passa direttamente al livello. NetworkPolicy Ciò consente agli amministratori di delegare esplicitamente il controllo di determinati modelli di traffico ai team applicativi. Ad esempio, potresti utilizzare le regole Pass per delegare la gestione del traffico all'interno dello spazio dei nomi agli amministratori dello spazio dei nomi mantenendo controlli rigorosi sull'accesso esterno.

  2. Livello di policy di rete: se nessun criterio di livello di amministrazione corrisponde a Deny o Allow, o se corrisponde un'azione Pass, vengono valutate successivamente le risorse tradizionali e con ambito di namespace. ApplicationNetworkPolicy NetworkPolicy Queste policy forniscono un controllo dettagliato all'interno dei singoli namespace e sono gestite dai team applicativi. Namespace-scoped le policy possono essere solo più restrittive delle policy di amministrazione. Non possono sovrascrivere la decisione di rifiuto di una politica di amministrazione, ma possono limitare ulteriormente il traffico consentito o passato dai criteri di amministrazione.

  3. Politiche di amministrazione di livello base: se nessuna politica amministrativa o con ambito di namespace corrisponde al traffico, viene valutato il livello Baseline. ClusterNetworkPolicies Questi forniscono posizioni di sicurezza predefinite che possono essere sostituite da policy con ambito di namespace, consentendo agli amministratori di impostare impostazioni predefinite a livello di organizzazione e offrendo ai team la flessibilità di personalizzarle in base alle esigenze. Le politiche di base vengono valutate in ordine di priorità (prima il numero con la priorità più bassa).

  4. Nega predefinita (se nessuna politica corrisponde): questo comportamento di negazione per impostazione predefinita garantisce che siano consentite solo connessioni esplicitamente consentite, mantenendo un elevato livello di sicurezza.

Applicazione del principio del privilegio minimo

  • Inizia con politiche restrittive e aggiungi gradualmente le autorizzazioni in base alle esigenze. Inizia implementando le politiche negate per impostazione predefinita a livello di cluster, quindi aggiungi in modo incrementale le regole di autorizzazione man mano che convalidi i requisiti di connettività legittimi. Questo approccio obbliga i team a giustificare esplicitamente ogni connessione esterna, creando un ambiente più sicuro e verificabile.

  • Verifica e rimuovi regolarmente le regole delle policy inutilizzate: le policy di rete possono accumularsi nel tempo man mano che le applicazioni si evolvono, lasciando dietro di sé regole obsolete che espandono inutilmente la superficie di attacco. Implementa un processo di revisione regolare per identificare e rimuovere le regole politiche che non sono più necessarie, assicurandoti che il tuo livello di sicurezza rimanga rigoroso e manutenibile.

  • Se possibile, utilizza nomi di dominio specifici anziché schemi generici. Se da un lato i modelli jolly *.amazonaws.com offrono praticità, dall'altro consentono l'accesso a un'ampia gamma di servizi. Ove possibile, specifica nomi di dominio esatti, s3.us-west-2.amazonaws.com ad esempio per limitare l'accesso solo ai servizi specifici richiesti dalle applicazioni, riducendo il rischio di movimenti laterali in caso di compromissione del carico di lavoro.

Utilizzo delle policy in EKS DNS-based

  • Le regole basate sul DNS definite utilizzando il ApplicationNetworkPolicy sono applicabili solo ai carichi di lavoro eseguiti nelle istanze EKS Auto Mode-launched EC2. Se stai eseguendo un cluster in modalità mista (composto da nodi worker EKS Auto e non EKS Auto), le DNS-based regole sono efficaci solo nei nodi di lavoro in modalità EKS Auto (istanze gestite EC2).

Convalida delle politiche DNS

  • Usa cluster di staging che rispecchiano la topologia della rete di produzione per i test: il tuo ambiente di staging dovrebbe replicare l'architettura di rete, le dipendenze esterne e i modelli di connettività della produzione per garantire un test accurato delle policy. Ciò include configurazioni VPC corrispondenti, comportamento di risoluzione DNS e accesso agli stessi servizi esterni richiesti dai carichi di lavoro di produzione.

  • Implementa test automatici per percorsi di rete critici: crea test automatici che convalidano la connettività ai servizi esterni essenziali come parte della tua pipeline. CI/CD Questi test dovrebbero verificare che siano consentiti flussi di traffico legittimi mentre le connessioni non autorizzate sono bloccate, garantendo una convalida continua che le politiche di rete mantengano il corretto livello di sicurezza man mano che l'infrastruttura si evolve.

  • Monitora il comportamento delle applicazioni dopo le modifiche alle policy: dopo aver implementato politiche di rete nuove o modificate in produzione, monitora attentamente i log delle applicazioni, i tassi di errore e le metriche delle prestazioni per identificare rapidamente eventuali problemi di connettività. Stabilisci procedure di rollback chiare in modo da poter ripristinare rapidamente le modifiche alle policy se causano un comportamento imprevisto delle applicazioni o interruzioni del servizio.

Interazione con il firewall DNS di Amazon Route 53

Le policy di amministrazione e rete di EKS vengono valutate per prime a livello di pod quando viene avviato il traffico. Se una policy di rete EKS consente l'accesso a un dominio specifico, il pod esegue quindi una query DNS che raggiunge il Route 53 Resolver. A questo punto, vengono valutate le regole del firewall DNS di Route 53. Se il firewall DNS blocca la query sul dominio, la risoluzione DNS fallisce e la connessione non può essere stabilita, anche se la politica di rete EKS lo consente. Ciò crea livelli di sicurezza complementari: le policy di DNS-based rete EKS forniscono un controllo in uscita a livello di pod per i requisiti di accesso specifici delle applicazioni e i limiti di sicurezza multi-tenant, mentre il firewall DNS fornisce protezione contro i domini dannosi noti e applica le blocklist a livello di organizzazione. VPC-wide