Ngerteni Pilihan Penegakan Kebijakan Jaringan karo Calico

Ngerteni Pilihan Penegakan Kebijakan Jaringan karo Calico

Plugin jaringan Calico nyedhiyakake macem-macem kabijakan jaringan kanthi sintaks terpadu kanggo nglindhungi host hardware, mesin virtual lan pods. Kabijakan kasebut bisa ditrapake ing ruang jeneng utawa dadi kabijakan jaringan global sing ditrapake titik pungkasan host (kanggo nglindhungi aplikasi mlaku langsung ing inang - inang bisa dadi server utawa mesin virtual) utawa titik pungkasan beban kerja (kanggo nglindhungi aplikasi sing mlaku ing wadhah utawa mesin virtual sing di-host). Kawicaksanan Calico ngidini sampeyan ngetrapake langkah-langkah keamanan ing macem-macem titik ing jalur paket nggunakake opsi kayata preDNAT, unraracked, lan applyOnForward. Ngerteni cara opsi kasebut bisa mbantu ningkatake keamanan lan kinerja sistem sakabèhé. Artikel iki nerangake inti saka opsi privasi Calico iki (preDNAT, unraracked lan applyOnForward) Applied kanggo endpoints host, karo emphasis ing apa mengkono ing jalur Processing paket (rantai iptabels).

Artikel iki nganggep sampeyan duwe pangerten dhasar babagan cara kerja kabijakan jaringan Kubernetes lan Calico. Yen ora, disaranake nyoba tutorial privasi jaringan dhasar ΠΈ tutorial pangayoman inang nggunakake Calico sadurunge maca artikel iki. Kita uga ngarepake sampeyan duwe pangerten dhasar babagan karya kasebut iptables ing linux.

Calico kabijakan jaringan global ngijini sampeyan kanggo aplikasi pesawat saka aturan akses dening label (kanggo kelompok sarwa dumadi lan workloads / pods). Iki migunani banget yen sampeyan nggunakake sistem heterogen bebarengan - mesin virtual, sistem langsung ing hardware, utawa infrastruktur kubernetes. Kajaba iku, sampeyan bisa nglindhungi kluster (node) nggunakake sakumpulan kabijakan deklaratif lan ngetrapake kabijakan jaringan kanggo lalu lintas sing mlebu (contone, liwat layanan NodePorts utawa IP Eksternal).

Ing tingkat dhasar, nalika Calico nyambung pod menyang jaringan (ndeleng diagram ngisor), nyambung menyang inang nggunakake antarmuka Ethernet virtual (veth). Lalu lintas sing dikirim dening pod teka menyang host saka antarmuka virtual iki lan diproses kanthi cara sing padha kaya sing teka saka antarmuka jaringan fisik. Secara default, Calico menehi jeneng antarmuka kasebut caliXXX. Wiwit lalu lintas teka liwat antarmuka virtual, dadi liwat iptables kaya polong siji hop adoh. Mulane, nalika lalu lintas teka menyang / saka pod, diterusake saka titik inang tampilan.

Ing simpul Kubernetes sing nganggo Calico, sampeyan bisa map antarmuka virtual (veth) menyang beban kerja kaya ing ngisor iki. Ing conto ing ngisor iki, sampeyan bisa ndeleng yen veth # 10 (calic1cbf1ca0f8) disambungake menyang cnx-manager-* ing namespace 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
...

Ngerteni Pilihan Penegakan Kebijakan Jaringan karo Calico

Amarga Calico nggawe antarmuka veth kanggo saben beban kerja, kepiye carane ngetrapake kabijakan? Kanggo nindakake iki, Calico nggawe pancingan ing macem-macem rantai jalur pangolahan paket nggunakake iptables.

Diagram ing ngisor iki nuduhake rantai sing melu pangolahan paket ing iptables (utawa subsistem netfilter). Nalika paket teka liwat antarmuka jaringan, iku pisanan liwat chain PREROUTING. A kaputusan nuntun banjur digawe, lan adhedhasar iki, paket liwat salah siji INPUT (diarahake menyang proses host) utawa FORWARD (diarahake menyang pod utawa simpul liyane ing jaringan). Saka proses lokal, paket kasebut liwat OUTPUT lan banjur POSTROUTING chain sadurunge dikirim mudhun kabel.

Elinga yen pod uga minangka entitas eksternal (disambungake menyang veth) ing babagan pangolahan iptables. Ayo ngringkes:

  • Lalu lintas sing diterusake (nat, routed utawa menyang / saka pod) ngliwati rantai PREROUTING - FORWARD - POSTROUTING.
  • Lalu lintas menyang proses host lokal ngliwati rantai PREROUTING - INPUT.
  • Lalu lintas saka proses host lokal ngliwati rantai OUTPUT - POSTROUTING.

Ngerteni Pilihan Penegakan Kebijakan Jaringan karo Calico

