Pagsabut sa mga kapilian sa palisiya sa network kauban ang Calico

Pagsabut sa mga kapilian sa palisiya sa network kauban ang Calico

Ang Calico network plugin naghatag sa usa ka halapad nga mga palisiya sa network nga adunay usa ka hiniusa nga syntax aron mapanalipdan ang mga host sa hardware, virtual machine ug pod. Kini nga mga palisiya mahimong magamit sulod sa usa ka namespace o mahimong global nga mga palisiya sa network nga magamit sa endpoint sa host (aron mapanalipdan ang mga aplikasyon nga nagdagan direkta sa host - ang host mahimo nga usa ka server o usa ka virtual machine) o endpoint sa workload (aron mapanalipdan ang mga aplikasyon nga nagdagan sa mga sudlanan o gi-host nga virtual machine). Gitugotan ka sa mga palisiya sa Calico nga magamit ang mga lakang sa seguridad sa lainlaing mga punto sa agianan sa usa ka pakete gamit ang mga kapilian sama sa preDNAT, unraracked, ug applyOnForward. Ang pagsabut kung giunsa kini nga mga kapilian molihok makatabang sa pagpauswag sa seguridad ug paghimo sa imong kinatibuk-ang sistema. Gipatin-aw niining artikuloha ang esensya niining mga opsyon sa polisiya sa Calico (preDNAT, unraracked ug applyOnForward) nga gipadapat sa mga endpoint sa host, nga adunay gibug-aton kung unsa ang mahitabo sa mga agianan sa pagproseso sa packet (iptabels chains).

Kini nga artikulo nagtuo nga ikaw adunay sukaranan nga pagsabut kung giunsa ang mga palisiya sa network sa Kubernetes ug Calico nagtrabaho. Kung dili, girekomenda namon nga sulayan kini sukaranan nga panudlo sa palisiya sa network ΠΈ tutorial sa pagpanalipod sa host gamit ang Calico sa wala pa basahon kini nga artikulo. Kami usab nagpaabut nga ikaw adunay sukaranan nga pagsabut sa trabaho iptables sa linux.

Calico palisiya sa global network nagtugot kanimo sa paggamit sa usa ka hugpong sa mga lagda sa pag-access pinaagi sa mga label (sa mga grupo sa mga host ug workloads/pods). Mapuslanon kaayo kini kung mogamit ka og mga heterogeneous system nga magkauban - mga virtual machine, usa ka sistema nga direkta sa hardware, o usa ka imprastraktura sa kubernetes. Dugang pa, mahimo nimong panalipdan ang imong cluster (mga node) gamit ang usa ka set sa declarative nga mga palisiya ug i-apply ang mga polisiya sa network sa umaabot nga trapiko (pananglitan, pinaagi sa serbisyo sa NodePorts o External IPs).

Sa usa ka sukaranan nga lebel, kung ang Calico nagkonektar sa usa ka pod sa network (tan-awa ang diagram sa ubos), kini nagkonektar niini sa host gamit ang virtual Ethernet interface (veth). Ang trapiko nga gipadala sa pod moabut sa host gikan sa kini nga virtual interface ug giproseso sa parehas nga paagi ingon nga kini gikan sa usa ka pisikal nga interface sa network. Sa kasagaran, ang Calico nagngalan niini nga mga interface nga caliXXX. Tungod kay ang trapiko moabut pinaagi sa virtual interface, kini moagi sa mga iptables ingon nga ang pod usa ka paglukso. Busa, kung ang trapiko moabut sa / gikan sa usa ka pod, kini gipasa gikan sa punto sa pagtan-aw sa host.

Sa usa ka Kubernetes node nga nagpadagan sa Calico, mahimo nimong mapa ang usa ka virtual interface (veth) sa usa ka workload sama sa mosunod. Sa pananglitan sa ubos, imong makita nga ang veth#10 (calic1cbf1ca0f8) konektado sa cnx-manager-* sa calico-monitoring namespace.

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

Pagsabut sa mga kapilian sa palisiya sa network kauban ang Calico

Tungod kay ang Calico nagmugna ug veth interface alang sa matag workload, giunsa kini pagpatuman sa mga palisiya? Aron mahimo kini, ang Calico nagmugna og mga kaw-it sa lainlaing mga kadena sa agianan sa pagproseso sa pakete gamit ang mga iptables.

