Capisce l'opzioni di applicazione di a pulitica di a rete cù Calico

Capisce l'opzioni di applicazione di a pulitica di a rete cù Calico

U plugin di rete Calico furnisce una larga gamma di pulitiche di rete cù una sintassi unificata per prutege l'ospiti di hardware, e macchine virtuali è pods. Queste pulitiche ponu esse applicate in un spaziu di nomi o esse pulitiche di rete globale chì si applicanu endpoint host (per prutege l'applicazioni in esecuzione direttamente nantu à l'ospite - l'ospite pò esse un servitore o una macchina virtuale) o endpoint di carichi di travagliu (per prutege l'applicazioni in esecuzione in cuntenituri o macchine virtuali ospitate). I pulitichi di Calico vi permettenu di applicà e misure di sicurezza in diversi punti in u percorsu di un pacchettu utilizendu opzioni cum'è preDNAT, unraracked è applyOnForward. Capisce cumu funziona queste opzioni pò aiutà à migliurà a sicurità è u rendiment di u vostru sistema generale. Questu articulu spiega l'essenza di queste opzioni di pulitica di Calico (preDNAT, unraracked è applyOnForward) applicate à l'endpoints di l'ospiti, cun enfasi nantu à ciò chì succede in i percorsi di processazione di pacchetti (catene iptabels).

Questu articulu assume chì avete una cunniscenza basica di cumu funziona e pulitiche di a rete di Kubernetes è Calico. Se no, ricumandemu di pruvà Tutorial di basi di pulitica di rete и tutoriale di prutezzione di l'ospite usendu Calico prima di leghje stu articulu. Aspittemu ancu chì avete una cunniscenza basica di u travagliu iptables in linux.

Calico pulitica di rete globale permette di applicà un settore di reguli d'accessu per etichette (à gruppi di ospiti è carichi di travagliu / pods). Questu hè assai utile si utilizate sistemi eterogenei inseme - macchine virtuali, un sistema direttamente nantu à hardware, o una infrastruttura kubernetes. Inoltre, pudete prutege u vostru cluster (nodi) utilizendu un settore di pulitiche dichjarative è applicà e pulitiche di rete à u trafficu entrante (per esempiu, attraversu u serviziu NodePorts o IPs Esterni).

À un livellu fundamentale, quandu Calico cunnetta un pod à a reta (vede u diagramma sottu), u cunnetta à l'ospitu utilizendu una interfaccia Ethernet virtuale (veth). U trafficu mandatu da u pod vene à l'ospitu da questa interfaccia virtuale è hè trattatu da a listessa manera chì s'ellu vinia da una interfaccia di rete fisica. Per automaticamente, Calico chjama sti interfacce caliXXX. Siccomu u trafficu passa per l'interfaccia virtuale, passa per iptables cum'è se u pod era à un hop di distanza. Dunque, quandu u trafficu vene à / da un pod, hè trasmessu da u puntu di vista di l'ospiti.

In un node Kubernetes chì esegue Calico, pudete mappe una interfaccia virtuale (veth) à una carica di travagliu cum'è seguita. In l'esempiu sottu, pudete vede chì veth#10 (calic1cbf1ca0f8) hè cunnessu à cnx-manager-* in u spaziu di nomi di calico-monitoring.

[centos@ip-172-31-31-46 K8S]$ sudo ip a
...
10: calic1cbf1ca0f8@if4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1440 qdisc noqueue state UP group default
    link/ether ee:ee:ee:ee:ee:ee brd ff:ff:ff:ff:ff:ff link-netnsid 5
    inet6 fe80::ecee:eeff:feee:eeee/64 scope link
       valid_lft forever preferred_lft forever
...

[centos@ip-172-31-31-46 K8S]$ calicoctl get wep --all-namespaces
...
calico-monitoring cnx-manager-8f778bd66-lz45m                            ip-172-31-31-46.ec2.internal 192.168.103.134/32
calic1cbf1ca0f8
...

Capisce l'opzioni di applicazione di a pulitica di a rete cù Calico

Siccomu Calico crea una interfaccia veth per ogni carica di travagliu, cumu impone e pulitiche? Per fà questu, Calico crea ganci in diverse catene di u percorsu di trasfurmazioni di pacchetti cù iptables.

U diagramma quì sottu mostra e catene implicate in l'elaborazione di pacchetti in iptables (o u subsistema netfilter). Quandu un pacchettu arriva per una interfaccia di rete, prima passa per a catena PREROUTING. Una decisione di routing hè allora presa, è basatu annantu à questu, u pacchettu passa per o INPUT (direttu à i prucessi d'ospiti) o FORWARD (direttu à un pod o un altru node in a reta). Da u prucessu lucale, u pacchettu passa à traversu u OUTPUT è poi POSTROUTING catena prima di esse mandatu falà u cable.