Calico nyedhiyakake opsi kabijakan sing ngidini sampeyan ngetrapake kabijakan ing kabeh rantai. Kanthi atine, ayo goleki macem-macem opsi konfigurasi kebijakan sing kasedhiya ing Calico. Nomer ing dhaptar pilihan ing ngisor iki cocog karo nomer ing diagram ndhuwur.

  1. Kabijakan titik pungkasan beban kerja (pod).
  2. Kabijakan endpoint host
  3. Pilihan ApplyOnForward
  4. Kebijakan PreDNAT
  5. Kebijakan sing ora dilacak

Ayo diwiwiti kanthi ndeleng kepiye kabijakan ditrapake kanggo titik pungkasan beban kerja (kubernetes pods utawa OpenStack VMs), banjur deleng pilihan kebijakan kanggo endpoints host.

Titik Akhir Beban Kerja

Kebijakan Endpoint Beban Kerja (1)

Iki minangka pilihan kanggo nglindhungi pods kubernetes. Calico ndhukung nggarap Kubernetes NetworkPolicy, nanging uga menehi kabijakan tambahan - Calico NetworkPolicy lan GlobalNetworkPolicy. Calico nggawe chain kanggo saben pod (beban karya) lan pancingan ing INPUT lan OUTPUT chain kanggo workload kanggo Tabel Filter saka chain FORWARD.

Host Endpoints

Kabijakan Endpoint Host (2)

Saliyane CNI (antarmuka jaringan kontainer), kawicaksanan Calico nyedhiyakake kemampuan kanggo nglindhungi host kasebut. Ing Calico, sampeyan bisa nggawe endpoint host kanthi nemtokake kombinasi antarmuka host lan, yen perlu, nomer port. Penegakan kabijakan kanggo entitas iki digayuh kanthi nggunakake tabel panyaring ing rantai INPUT lan OUTPUT. Nalika sampeyan bisa ndeleng saka diagram, (2) padha ditrapake kanggo pangolahan lokal ing simpul / inang. Yaiku, yen sampeyan nggawe kabijakan sing ditrapake kanggo endpoint host, ora bakal mengaruhi lalu lintas menyang / saka pods sampeyan. Nanging nyedhiyakake antarmuka / sintaks siji kanggo ngalangi lalu lintas kanggo host lan pod sampeyan nggunakake kabijakan Calico. Iki banget nyederhanakake proses ngatur kabijakan kanggo jaringan heterogen. Konfigurasi kabijakan endpoint host kanggo nambah keamanan kluster minangka kasus panggunaan penting liyane.

Kebijakan ApplyOnForward (3)

Opsi ApplyOnForward kasedhiya ing kabijakan jaringan global Calico kanggo ngidini kabijakan ditrapake kanggo kabeh lalu lintas sing ngliwati titik pungkasan host, kalebu lalu lintas sing bakal diterusake dening host. Iki kalebu lalu lintas sing diterusake menyang pod lokal utawa ing ngendi wae ing jaringan. Calico mbutuhake setelan iki kanggo diaktifake kanggo kabijakan nggunakake PreDNAT lan untracked, ndeleng bagean ing ngisor iki. Kajaba iku, ApplyOnForward bisa digunakake kanggo ngawasi lalu lintas host ing kasus nalika router virtual utawa piranti lunak NAT digunakake.

Elinga yen sampeyan kudu ngetrapake kabijakan jaringan sing padha ing proses host lan pods, mula sampeyan ora perlu nggunakake pilihan ApplyOnForward. Sampeyan mung kudu nggawe label kanggo hostendpoint lan workload endpoint (pod) sing dibutuhake. Calico cukup pinter kanggo ngetrapake kabijakan adhedhasar label, preduli saka jinis endpoint (hostendpoint utawa workload).

Kebijakan PreDNAT (4)

Ing Kubernetes, port entitas layanan bisa kapapar eksternal nggunakake opsi NodePorts utawa, opsional (nalika nggunakake Calico), kanthi pariwara nggunakake opsi Cluster IP utawa IP Eksternal. Kube-proxy ngimbangi lalu lintas mlebu menyang layanan menyang polong layanan sing cocog nggunakake DNAT. Amarga iki, kepiye sampeyan ngetrapake kabijakan kanggo lalu lintas liwat NodePorts? Kanggo mesthekake yen kabijakan kasebut ditrapake sadurunge lalu lintas diproses dening DNAT (yaiku pemetaan antarane host:port lan layanan sing cocog), Calico nyedhiyakake parameter kanggo globalNetworkPolicy sing diarani "preDNAT: true".

Nalika pra-DNAT diaktifake, kawicaksanan iki dileksanakake ing (4) ing diagram - ing tabel mangle saka chain PREROUTING - langsung sadurunge DNAT. Urutan kabijakan sing biasa ora ditindakake ing kene, amarga aplikasi kabijakan kasebut kedadeyan luwih awal ing jalur pangolahan lalu lintas. Nanging, kabijakan preDNAT ngurmati urutan aplikasi ing antarane.

Nalika nggawe kabijakan nganggo pra-DNAT, penting kanggo ngati-ati babagan lalu lintas sing pengin diproses lan ngidini mayoritas ditolak. Lalu lintas sing ditandhani minangka 'ngidini' ing kabijakan pra-DNAT ora bakal dicenthang maneh dening kabijakan hostendpoint, dene lalu lintas sing gagal kabijakan pra-DNAT bakal diterusake liwat rantai sing isih ana.
Calico wis diwajibake kanggo ngaktifake pilihan applyOnForward nalika nggunakake preDNAT, amarga kanthi definisi tujuan lalu lintas durung dipilih. Lalu lintas bisa diarahake menyang proses host, utawa bisa diterusake menyang pod utawa simpul liyane.