Ang dayagram sa ubos nagpakita sa mga kadena nga nalambigit sa pagproseso sa packet sa mga iptables (o ang subsystem sa netfilter). Kung ang usa ka pakete moabut pinaagi sa usa ka interface sa network, kini una nga moagi sa PREROUTING chain. Usa ka desisyon sa pag-ruta ang gihimo, ug base niini, ang pakete moagi sa bisan asa nga INPUT (gidirekta sa mga proseso sa pag-host) o FORWARD (gidirekta sa usa ka pod o lain nga node sa network). Gikan sa lokal nga proseso, ang packet moagi sa OUTPUT ug dayon POSTROUTING chain sa dili pa ipadala ang cable.

Timan-i nga ang pod usa usab ka eksternal nga entidad (konektado sa veth) sa mga termino sa pagproseso sa iptables. Atong i-summarize:

  • Ang gipasa nga trapiko (nat, gi-ruta o paingon/gikan sa usa ka pod) moagi sa PREROUTING - FORWARD - POSTROUTING chains.
  • Ang trapiko sa proseso sa lokal nga host moagi sa PREROUTING - INPUT chain.
  • Ang trapiko gikan sa proseso sa lokal nga host moagi sa OUTPUT - POSTROUTING chain.

Pagsabut sa mga kapilian sa palisiya sa network kauban ang Calico

Naghatag ang Calico og mga kapilian sa palisiya nga nagtugot kanimo sa paggamit sa mga palisiya sa tanan nga mga kadena. Uban niana sa hunahuna, atong tan-awon ang lain-laing mga kapilian sa pagsumpo sa palisiya nga anaa sa Calico. Ang mga numero sa lista sa mga kapilian sa ubos katumbas sa mga numero sa dayagram sa ibabaw.

  1. Patakaran sa workload endpoint (pod).
  2. Host endpoint nga polisiya
  3. Opsyon nga ApplyOnForward
  4. Patakaran sa PreDNAT
  5. Wala masubay nga Polisiya

Magsugod kita pinaagi sa pagtan-aw kung giunsa paggamit ang mga palisiya sa mga endpoint sa workload (mga Kubernetes pod o OpenStack VMs), ug unya tan-awon ang mga kapilian sa palisiya alang sa mga endpoint sa host.

Mga Katapusan sa Workload

Patakaran sa Katapusan nga Punto sa Trabaho (1)

Kini usa ka kapilian aron mapanalipdan ang imong mga kubernetes pod. Gisuportahan sa Calico ang pagtrabaho kauban ang Kubernetes NetworkPolicy, apan naghatag usab kini og dugang nga mga palisiya - Calico NetworkPolicy ug GlobalNetworkPolicy. Ang Calico nagmugna og kadena para sa matag pod (load sa trabaho) ug mga kaw-it sa INPUT ug OUTPUT nga kadena para sa workload ngadto sa filter table sa FORWARD chain.

Host Endpoints

Host Endpoint Policy (2)

Dugang sa CNI (container network interface), ang mga polisiya sa Calico naghatag ug abilidad sa pagpanalipod sa host mismo. Sa Calico, makahimo ka og host endpoint pinaagi sa pagtino sa kombinasyon sa host interface ug, kon gikinahanglan, mga numero sa port. Ang pagpatuman sa palisiya alang niini nga entidad makab-ot gamit ang usa ka filter nga lamesa sa INPUT ug OUTPUT nga mga kadena. Sama sa imong makita gikan sa diagram, (2) kini magamit sa mga lokal nga proseso sa node/host. Kana mao, kung maghimo ka usa ka palisiya nga magamit sa endpoint sa host, dili kini makaapekto sa trapiko nga moadto/gikan sa imong mga pod. Apan naghatag kini og usa ka interface/syntax para sa pagbabag sa trapiko para sa imong host ug pods gamit ang mga polisiya sa Calico. Gipasimple niini pag-ayo ang proseso sa pagdumala sa mga palisiya alang sa usa ka heterogenous nga network. Ang pag-configure sa mga palisiya sa endpoint sa host aron mapauswag ang seguridad sa cluster usa pa ka hinungdanon nga kaso sa paggamit.

ApplyOnForward Policy (3)