Nota chì u pod hè ancu una entità esterna (cunnessa à u veth) in quantu à u processu iptables. Riassumemu:

  • U trafficu trasmessu (nat, instradatu o da / da un pod) passa per e catene PREROUTING - FORWARD - POSTROUTING.
  • U trafficu à u prucessu di l'ospite lucale passa per a catena PREROUTING - INPUT.
  • U trafficu da u prucessu di l'ospite lucale passa per a catena OUTPUT - POSTROUTING.

Capisce l'opzioni di applicazione di a pulitica di a rete cù Calico

Calico furnisce opzioni di pulitica chì vi permettenu di applicà pulitiche in tutte e catene. Cù questu in mente, fighjemu e diverse opzioni di cunfigurazione di pulitica dispunibili in Calico. I numeri in a lista di l'opzioni sottu currispondenu à i numeri in u diagramma sopra.

  1. Politica di endpoint di carichi di travagliu (pod).
  2. Politica di l'endpoint host
  3. Opzione ApplyOnForward
  4. Politica PreDNAT
  5. Pulitica Untracked

Cuminciamu à guardà cumu e pulitiche sò applicate à l'endpoint di u carichi di travagliu (Kubernetes pods o OpenStack VM), è dopu fighjate l'opzioni di pulitica per l'endpoint host.

Carichi di travagliu Endpoints

Politica di l'endpoint di u travagliu (1)

Questa hè una opzione per prutege i vostri pods kubernetes. Calico supporta u travagliu cù Kubernetes NetworkPolicy, ma furnisce ancu pulitiche supplementari - Calico NetworkPolicy è GlobalNetworkPolicy. Calico crea una catena per ogni pod (workload) è ganci in i catene INPUT è OUTPUT per a carica di travagliu à a tavola di filtru di a catena FORWARD.

Host Endpoints

Politica di l'Ospitu Endpoint (2)

In più di CNI (interfaccia di rete di cuntainer), i pulitiche di Calico furniscenu a capacità di prutezzione di l'ospite stessu. In Calico, pudete creà un puntu finale di l'ospitu specificendu una cumminazione di l'interfaccia di l'ospite è, se ne necessariu, numeri di portu. L'applicazione di a pulitica per questa entità hè ottenuta utilizendu una tabella di filtru in e catene INPUT è OUTPUT. Comu pudete vede da u diagramma, (2) s'applicanu à i prucessi lucali nantu à u node / host. Vale à dì, se crea una pulitica chì s'applica à l'endpoint di l'ospitu, ùn affetterà micca u trafficu chì và à / da i vostri pods. Ma furnisce una sola interfaccia / sintassi per bluccà u trafficu per u vostru òspite è pods cù e pulitiche Calico. Questu simplifica assai u prucessu di gestisce e pulitiche per una reta eterogenea. A cunfigurazione di e pulitiche di l'endpoint host per rinfurzà a sicurità di u cluster hè un altru casu d'usu impurtante.

