Suprasti tinklo politikos vykdymo parinktis naudojant Calico

Suprasti tinklo politikos vykdymo parinktis naudojant Calico

„Calico“ tinklo papildinys suteikia platų tinklo strategijų spektrą su vieninga sintaksė, kad apsaugotų aparatūros pagrindinius kompiuterius, virtualias mašinas ir blokus. Šios strategijos gali būti taikomos vardų erdvėje arba gali būti taikomos pasaulinės tinklo strategijos pagrindinio kompiuterio galinis taškas (siekiant apsaugoti tiesiogiai pagrindiniame kompiuteryje veikiančias programas – priegloba gali būti serveris arba virtuali mašina) arba darbo krūvio galutinis taškas (siekiant apsaugoti programas, veikiančias konteineriuose arba priglobtose virtualiose mašinose). Calico politika leidžia taikyti saugos priemones įvairiuose paketo kelio taškuose naudojant tokias parinktis kaip preDNAT, unraracked ir applyOnForward. Supratimas, kaip veikia šios parinktys, gali padėti pagerinti visos sistemos saugumą ir našumą. Šiame straipsnyje paaiškinama šių Calico politikos parinkčių (preDNAT, unraracked ir applyOnForward), taikomų prieglobos galutiniams taškams, esmė, pabrėžiant, kas vyksta paketų apdorojimo keliuose (iptabels grandinėse).

Šiame straipsnyje daroma prielaida, kad turite pagrindinį supratimą apie tai, kaip veikia Kubernetes ir Calico tinklo politika. Jei ne, rekomenduojame išbandyti pagrindinė tinklo politikos pamoka и pagrindinio kompiuterio apsaugos pamoka naudokite Calico prieš skaitydami šį straipsnį. Taip pat tikimės, kad turėsite pagrindinį darbo supratimą iptables Linux sistemoje.

kartūnas pasaulinė tinklo politika leidžia taikyti prieigos taisyklių rinkinį pagal etiketes (prieglobų grupėms ir darbo krūviams/podams). Tai labai naudinga, jei kartu naudojate nevienalytes sistemas – virtualias mašinas, sistemą tiesiai į aparatinę įrangą arba kubernetes infrastruktūrą. Be to, galite apsaugoti savo klasterį (mazgus) naudodami deklaruojamųjų strategijų rinkinį ir taikyti tinklo strategijas gaunamam srautui (pavyzdžiui, naudodami NodePorts arba External IPs paslaugą).

Pagrindiniu lygmeniu, kai Calico prijungia priedą prie tinklo (žr. diagramą žemiau), jis sujungia jį su pagrindiniu kompiuteriu naudodamas virtualią Ethernet sąsają (veth). Prietaiso siunčiamas srautas į pagrindinį kompiuterį patenka iš šios virtualios sąsajos ir apdorojamas taip pat, kaip ir iš fizinės tinklo sąsajos. Pagal numatytuosius nustatymus Calico šias sąsajas vadina caliXXX. Kadangi srautas ateina per virtualią sąsają, jis eina per iptables taip, tarsi pod būtų vienu šuoliu. Todėl, kai srautas ateina į/iš bloko, jis persiunčiamas priimančiojo požiūriu.

„Kubernetes“ mazge, kuriame veikia „Calico“, galite susieti virtualią sąsają (veth) su darbo krūviu, kaip nurodyta toliau. Toliau pateiktame pavyzdyje matote, kad veth#10 (calic1cbf1ca0f8) yra prijungtas prie cnx-manager-* Calico-monitoring vardų srityje.