Ang opsyon nga ApplyOnForward anaa sa Calico global network policy aron tugotan ang mga polisiya nga magamit sa tanang trapiko nga moagi sa host endpoint, lakip ang trapiko nga ipasa sa host. Naglakip kini sa trapiko nga gipasa sa lokal nga pod o bisan asa sa network. Ang Calico nagkinahanglan niini nga setting nga mahimo alang sa mga polisiya gamit ang PreDNAT ug wala masubay, tan-awa ang mosunod nga mga seksyon. Dugang pa, ang ApplyOnForward mahimong magamit sa pagmonitor sa trapiko sa host sa mga kaso diin gigamit ang usa ka virtual router o software NAT.

Timan-i nga kung kinahanglan nimo nga i-apply ang parehas nga polisiya sa network sa mga proseso sa host ug pods, nan dili nimo kinahanglan gamiton ang kapilian nga ApplyOnForward. Ang kinahanglan nimong buhaton mao ang paghimo og usa ka label alang sa gikinahanglan nga hostendpoint ug workload endpoint (pod). Ang Calico adunay igong kaalam sa pagpatuman sa palisiya base sa mga label, bisan unsa pa ang tipo sa endpoint (hostendpoint o workload).

Patakaran sa PreDNAT (4)

Sa Kubernetes, ang mga service entity port mahimong ma-expose sa gawas gamit ang NodePorts nga opsyon o, opsyonal (kon gamiton ang Calico), pinaagi sa pag-advertise niini gamit ang Cluster IPs o External IPs nga mga opsyon. Gibalanse sa Kube-proxy ang umaabot nga trapiko nga gigapos sa usa ka serbisyo sa mga pod sa katugbang nga serbisyo gamit ang DNAT. Tungod niini, giunsa nimo pagpatuman ang mga palisiya alang sa trapiko nga moabut pinaagi sa NodePorts? Aron masiguro nga kini nga mga palisiya magamit sa dili pa ang trapiko maproseso sa DNAT (nga usa ka mapping tali sa host:port ug katugbang nga serbisyo), ang Calico naghatag usa ka parameter alang sa globalNetworkPolicy nga gitawag nga "preDNAT: true".

Kung ma-enable ang pre-DNAT, kini nga mga polisiya gipatuman sa (4) sa diagram - sa mangle table sa PREROUTING chain - sa wala pa ang DNAT. Ang naandan nga han-ay sa mga palisiya wala gisunod dinhi, tungod kay ang paggamit niini nga mga palisiya mahitabo sa sayo pa sa agianan sa pagproseso sa trapiko. Bisan pa, ang mga palisiya sa preDNAT nagtahod sa han-ay sa aplikasyon sa ilang kaugalingon.

Sa paghimo sa mga palisiya nga adunay pre-DNAT, importante nga mag-amping mahitungod sa trapiko nga gusto nimong iproseso ug tugotan ang kadaghanan nga isalikway. Ang trapiko nga gimarkahan nga 'allow' sa pre-DNAT policy dili na susihon sa hostendpoint policy, samtang ang trapiko nga mapakyas sa pre-DNAT policy magpadayon sa nahabilin nga mga kadena.
Ang Calico naghimo niini nga mandatory aron mahimo ang opsyon sa applyOnForward kung gamiton ang preDNAT, tungod kay sa kahulugan ang destinasyon sa trapiko wala pa mapili. Ang trapiko mahimong idirekta sa proseso sa host, o mahimo kini ipasa sa usa ka pod o lain nga node.

Wala Masubay nga Polisiya (5)

Ang mga network ug aplikasyon mahimong adunay daghang kalainan sa pamatasan. Sa pipila ka grabe nga mga kaso, ang mga aplikasyon mahimong makamugna og daghang mga mubu nga mga koneksyon. Mahimo kini nga hinungdan sa conntrack (usa ka kinauyokan nga sangkap sa Linux networking stack) nga mahurot sa memorya. Sa naandan, aron mapadagan kini nga mga klase sa aplikasyon sa Linux, kinahanglan nimo nga mano-mano ang pag-configure o pag-disable sa conntrack, o pagsulat sa mga lagda sa iptables aron makalikay sa conntrack. Ang dili masubay nga palisiya sa Calico usa ka mas simple ug mas episyente nga kapilian kung gusto nimo nga maproseso ang mga koneksyon sa labing madali nga panahon. Pananglitan, kon mogamit ka og massive memcache o isip dugang nga sukod sa pagpanalipod batok sa DDOS.

Basaha ni blog post (o atong hubad) alang sa dugang nga impormasyon, lakip na ang mga pagsulay sa performance gamit ang wala masubay nga polisiya.