Politica ApplyOnForward (3)

L'opzione ApplyOnForward hè dispunibule in a pulitica di rete globale di Calico per permettà e pulitiche per esse applicate à tuttu u trafficu chì passa per l'endpoint host, cumpresu u trafficu chì serà trasmessu da l'ospite. Questu include u trafficu trasmessu à u pod locale o in ogni locu in a reta. Calico richiede chì sta paràmetra sia attivata per e pulitiche chì utilizanu PreDNAT è micca tracciatu, vede e seguenti sezzioni. Inoltre, ApplyOnForward pò esse usatu per monitorà u trafficu di l'ospiti in i casi induve un router virtuale o software NAT hè utilizatu.

Nota chì sè avete bisognu di applicà a listessa pulitica di rete à i prucessi di l'ospiti è i podi, allora ùn avete micca bisognu di utilizà l'opzione ApplyOnForward. Tuttu ciò chì duvete fà hè di creà una etichetta per u puntu di l'ospitu necessariu è u puntu finale di a carica di travagliu (pod). Calico hè abbastanza intelligente per rinfurzà a pulitica basatu annantu à l'etichette, indipendentemente da u tipu di endpoint (hostendpoint o workload).

Politica PreDNAT (4)

In Kubernetes, i porti di l'entità di serviziu ponu esse esposti esternamente utilizendu l'opzione NodePorts o, opzionalmente (quandu si usa Calico), annunziendu cù l'opzioni Cluster IPs o External IPs. Kube-proxy equilibra u trafficu entrante ligatu à un serviziu à i pods di u serviziu currispundenti utilizendu DNAT. Dopu questu, cumu impone e pulitiche per u trafficu chì vene da NodePorts? Per assicurà chì queste pulitiche sò applicate prima chì u trafficu hè processatu da DNAT (chì hè una mappatura trà host:port è serviziu currispundenti), Calico furnisce un paràmetru per globalNetworkPolicy chjamatu "preDNAT: true".

Quandu u pre-DNAT hè attivatu, sti pulitiche sò implementati in (4) in u diagram - in a tavola di mangle di a catena PREROUTING - immediatamente prima di DNAT. L'ordine abituale di e pulitiche ùn hè micca seguitu quì, postu chì l'applicazione di sti pulitiche si trova assai prima in a strada di trasfurmazioni di u trafficu. Tuttavia, e pulitiche preDNAT rispettanu l'ordine d'applicazione trà elli.

Quandu creanu pulitiche cù pre-DNAT, hè impurtante per esse attentu à u trafficu chì vulete processà è permettenu a maiuranza per esse rifiutata. U trafficu marcatu cum'è "permette" in a pulitica pre-DNAT ùn serà più verificatu da a pulitica hostendpoint, mentre chì u trafficu chì falla a pulitica pre-DNAT continuerà attraversu e catene rimanenti.
Calico hà fattu ubligatoriu per attivà l'opzione applyOnForward quandu si usa preDNAT, postu chì per definizione a destinazione di u trafficu ùn hè micca stata scelta. U trafficu pò esse direttu à u prucessu d'ospite, o pò esse trasmessu à un pod o un altru node.

Pulitica senza traccia (5)

E rete è l'applicazioni ponu avè grandi differenze in u cumpurtamentu. In certi casi estremi, l'applicazioni ponu generà parechje cunnessione di corta durata. Questu pò causà cuntrack (un cumpunente core di a pila di rete Linux) per esce da memoria. Tradizionalmente, per eseguisce questi tipi d'applicazioni in Linux, avete bisognu di cunfigurà manualmente o disattivà conntrack, o scrive e regule iptables per bypassà cuntrack. A pulitica Untracked in Calico hè una opzione più simplice è più efficaci se vulete processà e cunnessione u più prestu pussibule. Per esempiu, sè vo aduprate massiva memcache o cum'è una misura supplementaria di prutezzione contru DDOS.