[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
...

Suprasti tinklo politikos vykdymo parinktis naudojant Calico

Atsižvelgiant į tai, kad „Calico“ sukuria pagrindinę sąsają kiekvienam darbo krūviui, kaip ji įgyvendina politiką? Norėdami tai padaryti, Calico sukuria kabliukus įvairiose paketų apdorojimo kelio grandinėse, naudodama iptables.

Toliau pateiktoje diagramoje parodytos grandinės, susijusios su paketų apdorojimu iptables (arba netfilter posistemyje). Kai paketas ateina per tinklo sąsają, jis pirmiausia pereina PREROUTING grandinę. Tada priimamas sprendimas dėl maršruto ir, remiantis tuo, paketas eina per INPUT (nukreiptas į pagrindinio kompiuterio procesus) arba FORWARD (nukreiptas į bloką arba kitą tinklo mazgą). Iš vietinio proceso paketas praeina per IŠVESTIES, o po to POSTROUTING grandinę, prieš siunčiamas kabeliu.

Atkreipkite dėmesį, kad iptables apdorojimo požiūriu podas taip pat yra išorinis subjektas (prijungtas prie veth). Apibendrinkime:

  • Peradresuojamas eismas (nat, nukreiptas arba į/iš bloko) eina per PREROUTING – FORWARD – POSTROUTING grandines.
  • Srautas į vietinį pagrindinio kompiuterio procesą eina per grandinę PREROUTING - INPUT.
  • Srautas iš vietinio pagrindinio proceso eina per OUTPUT - POSTROUTING grandinę.

Suprasti tinklo politikos vykdymo parinktis naudojant Calico

„Calico“ siūlo politikos parinktis, kurios leidžia taikyti politiką visose grandinėse. Turėdami tai omenyje, pažvelkime į skirtingas Calico politikos konfigūravimo parinktis. Skaičiai toliau pateiktame parinkčių sąraše atitinka skaičius aukščiau esančioje diagramoje.

  1. Darbo krūvio galutinio taško (pod) politika
  2. Prieglobos galutinio taško politika
  3. ApplyOnForward parinktis
  4. PreDNAT politika
  5. Nesekama politika

Pradėkime nuo to, kaip strategijos taikomos darbo krūvio galutiniams taškams („Kubernetes pods“ arba „OpenStack“ VM), o tada pažvelkime į pagrindinio kompiuterio galinių taškų politikos parinktis.

Darbo krūvio galiniai taškai

Darbo krūvio galutinio taško politika (1)

Tai yra galimybė apsaugoti savo kubernetes ankštis. „Calico“ palaiko darbą su „Kubernetes NetworkPolicy“, tačiau joje taip pat pateikiamos papildomos strategijos – „Calico NetworkPolicy“ ir „GlobalNetworkPolicy“. „Calico“ sukuria grandinę kiekvienam blokui (darbo krūviui) ir INPUT ir OUTPUT grandinėse prikabina darbo krūvį prie FORWARD grandinės filtrų lentelės.

Pagrindinio kompiuterio galutiniai taškai

Prieglobos galutinio taško politika (2)

Be CNI (konteinerių tinklo sąsajos), Calico politika suteikia galimybę apsaugoti patį pagrindinį kompiuterį. Calico galite sukurti pagrindinio kompiuterio galinį tašką, nurodydami pagrindinio kompiuterio sąsajos ir, jei reikia, prievadų numerių derinį. Šio objekto politikos įgyvendinimas pasiekiamas naudojant filtrų lentelę INPUT ir OUTPUT grandinėse. Kaip matote iš diagramos, (2) jie taikomi vietiniams procesams mazge / pagrindiniame kompiuteryje. Tai yra, jei sukursite strategiją, kuri taikoma pagrindinio kompiuterio galutiniam taškui, ji neturės įtakos srautui, vykstančiam į / iš jūsų blokų. Tačiau ji suteikia vieną sąsają / sintaksę, skirtą blokuoti srautą jūsų pagrindiniam kompiuteriui ir podiams naudojant Calico politiką. Tai labai supaprastina nevienalyčio tinklo politikos valdymo procesą. Kitas svarbus naudojimo atvejis yra prieglobos galutinio taško politikos konfigūravimas, siekiant padidinti klasterio saugumą.

ApplyOnForward politika (3)

Parinktis ApplyOnForward pasiekiama Calico visuotinėje tinklo politikoje, kad būtų galima taikyti politiką visam srautui, einančiam per pagrindinio kompiuterio galutinį tašką, įskaitant srautą, kurį persiųs pagrindinis kompiuteris. Tai apima srautą, nukreiptą į vietinį bloką arba bet kurią kitą tinklo vietą. Calico reikalauja, kad šis nustatymas būtų įjungtas taikant politiką, kuri naudoja PreDNAT ir nesekama, žr. šiuos skyrius. Be to, ApplyOnForward gali būti naudojamas stebėti pagrindinio kompiuterio srautą tais atvejais, kai naudojamas virtualus maršrutizatorius arba programinės įrangos NAT.

Atminkite, kad jei jums reikia taikyti tą pačią tinklo politiką ir pagrindiniams procesams, ir podams, jums nereikia naudoti parinkties ApplyOnForward. Viskas, ką jums reikia padaryti, tai sukurti reikiamo pagrindinio kompiuterio ir darbo krūvio galutinio taško (pod) etiketę. „Calico“ yra pakankamai protinga, kad galėtų vykdyti politiką, pagrįstą etiketėmis, nepaisant galutinio taško tipo (prieglobos taško ar darbo krūvio).

PreDNAT politika (4)

„Kubernetes“ paslaugų objektų prievadai gali būti rodomi išorėje naudojant „NodePorts“ parinktį arba, pasirinktinai (kai naudojamas „Calico“), reklamuojant juos naudojant klasterio IP arba išorinių IP parinktis. Kube tarpinis serveris subalansuoja įeinantį srautą, susietą su paslauga, į atitinkamos paslaugos blokus, naudodamas DNAT. Atsižvelgiant į tai, kaip įgyvendinate srauto, ateinančio per „NodePorts“, politiką? Siekdama užtikrinti, kad šios strategijos būtų taikomos prieš srautą apdorojant DNAT (tai yra pagrindinio kompiuterio: prievado ir atitinkamos paslaugos susiejimas), „Calico“ pateikia globalNetworkPolicy parametrą, vadinamą „preDNAT: true“.

Kai įgalintas išankstinis DNAT, šios strategijos yra įdiegtos (4) diagramoje - PREROUTING grandinės sujungimo lentelėje - prieš pat DNAT. Čia nesilaikoma įprastos strategijų tvarkos, nes šios strategijos taikomos daug anksčiau srauto apdorojimo kelyje. Tačiau preDNAT politika laikosi taikymo tvarkos tarpusavyje.

Kuriant politiką naudojant išankstinį DNAT, svarbu būti atsargiems dėl srauto, kurį norite apdoroti, ir leisti, kad dauguma būtų atmesti. Srauto, pažymėto kaip „leisti“ išankstinėje DNAT politikoje, nebebus tikrinamas pagrindinio kompiuterio taško politika, o srautas, neatitinkantis išankstinės DNAT politikos, bus tęsiamas likusiose grandinėse.
Calico nustatė, kad naudojant preDNAT privaloma įjungti parinktį applyOnForward, nes pagal apibrėžimą srauto paskirties vieta dar nebuvo pasirinkta. Srautas gali būti nukreipiamas į pagrindinį procesą arba gali būti persiunčiamas į bloką ar kitą mazgą.

Nesekama politika (5)

Tinklai ir programos gali labai skirtis. Kai kuriais kraštutiniais atvejais programos gali sukurti daug trumpalaikių ryšių. Dėl to gali pritrūkti atminties „conntrack“ (pagrindinis „Linux“ tinklo dėklo komponentas). Tradiciškai norėdami paleisti tokio tipo programas sistemoje „Linux“, turėsite rankiniu būdu sukonfigūruoti arba išjungti „conntrack“ arba parašyti „iptables“ taisykles, kad apeitų „conntrack“. Nesekama politika Calico yra paprastesnė ir efektyvesnė parinktis, jei norite kuo greičiau apdoroti ryšius. Pavyzdžiui, jei naudojate masyvią atmintinė arba kaip papildoma apsaugos priemonė nuo DDoS.

Perskaityk tai dienoraštyje (Arba mūsų vertimas), kad gautumėte daugiau informacijos, įskaitant našumo testus naudojant nesekamąją politiką.

Kai Calico globalNetworkPolicy nustatote parinktį „doNotTrack: true“, ji tampa **nesekama** politika ir taikoma labai anksti „Linux“ paketų apdorojimo sistemoje. Žvelgiant į aukščiau pateiktą diagramą, prieš pradedant ryšio sekimą (conntrack) neapdorotos lentelės PREROUTING ir OUTPUT grandinėse taikomos nesekamos strategijos. Kai paketą leidžia nesekimo strategija, jis pažymimas, kad būtų išjungtas to paketo ryšio stebėjimas. Tai reiškia:

  • Nesekama politika taikoma kiekvienam paketui. Nėra ryšio (arba srauto) sąvokos. Ryšių trūkumas turi keletą svarbių pasekmių:
  • Jei norite leisti ir užklausų, ir atsakymų srautą, jums reikia taisyklės tiek gaunamam, tiek išeinančiam (kadangi Calico paprastai naudoja conntrack, kad pažymėtų atsakymų srautą kaip leistiną).
  • Nesekama politika neveikia Kubernetes darbo krūviams (podams), nes tokiu atveju nėra galimybės sekti išeinančio ryšio iš bloko.
  • NAT neveikia tinkamai su nesekamaisiais paketais (nes branduolys saugo NAT susiejimą conntrack).
  • Pereinant per nesekimo politikos taisyklę „leisti viską“, visi paketai bus pažymėti kaip nesekami. Tai beveik visada nėra tai, ko norite, todėl svarbu labai atrinkti paketus, kuriuos leidžia nesekama politika (ir leisti didžiajai daliai srauto pereiti per įprastas stebimas strategijas).
  • Nesekamos strategijos taikomos pačioje paketų apdorojimo dujotiekio pradžioje. Tai labai svarbu suprasti kuriant Calico politiką. Galite turėti pod polisą su order:1 ir nesekamą politiką su order:1000. Tai nebus svarbu. Nestebimo politika bus taikoma anksčiau nei rinkinio politika. Nesekamos politikos vykdymo tvarką gerbia tik tarpusavyje.

Kadangi vienas iš „doNotTrack“ politikos tikslų yra įgyvendinti politiką labai anksti „Linux“ paketų apdorojimo dujotiekyje, „Calico“ įpareigoja nurodyti parinktį applyOnForward naudojant doNotTrack. Atsižvelgdami į paketų apdorojimo diagramą, atkreipkite dėmesį, kad prieš priimant sprendimus dėl maršruto taikoma untracked(5) politika. Srautas gali būti nukreipiamas į pagrindinį procesą arba gali būti persiunčiamas į bloką ar kitą mazgą.

rezultatai

Peržiūrėjome įvairias politikos parinktis (Host endpoint, ApplyOnForward, preDNAT ir Untracked) Calico ir kaip jos taikomos paketų apdorojimo kelyje. Supratimas, kaip jie veikia, padeda kurti veiksmingą ir saugią politiką. Naudodami Calico galite naudoti visuotinę tinklo politiką, taikomą etiketei (mazgų ir grupių grupei), ir taikyti strategijas su įvairiais parametrais. Tai leidžia saugos ir tinklo projektavimo specialistams patogiai apsaugoti „viską“ (galinių taškų tipus) vienu metu naudojant vieną politikos kalbą su Calico politika.

Padėka: Norėčiau padėkoti Seanas Cramptonas и Alexa Pollitta už peržiūrą ir vertingą informaciją.

Šaltinis: www.habr.com

Добавить комментарий