Deall Opsiynau Gorfodi Polisi Rhwydwaith gyda Calico

Deall Opsiynau Gorfodi Polisi Rhwydwaith gyda Calico

Mae ategyn rhwydwaith Calico yn darparu ystod eang o bolisïau rhwydwaith gyda chystrawen unedig i amddiffyn gwesteiwyr caledwedd, peiriannau rhithwir a chodennau. Gellir cymhwyso'r polisïau hyn o fewn gofod enw neu fod yn bolisïau rhwydwaith byd-eang sy'n berthnasol iddynt diweddbwynt gwesteiwr (i amddiffyn cymwysiadau sy'n rhedeg yn uniongyrchol ar y gwesteiwr - gall y gwesteiwr fod yn weinydd neu'n beiriant rhithwir) neu pwynt terfyn llwyth gwaith (i amddiffyn cymwysiadau sy'n rhedeg mewn cynwysyddion neu beiriannau rhithwir a gynhelir). Mae polisïau Calico yn caniatáu ichi gymhwyso mesurau diogelwch ar wahanol adegau ar lwybr pecyn gan ddefnyddio opsiynau fel preDNAT, heb eu cracio, a applyOnForward. Gall deall sut mae'r opsiynau hyn yn gweithio helpu i wella diogelwch a pherfformiad eich system gyffredinol. Mae'r erthygl hon yn egluro hanfod yr opsiynau polisi Calico hyn (preDNAT, unraraced a applyOnForward) sy'n berthnasol i bwyntiau terfyn cynnal, gyda phwyslais ar yr hyn sy'n digwydd mewn llwybrau prosesu pecynnau (cadwyni iptabels).

Mae'r erthygl hon yn cymryd yn ganiataol bod gennych ddealltwriaeth sylfaenol o sut mae polisïau rhwydwaith Kubernetes a Calico yn gweithio. Os na, rydym yn argymell rhoi cynnig arni tiwtorial polisi rhwydwaith sylfaenol и tiwtorial amddiffyn gwesteiwr defnyddio Calico cyn darllen yr erthygl hon. Disgwyliwn hefyd fod gennych ddealltwriaeth sylfaenol o'r gwaith iptables yn linux.

Calico polisi rhwydwaith byd-eang yn caniatáu i chi gymhwyso set o reolau mynediad yn ôl labeli (i grwpiau o westeion a llwythi gwaith/podiau). Mae hyn yn ddefnyddiol iawn os ydych chi'n defnyddio systemau heterogenaidd gyda'i gilydd - peiriannau rhithwir, system yn uniongyrchol ar galedwedd, neu seilwaith kubernetes. Yn ogystal, gallwch amddiffyn eich clwstwr (nodau) gan ddefnyddio set o bolisïau datganiadol a chymhwyso polisïau rhwydwaith i draffig sy'n dod i mewn (er enghraifft, trwy'r gwasanaeth NodePorts neu IPs Allanol).

Ar lefel sylfaenol, pan fydd Calico yn cysylltu pod â'r rhwydwaith (gweler y diagram isod), mae'n ei gysylltu â'r gwesteiwr gan ddefnyddio rhyngwyneb Ethernet rhithwir (veth). Daw'r traffig a anfonir gan y pod i'r gwesteiwr o'r rhyngwyneb rhithwir hwn ac fe'i prosesir yn yr un modd â phe bai'n dod o ryngwyneb rhwydwaith ffisegol. Yn ddiofyn, mae Calico yn enwi'r rhyngwynebau hyn caliXXX. Gan fod y traffig yn dod trwy'r rhyngwyneb rhithwir, mae'n mynd trwy iptables fel pe bai'r pod un hop i ffwrdd. Felly, pan fydd traffig yn dod i / o god, mae'n cael ei anfon ymlaen o safbwynt y gwesteiwr.

Ar nod Kubernetes sy'n rhedeg Calico, gallwch fapio rhyngwyneb rhithwir (veth) i lwyth gwaith fel a ganlyn. Yn yr enghraifft isod, gallwch weld bod veth#10 (calic1cbf1ca0f8) wedi'i gysylltu â cnx-manager-* yn y gofod enw monitro calico.

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

Deall Opsiynau Gorfodi Polisi Rhwydwaith gyda Calico

O ystyried bod Calico yn creu rhyngwyneb feth ar gyfer pob llwyth gwaith, sut mae'n gorfodi polisïau? I wneud hyn, mae Calico yn creu bachau mewn cadwyni amrywiol o'r llwybr prosesu pecynnau gan ddefnyddio iptables.