Leghjite questu bloggu articulu (o a nostra traduzzione) per più infurmazione, cumprese teste di rendiment chì utilizanu a pulitica senza traccia.

Quandu impostate l'opzione "doNotTrack: true" in Calico globalNetworkPolicy, diventa una pulitica **senza traccia** è hè appiicata assai prima in u pipeline di processazione di pacchetti Linux. Fighjendu u diagramma sopra, e pulitiche micca tracciate sò applicate in e catene PREROUTING è OUTPUT in a tavula prima prima chì u seguimentu di cunnessione (conntrack) hè iniziatu. Quandu un pacchettu hè permessu da a pulitica senza traccia, hè marcatu per disattivà u seguimentu di cunnessione per quellu pacchettu. Significa:

  • A pulitica senza traccia hè applicata nantu à una basa per pacchettu. Ùn ci hè micca cuncettu di cunnessione (o flussu). A mancanza di cunnessione hà parechje cunsequenze impurtanti:
  • Se vulete permettà u trafficu di dumanda è di risposta, avete bisognu di una regula sia per l'entrata sia per l'outbound (perchè Calico tipicamente usa conntrack per marcà u trafficu di risposta cum'è permessu).
  • A pulitica senza traccia ùn funziona micca per i carichi di travagliu di Kubernetes (pods), perchè in questu casu ùn ci hè micca manera di seguità a cunnessione in uscita da u pod.
  • NAT ùn funziona micca bè cù pacchetti micca tracciati (poi u kernel guarda a mappa NAT in conntrack).
  • Quandu passa per a regula "permette à tutti" in a pulitica senza traccia, tutti i pacchetti seranu marcati cum'è senza traccia. Questu hè quasi sempre micca ciò chì vulete, per quessa, hè impurtante per esse assai selettivu nantu à i pacchetti permessi da e pulitiche senza traccia (è permettenu a maiò parte di u trafficu per passà per e pulitiche di traccia normale).
  • E pulitiche senza traccia sò applicate à u principiu di u pipeline di trasfurmazioni di pacchetti. Questu hè assai impurtante per capiscenu quandu creanu pulitiche Calico. Pudete avè una pulitica pod cù ordine: 1 è una pulitica senza traccia cù ordine: 1000. Ùn importa micca. A pulitica Untracked serà applicata prima di a pulitica per u pod. E pulitiche non tracciate rispettanu l'ordine di esecuzione solu trà elli.

Perchè unu di i scopi di a pulitica doNotTrack hè di rinfurzà a pulitica assai prima in u pipeline di processazione di pacchetti Linux, Calico rende ubligatoriu di specificà l'opzione applyOnForward quandu si usa doNotTrack. In riferimentu à u diagramma di trasfurmazioni di pacchetti, nota chì a pulitica senza traccia (5) hè applicata prima di ogni decisione di routing. U trafficu pò esse direttu à u prucessu d'ospite, o pò esse trasmessu à un pod o un altru node.

Risultati

Avemu guardatu e diverse opzioni di pulitica (Host endpoint, ApplyOnForward, preDNAT, è Untracked) in Calico è cumu si sò applicati longu u percorsu di trasfurmazioni di pacchetti. Capisce cumu travaglianu aiuta à sviluppà pulitiche efficaci è sicure. Cù Calico pudete aduprà una pulitica di rete globale chì si applica à una etichetta (un gruppu di nodi è pods) è applicà pulitiche cù diversi parametri. Questu permette à i prufessiunali di sicurezza è di cuncepimentu di rete di prutege convenientemente "tuttu" (tipi endpoint) à una volta utilizendu una sola lingua di pulitica cù e pulitiche Calico.

Ricunniscenza: Vogliu ringrazià Sean Crampton и Alexa Pollitta per a so rivista è infurmazione preziosa.

Source: www.habr.com

Add a comment