Kebijakan sing ora dilacak (5)

Jaringan lan aplikasi bisa duwe beda gedhe ing prilaku. Ing sawetara kasus nemen, aplikasi bisa nggawe akeh sambungan short-urip. Iki bisa nyebabake conntrack (komponen inti saka tumpukan jaringan Linux) kehabisan memori. Cara tradisional, kanggo mbukak jinis aplikasi iki ing Linux, sampeyan kudu ngatur utawa mateni conntrack kanthi manual, utawa nulis aturan iptables kanggo ngliwati conntrack. Kabijakan sing ora dilacak ing Calico minangka pilihan sing luwih gampang lan luwih efisien yen sampeyan pengin ngolah sambungan kanthi cepet. Contone, yen sampeyan nggunakake massive memcache utawa minangka langkah tambahan pangayoman marang DDos.

Wacanen iki kirim blog (utawa terjemahan kita) kanggo informasi luwih lengkap, kalebu tes kinerja nggunakake kabijakan sing ora dilacak.

Nalika sampeyan nyetel pilihan "doNotTrack: true" ing Calico globalNetworkPolicy, iku dadi kabijakan **ora dilacak** lan diterapake banget ing jalur pipa pangolahan paket Linux. Deleng diagram ing ndhuwur, kabijakan sing ora dilacak ditrapake ing rantai PREROUTING lan OUTPUT ing tabel mentah sadurunge pelacakan sambungan (conntrack) diwiwiti. Nalika paket diijini dening kabijakan sing ora dilacak, ditandhani kanggo mateni pelacakan sambungan kanggo paket kasebut. Tegese:

  • Kabijakan sing ora dilacak ditrapake kanthi basis saben paket. Ora ana konsep sambungan (utawa aliran). Kurang sambungan duwe sawetara akibat penting:
  • Yen sampeyan pengin ngidini lalu lintas panjalukan lan respon, sampeyan butuh aturan kanggo mlebu lan metu (amarga Calico biasane nggunakake conntrack kanggo menehi tandha lalu lintas respon sing diidini).
  • Kabijakan sing ora dilacak ora bisa digunakake kanggo beban kerja Kubernetes (pod), amarga ing kasus iki ora ana cara kanggo nglacak sambungan metu saka pod.
  • NAT ora bisa digunakake kanthi bener karo paket sing ora dilacak (amarga kernel nyimpen pemetaan NAT ing conntrack).
  • Nalika ngliwati aturan "allow all" ing kabijakan sing ora dilacak, kabeh paket bakal ditandhani minangka ora dilacak. Iki meh ora kaya sing dikarepake, mula penting banget kanggo selektif babagan paket sing diidini dening kabijakan sing ora dilacak (lan ngidini umume lalu lintas ngliwati kabijakan sing dilacak normal).
  • Kawicaksanan sing ora dilacak ditrapake ing wiwitan pipa pangolahan paket. Iki penting banget kanggo ngerti nalika nggawe kabijakan Calico. Sampeyan bisa duwe kabijakan pod kanthi urutan: 1 lan kabijakan sing ora dilacak kanthi urutan: 1000. Ora bakal dadi masalah. Kabijakan sing ora dilacak bakal ditrapake sadurunge kabijakan kanggo pod. Kawicaksanan sing ora dilacak mung ngurmati urutan eksekusi ing antarane awake dhewe.

Amarga salah sawijining tujuan kabijakan doNotTrack yaiku ngetrapake kabijakan kasebut ing awal banget ing jalur pipa pangolahan paket Linux, Calico ndadekake prentah kanggo nemtokake pilihan applyOnForward nalika nggunakake doNotTrack. Ngarujuk marang diagram pangolahan paket, catheten yen kabijakan sing ora dilacak (5) ditrapake sadurunge keputusan rute. Lalu lintas bisa diarahake menyang proses host, utawa bisa diterusake menyang pod utawa simpul liyane.

Hasil

Kita ndeleng macem-macem opsi kabijakan (Host endpoint, ApplyOnForward, preDNAT, lan Untracked) ing Calico lan carane ditrapake ing jalur pangolahan paket. Ngerteni cara kerjane mbantu ngembangake kabijakan sing efektif lan aman. Kanthi Calico sampeyan bisa nggunakake kabijakan jaringan global sing ditrapake kanggo label (klompok kelenjar lan pods) lan ngetrapake kabijakan kanthi macem-macem parameter. Iki ngidini keamanan lan profesional desain jaringan bisa gampang nglindhungi "kabeh" (jinis endpoint) bebarengan nggunakake basa privasi siji karo kawicaksanan Calico.

Panuwun : Kula aturaken matur nuwun Sean Crampton ΠΈ Alexa Pollitta kanggo review lan informasi terkenal.

Source: www.habr.com

Add a comment