Kung imong gitakda ang opsyon nga "doNotTrack: true" sa Calico globalNetworkPolicy, nahimo kining **untracked** policy ug sayo kaayo nga gigamit sa Linux packet processing pipeline. Sa pagtan-aw sa dayagram sa ibabaw, ang wala masubay nga mga palisiya gipadapat sa PREROUTING ug OUTPUT nga mga kadena sa hilaw nga lamesa sa wala pa magsugod ang pagsubay sa koneksyon (conntrack). Kung ang usa ka pakete gitugotan sa wala masubay nga palisiya, kini gimarkahan aron dili pagana ang pagsubay sa koneksyon alang sa kana nga pakete. Kini nagpasabot:

  • Ang wala masubay nga polisiya gipadapat sa kada-packet nga basehan. Walay konsepto sa koneksyon (o dagan). Ang kakulang sa koneksyon adunay daghang hinungdanon nga mga sangputanan:
  • Kung gusto nimong tugutan ang hangyo ug tubag sa trapiko, kinahanglan nimo ang usa ka lagda alang sa pagsulod ug paggawas (tungod kay ang Calico kasagarang naggamit sa conntrack aron markahan ang trapiko sa pagtubag kung gitugotan).
  • Ang wala masubay nga polisiya dili mogana alang sa Kubernetes nga mga workloads (pods), tungod kay sa kini nga kaso walay paagi sa pagsubay sa outgoing connection gikan sa pod.
  • Ang NAT dili molihok sa husto sa wala masubay nga mga pakete (tungod kay ang kernel nagtipig sa NAT mapping sa conntrack).
  • Kung moagi sa "allow all" nga lagda sa wala masubay nga palisiya, ang tanan nga mga pakete markahan nga wala masubay. Kini halos kanunay nga dili ang imong gusto, busa importante nga mahimong mapilion kaayo bahin sa mga pakete nga gitugotan sa wala masubay nga mga palisiya (ug tugotan ang kadaghanan sa trapiko nga moagi sa normal nga gisubay nga mga palisiya).
  • Ang wala masubay nga mga palisiya gipadapat sa sinugdanan pa lang sa packet processing pipeline. Kini hinungdanon kaayo nga masabtan kung maghimo mga palisiya sa Calico. Mahimo kang adunay usa ka polisiya pod nga adunay order:1 ug usa ka dili masubay nga polisiya nga adunay order:1000. Dili igsapayan. Ang polisiya nga Wala masubay ipatuman sa dili pa ang polisiya para sa pod. Ang wala masubay nga mga palisiya nagtahod sa mando sa pagpatuman sa ilang kaugalingon lamang.

Tungod kay usa sa mga katuyoan sa polisiya sa doNotTrack mao ang pagpatuman sa polisiya sayo kaayo sa linya sa pagproseso sa packet sa Linux, gihimo ni Calico nga mandatory ang pagpiho sa opsyon sa applyOnForward kung gamiton ang doNotTrack. Naghisgot sa diagram sa pagproseso sa packet, timan-i nga ang wala masubay nga (5) nga palisiya gigamit sa wala pa ang bisan unsang mga desisyon sa pag-ruta. Ang trapiko mahimong idirekta sa proseso sa host, o mahimo kini ipasa sa usa ka pod o lain nga node.

Mga resulta

Among gitan-aw ang lain-laing mga opsyon sa polisiya (Host endpoint, ApplyOnForward, preDNAT, ug Untracked) sa Calico ug giunsa kini pagpadapat subay sa packet processing path. Ang pagsabut kung giunsa nila pagtrabaho makatabang sa pagpalambo sa epektibo ug luwas nga mga palisiya. Uban sa Calico mahimo nimong gamiton ang usa ka global nga palisiya sa network nga magamit sa usa ka label (usa ka grupo sa mga node ug pods) ug magamit ang mga palisiya nga adunay lainlaing mga parameter. Gitugotan niini ang mga propesyonal sa pagdesinyo sa seguridad ug network nga dali nga mapanalipdan ang "tanan" (mga tipo sa katapusan) sa usa ka higayon gamit ang usa ka sinultian nga palisiya nga adunay mga palisiya sa Calico.

Acknowledgement: Gusto kong magpasalamat Sean Crampton ΠΈ Alexa Pollitta alang sa ilang pagrepaso ug bililhong impormasyon.

Source: www.habr.com

Idugang sa usa ka comment