Mae'r diagram isod yn dangos y cadwyni sy'n ymwneud â phrosesu pecynnau mewn iptables (neu'r is-system netfilter). Pan fydd pecyn yn cyrraedd trwy ryngwyneb rhwydwaith, yn gyntaf mae'n mynd trwy'r gadwyn PREROUTING. Yna gwneir penderfyniad llwybro, ac yn seiliedig ar hyn, mae'r pecyn yn mynd trwy naill ai INPUT (wedi'i gyfeirio at brosesau gwesteiwr) neu YMLAEN (wedi'i gyfeirio at god neu nod arall ar y rhwydwaith). O'r broses leol, mae'r pecyn yn mynd trwy'r ALLBWN ac yna'n POSTROUTING gadwyn cyn cael ei anfon i lawr y cebl.

Sylwch fod y pod hefyd yn endid allanol (yn gysylltiedig â'r feth) o ran prosesu iptables. Gadewch i ni grynhoi:

  • Mae traffig sy'n cael ei anfon ymlaen (nat, wedi'i gyfeirio neu i/o goden) yn mynd drwy'r cadwyni PREROUTING - YMLAEN - POSTIO.
  • Mae traffig i'r broses gwesteiwr lleol yn mynd trwy'r gadwyn RHAGROU - MEWNBWN.
  • Mae traffig o'r broses gwesteiwr lleol yn mynd trwy'r gadwyn ALLBWN - POSTROUTING.

Deall Opsiynau Gorfodi Polisi Rhwydwaith gyda Calico

Mae Calico yn darparu opsiynau polisi sy'n eich galluogi i gymhwyso polisïau ar draws pob cadwyn. Gyda hynny mewn golwg, gadewch i ni edrych ar y gwahanol opsiynau cyfluniad polisi sydd ar gael yn Calico. Mae'r rhifau yn y rhestr o opsiynau isod yn cyfateb i'r rhifau yn y diagram uchod.

  1. Polisi pwynt terfyn llwyth gwaith (pod).
  2. Polisi diweddbwynt gwesteiwr
  3. Opsiwn Ymgeisio Ymlaen
  4. Polisi PreDNAT
  5. Polisi heb ei Dracio

Gadewch i ni ddechrau trwy edrych ar sut mae polisïau'n cael eu cymhwyso i bwyntiau terfyn llwyth gwaith (podiau Kubernetes neu OpenStack VMs), ac yna edrych ar yr opsiynau polisi ar gyfer pwyntiau terfyn gwesteiwr.

Pwyntiau Gorffen Llwyth Gwaith

Polisi Man Gorffen Llwyth Gwaith (1)

Mae hwn yn opsiwn i amddiffyn eich codennau kubernetes. Mae Calico yn cefnogi gweithio gyda Kubernetes NetworkPolicy, ond mae hefyd yn darparu polisïau ychwanegol - Calico NetworkPolicy a GlobalNetworkPolicy. Mae Calico yn creu cadwyn ar gyfer pob pod (llwyth gwaith) ac yn bachu yn y cadwyni MEWNBWN ac ALLBWN ar gyfer y llwyth gwaith i fwrdd hidlo'r gadwyn FORWARD.

Mannau Gorffen y Gwesteiwr

Polisi Mannau Gorffen Gwesteiwr (2)

Yn ogystal â CNI (rhyngwyneb rhwydwaith cynhwysydd), mae polisïau Calico yn darparu'r gallu i amddiffyn y gwesteiwr ei hun. Yn Calico, gallwch greu diweddbwynt gwesteiwr trwy nodi cyfuniad o'r rhyngwyneb gwesteiwr ac, os oes angen, rhifau porthladdoedd. Cyflawnir gorfodi polisi ar gyfer yr endid hwn gan ddefnyddio tabl hidlo yn y cadwyni MEWNBWN ac ALLBWN. Fel y gallwch weld o'r diagram, (2) maent yn berthnasol i brosesau lleol ar y nod/gwesteiwr. Hynny yw, os byddwch chi'n creu polisi sy'n berthnasol i'r pwynt terfyn gwesteiwr, ni fydd yn effeithio ar draffig sy'n mynd i / o'ch codennau. Ond mae'n darparu un rhyngwyneb/cystrawen ar gyfer rhwystro traffig ar gyfer eich gwesteiwr a'ch codennau gan ddefnyddio polisïau Calico. Mae hyn yn symleiddio'r broses o reoli polisïau ar gyfer rhwydwaith heterogenaidd yn fawr. Mae ffurfweddu polisïau pwynt terfyn gwesteiwr i wella diogelwch clwstwr yn achos defnydd pwysig arall.

Polisi Ymgeisio Ymlaen (3)

Mae'r opsiwn ApplyOnForward ar gael ym mholisi rhwydwaith byd-eang Calico i ganiatáu i bolisïau gael eu cymhwyso i'r holl draffig sy'n mynd trwy'r pwynt terfyn gwesteiwr, gan gynnwys traffig a fydd yn cael ei anfon ymlaen gan y gwesteiwr. Mae hyn yn cynnwys traffig sy'n cael ei anfon ymlaen i'r pod lleol neu unrhyw le arall ar y rhwydwaith. Mae Calico yn mynnu bod y gosodiad hwn yn cael ei alluogi ar gyfer polisïau sy'n defnyddio PreDNAT a heb ei olrhain, gweler yr adrannau canlynol. Yn ogystal, gellir defnyddio ApplyOnForward i fonitro traffig gwesteiwr mewn achosion lle defnyddir llwybrydd rhithwir neu feddalwedd NAT.

Sylwch, os oes angen i chi gymhwyso'r un polisi rhwydwaith i'r prosesau cynnal a'r codennau, yna nid oes angen i chi ddefnyddio'r opsiwn ApplyOnForward. Y cyfan sy'n rhaid i chi ei wneud yw creu label ar gyfer y man cynnal a'r pwynt terfyn llwyth gwaith gofynnol (pod). Mae Calico yn ddigon craff i orfodi polisi yn seiliedig ar labeli, waeth beth fo'r math o bwynt terfyn (man cynnal neu lwyth gwaith).

Polisi PreDNAT (4)

Yn Kubernetes, gellir datgelu porthladdoedd endid gwasanaeth yn allanol gan ddefnyddio'r opsiwn NodePorts neu, yn ddewisol (wrth ddefnyddio Calico), trwy eu hysbysebu gan ddefnyddio'r opsiynau Clwstwr IPs neu IPs Allanol. Mae Kube-proxy yn cydbwyso traffig sy'n dod i mewn sy'n rhwym i wasanaeth i godiau'r gwasanaeth cyfatebol gan ddefnyddio DNAT. O ystyried hyn, sut ydych chi'n gorfodi polisïau ar gyfer traffig sy'n dod trwy NodePorts? Er mwyn sicrhau bod y polisïau hyn yn cael eu gweithredu cyn i'r traffig gael ei brosesu gan DNAT (sef map rhwng gwesteiwr:port a gwasanaeth cyfatebol), mae Calico yn darparu paramedr ar gyfer globalNetworkPolicy o'r enw "preDNAT: true".

Pan fydd rhag-DNAT yn cael ei alluogi, mae'r polisïau hyn yn cael eu gweithredu yn (4) yn y diagram - yn nhabl mangl y gadwyn PREROUTING - yn union cyn DNAT. Ni ddilynir trefn arferol y polisïau yma, gan fod gweithrediad y polisïau hyn yn digwydd yn llawer cynharach yn y llwybr prosesu traffig. Fodd bynnag, mae polisïau preDNAT yn parchu trefn y cais ymhlith ei gilydd.

Wrth greu polisïau gyda rhag-DNAT, mae'n bwysig bod yn ofalus ynghylch y traffig yr ydych am ei brosesu a chaniatáu i'r mwyafrif gael eu gwrthod. Ni fydd traffig sydd wedi'i nodi fel 'caniatáu' yn y polisi cyn-DNAT bellach yn cael ei wirio gan y polisi pwynt cynnal, tra bydd traffig sy'n methu'r polisi cyn-DNAT yn parhau drwy'r cadwyni sy'n weddill.
Mae Calico wedi ei gwneud hi'n orfodol i alluogi'r opsiwn applyOnForward wrth ddefnyddio preDNAT, oherwydd trwy ddiffiniad nid yw cyrchfan y traffig wedi'i ddewis eto. Gellir cyfeirio traffig at y broses gwesteiwr, neu gellir ei anfon ymlaen at god neu nod arall.

Polisi heb ei Dracio (5)

Gall rhwydweithiau a chymwysiadau fod â gwahaniaethau mawr mewn ymddygiad. Mewn rhai achosion eithafol, gall cymwysiadau gynhyrchu llawer o gysylltiadau byrhoedlog. Gall hyn achosi i conntrack (elfen graidd o stac rhwydweithio Linux) redeg allan o gof. Yn draddodiadol, i redeg y mathau hyn o gymwysiadau ar Linux, byddai'n rhaid i chi ffurfweddu neu analluogi conntrack â llaw, neu ysgrifennu rheolau iptables i osgoi conntrack. Mae polisi heb ei dracio yn Calico yn opsiwn symlach a mwy effeithlon os ydych chi am brosesu cysylltiadau cyn gynted â phosibl. Er enghraifft, os ydych chi'n defnyddio enfawr memcache neu fel mesur ychwanegol o amddiffyniad yn erbyn DDOS.

Darllenwch hwn post blog (Neu ein cyfieithiad) am ragor o wybodaeth, gan gynnwys profion perfformiad gan ddefnyddio polisi heb ei olrhain.

Pan fyddwch chi'n gosod yr opsiwn "doNotTrack: true" yn Calico globalNetworkPolicy, mae'n dod yn bolisi **heb ei olrhain** a chaiff ei gymhwyso'n gynnar iawn ar y gweill ar gyfer prosesu pecynnau Linux. Gan edrych ar y diagram uchod, mae polisïau heb eu tracio yn cael eu cymhwyso yn y cadwyni PREROUTING ac OUTPUT yn y tabl crai cyn dechrau olrhain cysylltiad (conntrack). Pan ganiateir pecyn gan y polisi heb ei olrhain, caiff ei farcio i analluogi olrhain cysylltiad ar gyfer y pecyn hwnnw. Mae'n golygu:

  • Mae'r polisi heb ei olrhain yn cael ei gymhwyso fesul pecyn. Nid oes unrhyw gysyniad o gysylltiad (neu lif). Mae gan ddiffyg cysylltiadau nifer o ganlyniadau pwysig:
  • Os ydych chi am ganiatáu traffig ceisiadau ac ymateb, mae angen rheol arnoch ar gyfer dod i mewn ac allan (gan fod Calico fel arfer yn defnyddio conntrack i farcio traffig ymateb fel y caniateir).
  • Nid yw'r polisi heb ei olrhain yn gweithio ar gyfer llwythi gwaith Kubernetes (podiau), oherwydd yn yr achos hwn nid oes unrhyw ffordd i olrhain y cysylltiad sy'n mynd allan o'r pod.
  • Nid yw NAT yn gweithio'n gywir gyda phecynnau heb eu tracio (gan fod y cnewyllyn yn storio'r mapiau NAT yn conntrack).
  • Wrth basio trwy'r rheol "caniatáu i bawb" yn y polisi heb ei olrhain, bydd pob pecyn yn cael ei farcio fel un heb ei olrhain. Nid yw hyn bron bob amser yr hyn yr ydych ei eisiau, felly mae'n bwysig bod yn ddetholus iawn ynghylch y pecynnau a ganiateir gan bolisïau heb eu tracio (a chaniatáu i'r rhan fwyaf o draffig fynd trwy bolisïau tracio arferol).
  • Gweithredir polisïau heb eu tracio ar ddechrau'r broses o brosesu pecynnau. Mae hyn yn bwysig iawn i'w ddeall wrth greu polisïau Calico. Gallwch gael polisi pod gyda gorchymyn:1 a pholisi heb ei olrhain gyda gorchymyn: 1000. Ni fydd ots. Bydd y polisi Untracked yn cael ei gymhwyso cyn y polisi ar gyfer y pod. Dim ond ymhlith ei gilydd y mae polisïau heb eu tracio yn parchu gorchymyn gweithredu.

Oherwydd mai un o ddibenion y polisi doNotTrack yw gorfodi'r polisi yn gynnar iawn ar y gweill ar gyfer prosesu pecynnau Linux, mae Calico yn ei gwneud hi'n orfodol nodi'r opsiwn applyOnForward wrth ddefnyddio doNotTrack. Gan gyfeirio at y diagram prosesu pecynnau, sylwch fod y polisi heb ei olrhain(5) yn cael ei gymhwyso cyn unrhyw benderfyniadau llwybro. Gellir cyfeirio traffig at y broses gwesteiwr, neu gellir ei anfon ymlaen at god neu nod arall.

Canlyniadau

Gwnaethom edrych ar y gwahanol opsiynau polisi (Host endpoint, ApplyOnForward, preDNAT, a Untracked) yn Calico a sut y cânt eu cymhwyso ar hyd y llwybr prosesu pecynnau. Mae deall sut maent yn gweithio yn helpu i ddatblygu polisïau effeithiol a diogel. Gyda Calico gallwch ddefnyddio polisi rhwydwaith byd-eang sy'n berthnasol i label (grŵp o nodau a chodau) a chymhwyso polisïau â pharamedrau amrywiol. Mae hyn yn caniatáu i weithwyr proffesiynol diogelwch a dylunio rhwydwaith ddiogelu “popeth” (mathau o bwyntiau terfyn) yn gyfleus ar unwaith gan ddefnyddio un iaith bolisi gyda pholisïau Calico.

Cydnabyddiaeth: Hoffwn ddiolch Sean Crampton и Alexa Pollitta am eu hadolygiad a gwybodaeth werthfawr.

Ffynhonnell: hab.com

Ychwanegu sylw