{"id":32641,"date":"2019-10-31T21:48:11","date_gmt":"2019-10-31T18:48:11","guid":{"rendered":"https:\/\/prohoster.info\/blog\/vvedenie-v-setevye-politiki-kubernetes-dlya-spetsialistov-po-bezopasnosti\/"},"modified":"2019-10-31T21:48:11","modified_gmt":"2019-10-31T18:48:11","slug":"vvedenie-v-setevye-politiki-kubernetes-dlya-spetsialistov-po-bezopasnosti","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/vvedenie-v-setevye-politiki-kubernetes-dlya-spetsialistov-po-bezopasnosti","title":{"rendered":"Kubernetesi v\u00f5rgupoliitikate sissejuhatus turbespetsialistidele","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Kubernetesi v\u00f5rgupoliitikate sissejuhatus turbespetsialistidele\" src=\"\/wp-content\/uploads\/2019\/04\/6972a1e1385463b1fcc723c09036a565.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i><b>M\u00e4rkus t\u00f5lke kohta.<\/b>: Artikli autor Reuven Harrison omab \u00fcle 20 aasta tarkvaraarenduse kogemust ning on praegu Tufin'i tehniline direktor ja kaasasutaja, kes loob turvapoliitikate haldamise lahendusi. Kuigi ta peab Kubernetes'e v\u00f5rgu poliitikaid piisavalt v\u00f5imsaks, et neist saaks kasutada v\u00f5rgu segmenteerimist klasteris, arvab ta siiski, et need ei ole praktikas nii lihtsad rakendada. See ulatuslik materjal on m\u00f5eldud spetsialistide teadlikkuse t\u00f5stmiseks ning nende abistamiseks vajalike konfiguratsioonide loomisel.<\/i><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>T\u00e4nap\u00e4eval valivad j\u00e4rjest rohkem ettev\u00f5tteid Kubernetes'e oma rakenduste k\u00e4ivitamiseks. Huvi selle tarkvara vastu on nii k\u00f5rge, et m\u00f5ned nimetavad Kubernetes'e \u201euueks operatsioonis\u00fcsteemiks andmekeskustes\u201c. Aja jooksul hakatakse Kubernetes'e (v\u00f5i k8s) pidama \u00e4ri kriitiliselt oluliseks osaks, mis n\u00f5uab k\u00fcpsete \u00e4ri protsesside korraldamist, sealhulgas v\u00f5rgu turvalisuse tagamist.<\/p>\n<p>K\u00fcberturbe spetsialistidele, kes seisavad silmitsi Kubernetes'e kasutamisega, v\u00f5ib t\u00f5eliseks \u00fcllatuseks olla selle platvormi vaikimisi poliitika: lubada k\u00f5ike.<\/p>\n<p>See juhend aitab m\u00f5ista v\u00f5rgu poliitikate sisemist \u00fclesehitust ja selles eristumist tavaliste tulem\u00fc\u00fcride reeglitest. R\u00e4\u00e4gitakse ka m\u00f5nest takistustest ning antakse soovitusi, mis aitavad kaitsta rakendusi Kubernetes'es.<\/p>\n<h2>Kubernetes'e v\u00f5rgu poliitikad<\/h2>\n<p>\nKubernetes'e v\u00f5rgu poliitikate mehhanism v\u00f5imaldab hallata rakenduste vahelisi suhteid v\u00f5rgu tasandil (kolmas tase OSI mudelis). V\u00f5rgu poliitikad on ilma m\u00f5nede kaasaegsete tulem\u00fc\u00fcride edasij\u00f5udnud omadusteta, nagu seitsmenda taseme OSI kontroll ja ohu tuvastamine, kuid need tagavad p\u00f5hilise v\u00f5rgu turvalisuse taseme, mis on hea alguspunkt.<\/p>\n<h2>V\u00f5rgupoliitikad kontrollivad suhtlust pod'ide vahel.<\/h2>\n<p>\nT\u00f6\u00f6koormused Kuberneteses jagunevad pod'ide vahel, mis koosnevad \u00fchest v\u00f5i mitmest konteinerist, mis on koos juurutatud. Kubernetes m\u00e4\u00e4rab igale pod'ile IP-aadresse, mis on teiste pod'ide jaoks kergesti ligip\u00e4\u00e4setavad. Kubernetes'e v\u00f5rgupoliitikad m\u00e4\u00e4ravad juurdep\u00e4\u00e4su\u00f5igused pod'ide gruppidele analoogselt pilves kasutatavate turvagruppidega, mis haldavad juurdep\u00e4\u00e4su virtuaalmasinate instantsidele.<\/p>\n<h2>V\u00f5rgupoliitikate m\u00e4\u00e4ratlemine<\/h2>\n<p>\nNagu k\u00f5ik teised Kubernetes'i ressurssidest, on v\u00f5rgupoliitikad m\u00e4\u00e4ratletud YAML keeles. Allolevas n\u00e4ites avatakse rakendusele <code>balance<\/code> juurdep\u00e4\u00e4s <code>postgres<\/code>:<\/p>\n<pre><code class=\"plaintext\">apiVersion: networking.k8s.io\/v1\nkind: NetworkPolicy\nmetadata:\n  name: default.postgres\n  namespace: default\nspec:\n  podSelector:\n    matchLabels:\n      app: postgres\n  ingress:\n  - from:\n    - podSelector:\n        matchLabels:\n          app: balance\n  policyTypes:\n  - Ingress<\/code><\/pre>\n<p>\n<img decoding=\"async\" alt=\"Kubernetesi v\u00f5rgupoliitikate sissejuhatus turbespetsialistidele\" src=\"\/wp-content\/uploads\/2019\/04\/ff5857af2641e62558b035bab9c413dc.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i>(<b>M\u00e4rkus t\u00f5lke kohta.<\/b>: see ekraanipilt, nagu k\u00f5ik j\u00e4rgnevad sarnased, on loodud mitte Kubernetes'i originaalitootmisvahendite abil, vaid Tufin Orca t\u00f6\u00f6riista kaudu, mille arendust toetab originaali artikli autor ja mis mainitakse materjali l\u00f5pus.<\/i><\/p>\n<p>Oma v\u00f5rgupoliitika m\u00e4\u00e4ratlemiseks on vajalikud p\u00f5hiteadmised YAML-ist. See keel p\u00f5hineb sisset\u00f5mbeindentatsioonil (mida m\u00e4\u00e4ravad t\u00fchikud, mitte tabulaatorid). Indentatsiooniga element kuulub k\u00f5ige l\u00e4hemale indentatsiooniga elemendile, mis on selle kohal. Uus loendi element algab sidekriipsuga, k\u00f5ik teised elemendid n\u00e4evad v\u00e4lja <i>v\u00f5tme-v\u00e4\u00e4rtuse paar<\/i>.<\/p>\n<p>YAML-is poliitika m\u00e4\u00e4ratlemise j\u00e4rel kasutage <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/reference\/kubectl\/kubectl\/\">kubectl<\/a><\/noindex>, et luua see klastris:<\/p>\n<pre><code class=\"bash\">kubectl create -f policy.yaml<\/code><\/pre>\n<p><\/p>\n<h2>V\u00f5rgupoliitika spetsifikatsioon<\/h2>\n<p>\nKubernetes'i v\u00f5rgupoliitika spetsifikatsioon sisaldab nelja elementi:<\/p>\n<ol>\n<li> <code>podSelector<\/code>: m\u00e4\u00e4ratleb pod'id, mida see poliitika puudutab (eesm\u00e4rgid) \u2014 kohustuslik;<\/li>\n<li> <code>policyTypes<\/code>: n\u00e4itab, milliseid poliitikate t\u00fc\u00fcpe see sisaldab: ingress ja\/v\u00f5i egress \u2014 valikuline, kuid soovitan seda k\u00f5igil juhtudel selgelt v\u00e4lja tuua;<\/li>\n<li> <code>ingress<\/code>: m\u00e4\u00e4ratleb lubatud <b>sisenemine<\/b> liiklus siht-pod'idesse \u2014 valikuline;<\/li>\n<li> <code>egress<\/code>: m\u00e4\u00e4ratleb lubatud <b>v\u00e4ljuv<\/b> liiklus siht-pod'idest \u2014 valikuline.<\/li>\n<\/ol>\n<p>\nN\u00e4ide, mis on saadud Kubernetes'i saidilt (ma vahetasin <code>role<\/code> . Tundub, et <code>app<\/code>), n\u00e4itab, kuidas kasutatakse k\u00f5iki nelja elementi:<\/p>\n<pre><code class=\"plaintext\">apiVersion: networking.k8s.io\/v1\nkind: NetworkPolicy\nmetadata:\n  name: test-network-policy\n  namespace: default\nspec:\n  podSelector:    # &lt;&lt;&lt;\n    matchLabels:\n      app: db\n  policyTypes:    # &lt;&lt;&lt;\n  - Ingress\n  - Egress\n  ingress:        # &lt;&lt;&lt;\n  - from:\n    - ipBlock:\n        cidr: 172.17.0.0\/16\n        except:\n        - 172.17.1.0\/24\n    - namespaceSelector:\n        matchLabels:\n          project: myproject\n    - podSelector:\n        matchLabels:\n          role: frontend\n    ports:\n    - protocol: TCP\n      port: 6379\n  egress:         # &lt;&lt;&lt;\n  - to:\n    - ipBlock:\n        cidr: 10.0.0.0\/24\n    ports:\n    - protocol: TCP\n      port: 5978<\/code><\/pre>\n<p>\n<img decoding=\"async\" alt=\"Kubernetesi v\u00f5rgupoliitikate sissejuhatus turbespetsialistidele\" src=\"\/wp-content\/uploads\/2019\/04\/f01e748410564756d6272095093e52e2.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<img decoding=\"async\" alt=\"Kubernetesi v\u00f5rgupoliitikate sissejuhatus turbespetsialistidele\" src=\"\/wp-content\/uploads\/2019\/04\/997282073ee6b5c4d6b7af45cdc11295.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPange t\u00e4hele, et k\u00f5iki nelja elementi ei pea lisama. Kohustuslik on ainult <code>podSelector<\/code>, \u00fclej\u00e4\u00e4nud parameetreid saab kasutada soovi korral.<\/p>\n<p>Kui j\u00e4tta v\u00e4lja <code>policyTypes<\/code>, t\u00f5lgendatakse poliitikat j\u00e4rgmiselt:<\/p>\n<ul>\n<li> Vaikimisi eeldatakse, et see m\u00e4\u00e4ratleb ingress-osa. Kui poliitikas ei ole selgeid juhiseid selle kohta, peab s\u00fcsteem seda tulu keelama.<\/li>\n<li> Egress-osa k\u00e4itumine m\u00e4\u00e4ratakse vastava egress-parameetri olemasolu v\u00f5i puudumise j\u00e4rgi.<\/li>\n<\/ul>\n<p>\nVigade v\u00e4ltimiseks soovitan <b>alati selgelt m\u00e4\u00e4rata <code>policyTypes<\/code><\/b>.<\/p>\n<p>\u00dclaltoodud loogika kohaselt, juhul kui parameetrid <code>ingress<\/code> ja\/or <code>egress<\/code> on v\u00e4lja j\u00e4etud, keelab poliitika kogu liikluse (vt \"Puhastamise reegel\" allpool).<\/p>\n<h2>Vaikimisi poliitika on lubada<\/h2>\n<p>\nKui poliitikaid ei ole m\u00e4\u00e4ratletud, lubab Kubernetes vaikimisi kogu liikluse. K\u00f5ik pod'id saavad omavahel vabalt teavet vahetada. Turvalisuse seisukohalt v\u00f5ib see tunduda ebaloogiline, kuid pidage meeles, et Kubernetes loodi algselt arendajate poolt rakenduste suhtluse toetamiseks. V\u00f5rgupoliitikad lisati hiljem.<\/p>\n<h2>Nimi<\/h2>\n<p>\nNimi (Namespaces) on Kubernetes'i koost\u00f6\u00f6 mehhanism. Neid kasutatakse loogiliste keskkondade \u00fcksteisest eristamiseks, samas on andmevahetus nimede vahel vaikimisi lubatud.<\/p>\n<p>Nagu enamik Kubernetes'i komponente, elavad v\u00f5rgu poliitikad teatud nimes. Plokis <code>metadata<\/code> v\u00f5ib m\u00e4\u00e4rata, kellele poliitika kuulub:<\/p>\n<pre><code class=\"plaintext\">apiVersion: networking.k8s.io\/v1\nkind: NetworkPolicy\nmetadata:\n  name: test-network-policy\n  namespace: my-namespace  # &lt;&lt;&lt;\nspec:\n...<\/code><\/pre>\n<p>\nKui nimes ei ole metaandmetes selgelt m\u00e4\u00e4ratud, kasutab s\u00fcsteem kubectlis m\u00e4\u00e4ratud namespace'i (vaikimisi <code>namespace=default<\/code>):<\/p>\n<pre><code class=\"bash\">kubectl apply -n my-namespace -f namespace.yaml<\/code><\/pre>\n<p>\nSoovitan <b>selgelt m\u00e4\u00e4rata namespace<\/b>, kui te ei kirjuta poliitikat, mis on m\u00f5eldud kohe mitme nimeala jaoks.<\/p>\n<p><b>P\u00f5hi<\/b> element <code>podSelector<\/code> poliitikas valitakse pod'id, mis kuuluvad poliitikaga seotud nimeruumi (ta ei p\u00e4\u00e4se ligi teiste nimeruumide pod'idele).<\/p>\n<p>Sarnaselt podSelector'itega <b>ingress ja egress plokkides<\/b> v\u00f5ivad valida pod'e ainult oma nimealast, kui te neid ei \u00fchenda <code>namespaceSelector<\/code> (sellest r\u00e4\u00e4gitakse peat\u00fckis 'Filtreerimine nimealade ja pod'ide j\u00e4rgi').<\/p>\n<h2>Poliitika nimereeglid<\/h2>\n<p>\nPoliitika nimed on unikaalsed \u00fche nimeala raames. \u00dches nimealas ei saa olla kahte sama nimega poliitikat, kuid eri nimealade vahel v\u00f5ivad olla poliitikad sama nimega. See on mugav, kui soovite sama poliitikat mitmetes nimealades uuesti rakendada.<\/p>\n<p>Mulle meeldib eriti \u00fcks nimede m\u00e4\u00e4ramise viis. See seisneb selles, et kombineerida nimeala nimi sihtpod'idega. N\u00e4iteks:<\/p>\n<pre><code class=\"plaintext\">apiVersion: networking.k8s.io\/v1\nkind: NetworkPolicy\nmetadata:\n  name: default.postgres  # &lt;&lt;&lt;\n  namespace: default\nspec:\n  podSelector:\n    matchLabels:\n      app: postgres\n  ingress:\n  - from:\n    - podSelector:\n        matchLabels:\n          app: admin\n  policyTypes:\n  - Ingress<\/code><\/pre>\n<p>\n<img decoding=\"async\" alt=\"Kubernetesi v\u00f5rgupoliitikate sissejuhatus turbespetsialistidele\" src=\"\/wp-content\/uploads\/2019\/04\/18318c320d6e37eeb01c51f251550639.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>M\u00e4rgid<\/h2>\n<p>\nKubernetes objektidele, nagu pod'id ja nimealad, saab kinnitada kohandatud m\u00e4rgid. M\u00e4rgid (<i>labels<\/i> \u2014 etiketid) on sarnased pilvem\u00e4rkmetele. Kubernetes v\u00f5rgupoliitikad kasutavad m\u00e4rke valiku tegemiseks <b>pod'id<\/b>, millele neid rakendatakse:<\/p>\n<pre><code class=\"plaintext\">podSelector:\n  matchLabels:\n    role: db<\/code><\/pre>\n<p>\n\u2026 v\u00f5i <b>nimealasid<\/b>, millele neid kohaldatakse. Selles n\u00e4ites valitakse k\u00f5ik pod'id, mis asuvad nimealadega, millel on vastavad sildid:<\/p>\n<pre><code class=\"plaintext\">namespaceSelector:\n  matchLabels:\n    project: myproject<\/code><\/pre>\n<p>\n\u00dcks ettevaatusabin\u00f5u: kui kasutate <code>namespaceSelector<\/code> <b>, veenduge, et valitud nimealad sisaldavad soovitud m\u00e4rki<\/b>. Pidage meeles, et sisseehitatud nimealad, nagu <code>Seej\u00e4rel k\u00e4ivitame exec k\u00e4su ja ootame 5000 sekundit, et j\u00e4tkata j\u00e4lgimist:<\/code> ja <code>kubectl -n kube-system edit cm kubelet-config-1.16<\/code>, ei sisalda vaikimisi m\u00e4rke.<\/p>\n<p>Nimele saab lisada m\u00e4rgi j\u00e4rgmiselt:<\/p>\n<pre><code class=\"bash\">kubectl label namespace default namespace=default<\/code><\/pre>\n<p>\nSel juhul peab nimeala jaotises <code>metadata<\/code> viitama tegelikule nimeala nimetusele, mitte m\u00e4rgile:<\/p>\n<pre><code class=\"plaintext\">apiVersion: networking.k8s.io\/v1\nkind: NetworkPolicy\nmetadata:\n  name: test-network-policy\n  namespace: default   # &lt;&lt;&lt;\nspec:\n...<\/code><\/pre>\n<p><\/p>\n<h2>Allikas ja adressaat<\/h2>\n<p>\nTulekahju muuripoliitikad koosnevad reeglitest, kus on allikaid ja sihtkohti. Kubernetes'e v\u00f5rgupoliitikad m\u00e4\u00e4ratlevad sihtkoha \u2014 pod'ide hulga, millele neid kohaldatakse, ja seej\u00e4rel kehtestavad reeglid sissetulevale (ingress) ja\/v\u00f5i v\u00e4ljaminevale (egress) liiklusele. Meie n\u00e4ites on poliitika sihtpunktiks k\u00f5ik pod'id nimealas <code>Seej\u00e4rel k\u00e4ivitame exec k\u00e4su ja ootame 5000 sekundit, et j\u00e4tkata j\u00e4lgimist:<\/code> m\u00e4rgiga, millel on v\u00f5ti <code>app<\/code> ja v\u00e4\u00e4rtusega <code>. Teenuse v\u00f5rgud lahendavad sarnaseid probleeme tavaliselt mTLS-i kaudu: sertifikaadid on antud juhul olulise identifikaatorina.<\/code>:<\/p>\n<pre><code class=\"plaintext\">apiVersion: networking.k8s.io\/v1\nkind: NetworkPolicy\nmetadata:\n  name: test-network-policy\n  namespace: default\nspec:\n  podSelector:\n    matchLabels:\n      app: db   # &lt;&lt;&lt;\n  policyTypes:\n  - Ingress\n  - Egress\n  ingress:\n  - from:\n    - ipBlock:\n        cidr: 172.17.0.0\/16\n        except:\n        - 172.17.1.0\/24\n    - namespaceSelector:\n        matchLabels:\n          project: myproject\n    - podSelector:\n        matchLabels:\n          role: frontend\n    ports:\n    - protocol: TCP\n      port: 6379\n  egress:\n  - to:\n    - ipBlock:\n        cidr: 10.0.0.0\/24\n    ports:\n    - protocol: TCP\n      port: 5978<\/code><\/pre>\n<p>\n<img decoding=\"async\" alt=\"Kubernetesi v\u00f5rgupoliitikate sissejuhatus turbespetsialistidele\" src=\"\/wp-content\/uploads\/2019\/04\/5fcb3f78e26ae1ed5635541ad69ef69f.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<img decoding=\"async\" alt=\"Kubernetesi v\u00f5rgupoliitikate sissejuhatus turbespetsialistidele\" src=\"\/wp-content\/uploads\/2019\/04\/c753f559ecc3ba54f8b55e29851428c4.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAlam <code>ingress<\/code> selles poliitikas avab sissetuleva liikluse sihtpod'idele. Teisis\u00f5nu, ingress on allikas ning siht on sobiv adressaat. Sarnaselt on egress adressaat ja siht tema allikas.<\/p>\n<p><img decoding=\"async\" alt=\"Kubernetesi v\u00f5rgupoliitikate sissejuhatus turbespetsialistidele\" src=\"\/wp-content\/uploads\/2019\/04\/a0d865de57a7620849074424770832cd.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i>See on ekvivalent kahe firewall'i reegli jaoks: Ingress \u2192 Eesm\u00e4rk; Eesm\u00e4rk \u2192 Egress.<\/i><\/p>\n<h2>Egress ja DNS (t\u00e4htis!)<\/h2>\n<p>\nV\u00e4ljamineva liikluse piiramisel, <b>p\u00f6\u00f6rake erilist t\u00e4helepanu DNS-ile<\/b> \u2014 Kubernetes kasutab seda teenust teenuste sidumiseks IP-aadressidega. N\u00e4iteks j\u00e4rgmine poliitika ei t\u00f6\u00f6ta, kuna te ei ole rakendusele lubanud <code>balance<\/code> suhelda DNS-iga:<\/p>\n<pre><code class=\"plaintext\">apiVersion: networking.k8s.io\/v1\nkind: NetworkPolicy\nmetadata:\n  name: default.balance\n  namespace: default\nspec:\n  podSelector:\n    matchLabels:\n      app: balance\n  egress:\n  - to:\n    - podSelector:\n        matchLabels:\n          app: postgres\n  policyTypes:\n  - Egress<\/code><\/pre>\n<p>\n<img decoding=\"async\" alt=\"Kubernetesi v\u00f5rgupoliitikate sissejuhatus turbespetsialistidele\" src=\"\/wp-content\/uploads\/2019\/04\/5857a44cc5e06de708f0d3b5b0f49628.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSeda saab parandada, avades juurdep\u00e4\u00e4su DNS-teenusele:<\/p>\n<pre><code class=\"plaintext\">apiVersion: networking.k8s.io\/v1\nkind: NetworkPolicy\nmetadata:\n  name: default.balance\n  namespace: default\nspec:\n  podSelector:\n    matchLabels:\n      app: balance\n  egress:\n  - to:\n    - podSelector:\n        matchLabels:\n          app: postgres\n  - to:               # &lt;&lt;&lt;\n    ports:            # &lt;&lt;&lt;\n    - protocol: UDP   # &lt;&lt;&lt;\n      port: 53        # &lt;&lt;&lt;\n  policyTypes:\n  - Egress<\/code><\/pre>\n<p>\n<img decoding=\"async\" alt=\"Kubernetesi v\u00f5rgupoliitikate sissejuhatus turbespetsialistidele\" src=\"\/wp-content\/uploads\/2019\/04\/a396bb2ae94fca94c3b62aef2cb07552.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nViimane element <code>to<\/code> \u2014 t\u00fchi, ja seega valib see kaudselt <b>k\u00f5ik pod'id k\u00f5igis nimealades<\/b>, v\u00f5imaldades <code>balance<\/code> saata DNS-p\u00e4ringud vastavale Kubernetes teenusele (see t\u00f6\u00f6tab tavaliselt nimede vahel) <code>kubectl -n kube-system edit cm kubelet-config-1.16<\/code>).<\/p>\n<p>See l\u00e4henemine toimib, however it <b>on liiga lubav ja ebaturvaline<\/b>, kuna see v\u00f5imaldab suunata DNS-p\u00e4ringud klastrist v\u00e4ljapoole.<\/p>\n<p>Seda saab paranda kolme j\u00e4rjestikuse sammuga.<\/p>\n<p>1. Lubage DNS-p\u00e4ringud ainult <b>sees<\/b> klastri, lisades <code>namespaceSelector<\/code>:<\/p>\n<pre><code class=\"plaintext\">apiVersion: networking.k8s.io\/v1\nkind: NetworkPolicy\nmetadata:\n  name: default.balance\n  namespace: default\nspec:\n  podSelector:\n    matchLabels:\n      app: balance\n  egress:\n  - to:\n    - podSelector:\n        matchLabels:\n          app: postgres\n  - to:\n    - namespaceSelector: {} \n    ports:\n    - protocol: UDP\n      port: 53\n  policyTypes:\n  - Egress<\/code><\/pre>\n<p>\n<img decoding=\"async\" alt=\"Kubernetesi v\u00f5rgupoliitikate sissejuhatus turbespetsialistidele\" src=\"\/wp-content\/uploads\/2019\/04\/5920a043229676e0780d691d302c5ade.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n2. Lubage DNS-p\u00e4ringute tegemiseks ainult nimetuste ruumis <code>kubectl -n kube-system edit cm kubelet-config-1.16<\/code>.<\/p>\n<p>Selleks tuleb lisada silt nimetuste ruumi <code>kubectl -n kube-system edit cm kubelet-config-1.16<\/code>: <code>kubectl label namespace kube-system namespace=kube-system<\/code> \u2014 ja m\u00e4\u00e4rata see poliitika kaudu <code>namespaceSelector<\/code>:<\/p>\n<pre><code class=\"plaintext\">apiVersion: networking.k8s.io\/v1\nkind: NetworkPolicy\nmetadata:\n  name: default.balance\n  namespace: default\nspec:\n  podSelector:\n    matchLabels:\n      app: balance\n  egress:\n  - to:\n    - podSelector:\n        matchLabels:\n          app: postgres\n  - to:\n    - namespaceSelector:         \n        matchLabels:             \n          namespace: kube-system \n    ports:\n    - protocol: UDP\n      port: 53\n  policyTypes:\n  - Egress<\/code><\/pre>\n<p>\n<img decoding=\"async\" alt=\"Kubernetesi v\u00f5rgupoliitikate sissejuhatus turbespetsialistidele\" src=\"\/wp-content\/uploads\/2019\/04\/2a1dd0975c58e6d277baffc7c3ac6e48.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n3. Paranoikud v\u00f5ivad minna veelgi kaugemale ja piirata DNS-p\u00e4ringute tegemist kindla DNS-teenusega <code>kubectl -n kube-system edit cm kubelet-config-1.16<\/code>. Peat\u00fckis 'Filtreerimine nimealade ja pod'ide j\u00e4rgi' r\u00e4\u00e4gitakse, kuidas seda saavutada.<\/p>\n<p>Teine variant on lubada DNS nimetuste ruumi tasemel. Sel juhul ei pea seda avama iga teenuse jaoks:<\/p>\n<pre><code class=\"plaintext\">apiVersion: networking.k8s.io\/v1\nkind: NetworkPolicy\nmetadata:\n  name: default.dns\n  namespace: default\nspec:\n  podSelector: {} \n  egress:\n  - to:\n    - namespaceSelector: {}\n    ports:\n    - protocol: UDP\n      port: 53\n  policyTypes:\n  - Egress<\/code><\/pre>\n<p>\nT\u00fchi <code>podSelector<\/code> valib k\u00f5ik pod'id nimetuste ruumis.<\/p>\n<p><img decoding=\"async\" alt=\"Kubernetesi v\u00f5rgupoliitikate sissejuhatus turbespetsialistidele\" src=\"\/wp-content\/uploads\/2019\/04\/5d6b627b69da980477b3910fbf4de6c1.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Esimene vastavus ja reeglite j\u00e4rjekord<\/h2>\n<p>\nTavap\u00e4rastel tulem\u00fc\u00fcridel m\u00e4\u00e4ratakse paketi suhtes tegevus (\"Luba\" v\u00f5i \"Keela\") esimesele reeglile, millele see vastab. <b>Kuberneteses pole poliitikate j\u00e4rjekorral mingit t\u00e4hendust.<\/b><\/p>\n<p>Vaikimisi, kui poliitikaid ei ole m\u00e4\u00e4ratud, on pod'ide vaheline suhtlus lubatud ja nad v\u00f5ivad vabalt teavet vahetada. Niipea kui hakkate poliitikaid looma, muutub iga pod, mida m\u00f5jutab v\u00e4hemalt \u00fcks neist, isoleerituks vastavalt nende poliitikate l\u00f5ikamisele (loogilise V\u00d5I) k\u00f5ikidesse poliitikatest, mis teda puudutasid. Pod'id, mida mingi poliitika ei m\u00f5juta, j\u00e4\u00e4vad avatud.<\/p>\n<p>Sarnast k\u00e4itumist saab muuta puhastusreegli abil.<\/p>\n<h2>Puhastusreegel (\"Keela\")<\/h2>\n<p>\nTulem\u00fc\u00fcride poliitikad keelavad tavaliselt k\u00f5ik selgelt mitte lubatud liikluse.<\/p>\n<p><b>Kuberneteses ei ole \"keela\" tegevust<\/b>, kuid sama m\u00f5ju saab saavutada ka tavalise (lubava) poliitikaga, valides t\u00fchja allika pod&#8217;de grupi (ingress):<\/p>\n<pre><code class=\"plaintext\">apiVersion: networking.k8s.io\/v1\nkind: NetworkPolicy\nmetadata:\n  name: deny-all\n  namespace: default\nspec:\n  podSelector: {}\n  policyTypes:\n  - Ingress<\/code><\/pre>\n<p>\n<img decoding=\"async\" alt=\"Kubernetesi v\u00f5rgupoliitikate sissejuhatus turbespetsialistidele\" src=\"\/wp-content\/uploads\/2019\/04\/8b3ced50ec5a1de70940d53f467966fe.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSee poliitika valib k\u00f5ik pod&#8217;id nimi ruumis ja j\u00e4tab ingressi m\u00e4\u00e4ratlemata, keelates kogu sissetuleva liikluse.<\/p>\n<p>Sarnasel viisil on v\u00f5imalik piirata kogu v\u00e4ljuvat liiklust nimestikus:<\/p>\n<pre><code class=\"plaintext\">apiVersion: networking.k8s.io\/v1\nkind: NetworkPolicy\nmetadata:\n  name: deny-all-egress\n  namespace: default\nspec:\n  podSelector: {}\n  policyTypes:\n  - Egress<\/code><\/pre>\n<p>\n<img decoding=\"async\" alt=\"Kubernetesi v\u00f5rgupoliitikate sissejuhatus turbespetsialistidele\" src=\"\/wp-content\/uploads\/2019\/04\/be22e11efef0098f2665331c09d748f2.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPange t\u00e4hele, et <b>k\u00f5ik t\u00e4iendavad poliitikad, mis lubavad liikluse nime ruumis olevatele pod&#8217;idele, on selle reegli \u00fcle prioritaarsemad<\/b> (sarnane lubava reegli lisamisega keelu reegli ette tulem\u00fc\u00fcris).<\/p>\n<h2>Luba k\u00f5ik (Any-Any-Any-Allow)<\/h2>\n<p>\nSelleks, et luua \"Luba k\u00f5ik\" poliitika, on vaja t\u00e4iendavalt lisada \u00fclaltoodud keelu poliitikale t\u00fchi element <code>ingress<\/code>:<\/p>\n<pre><code class=\"plaintext\">apiVersion: networking.k8s.io\/v1\nkind: NetworkPolicy\nmetadata:\n  name: allow-all\n  namespace: default\nspec:\n  podSelector: {}\n  ingress: # &lt;&lt;&lt;\n  - {}     # &lt;&lt;&lt;\n  policyTypes:\n  - Ingress<\/code><\/pre>\n<p>\n<img decoding=\"async\" alt=\"Kubernetesi v\u00f5rgupoliitikate sissejuhatus turbespetsialistidele\" src=\"\/wp-content\/uploads\/2019\/04\/7322351493211388fe772b8dc270108d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSee avab juurdep\u00e4\u00e4su k\u00f5ikidest pod'idest k\u00f5igis nimestikes (ja k\u00f5ikidest IP-dest) igale pod'ile nimestikus <b>k\u00f5iki pod&#8217;e k\u00f5igis nime ruumides (ja k\u00f5ik IP) igasse pod&#8217;isse nime ruumis <code>Seej\u00e4rel k\u00e4ivitame exec k\u00e4su ja ootame 5000 sekundit, et j\u00e4tkata j\u00e4lgimist:<\/code><\/b>Reeglit saab kitsendada ja lubada juurdep\u00e4\u00e4s ainult<\/p>\n<p>m\u00f5ningatele m\u00e4\u00e4ratud pod'idele <b>kindlale pod&#8217;ide kogumile<\/b> (<code>) nimestikus<\/code>apiVersion: networking.k8s.io\/v1\nkind: NetworkPolicy\nmetadata:\n  name: allow-all-to-balance\n  namespace: default\nspec:\n  podSelector:\n    matchLabels:\n      app: balance\n  ingress: \n  - {}\n  policyTypes:\n  - Ingress <code>Seej\u00e4rel k\u00e4ivitame exec k\u00e4su ja ootame 5000 sekundit, et j\u00e4tkata j\u00e4lgimist:<\/code>:<\/p>\n<pre><code class=\"plaintext\">J\u00e4rgmine poliitika lubab kogu sissetuleva (ingress) ja v\u00e4ljuva (egress) liikluse, sealhulgas juurdep\u00e4\u00e4su igale IP-le klastrist v\u00e4ljas:<\/code><\/pre>\n<p>\n<img decoding=\"async\" alt=\"Kubernetesi v\u00f5rgupoliitikate sissejuhatus turbespetsialistidele\" src=\"\/wp-content\/uploads\/2019\/04\/d8c9cb85003f489acec815d1c2b53497.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\napiVersion: networking.k8s.io\/v1\nkind: NetworkPolicy\nmetadata:\n  name: allow-all\nspec:\n  podSelector: {}\n  ingress:\n  - {}\n  egress:\n  - {}\n  policyTypes:\n  - Ingress\n  - Egress<\/p>\n<pre><code class=\"plaintext\">Mitme poliitika \u00fchendamine<\/code><\/pre>\n<p>\n<img decoding=\"async\" alt=\"Kubernetesi v\u00f5rgupoliitikate sissejuhatus turbespetsialistidele\" src=\"\/wp-content\/uploads\/2019\/04\/2477f18d3d228f80bc5169d9ec3be2fc.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<img decoding=\"async\" alt=\"Kubernetesi v\u00f5rgupoliitikate sissejuhatus turbespetsialistidele\" src=\"\/wp-content\/uploads\/2019\/04\/3502b892713cdac8850e812b2eff3ea3.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Poliitikad \u00fchendatakse loogilise V\u00d5I abil kolmel tasemel; iga pod'i loakombinatsioon m\u00e4\u00e4ratakse k\u00f5igi poliitikate d\u00fcsjunksiooni p\u00f5hjal, mis sellele m\u00f5juvad:<\/h2>\n<p>\nPoliitikat \u00fchendatakse kolme astme loogilise V abil; iga pod&#8217;ile antud lubamine m\u00e4\u00e4ratakse tema m\u00f5jutavate poliitikate disjunktide kohaselt:<\/p>\n<p>saab m\u00e4\u00e4rata kolme t\u00fc\u00fcbi elemente (k\u00f5ik need on kombineeritud V\u00d5I abil): <code>from<\/code> ja <code>to<\/code> \u2014 valib nimesse tervikuna;<\/p>\n<ul>\n<li> <code>namespaceSelector<\/code> \u2014 valib pod'id;<\/li>\n<li> <code>podSelector<\/code> ipBlock<\/li>\n<li> <code>\u2014 valib alamv\u00f5rgu.<\/code> Kuid elementide (isegi sama) arv alampunktides<\/li>\n<\/ul>\n<p>\nei ole piiratud. K\u00f5ik need \u00fchendatakse loogilise V\u00d5I abil. <code>from<\/code>\/<code>to<\/code> piiramatu. K\u00f5ik need \u00fchendatakse loogilise V\u00d5I-operatsiooniga.<\/p>\n<pre><code class=\"plaintext\">apiVersion: networking.k8s.io\/v1\nkind: NetworkPolicy\nmetadata:\n  name: default.postgres\n  namespace: default\nspec:\n  ingress:\n  - from:\n    - podSelector:\n        matchLabels:\n          app: indexer\n    - podSelector:\n        matchLabels:\n          app: admin\n  podSelector:\n    matchLabels:\n      app: postgres\n  policyTypes:\n  - Ingress<\/code><\/pre>\n<p>\n<img decoding=\"async\" alt=\"Kubernetesi v\u00f5rgupoliitikate sissejuhatus turbespetsialistidele\" src=\"\/wp-content\/uploads\/2019\/04\/717e745720f39260a8508fb2b2bb6f65.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n2. Jagamise poliitika sees <code>ingress<\/code> v\u00f5ib sisaldada mitmeid elemente <code>from<\/code> (kookonduvad loogilise V\u00d5I abil). Samamoodi v\u00f5ib jagamise osa <code>egress<\/code> ka sisaldada mitmeid elemente <code>to<\/code> (samuti kookonduvad disjunktsiooniga):<\/p>\n<pre><code class=\"plaintext\">apiVersion: networking.k8s.io\/v1\nkind: NetworkPolicy\nmetadata:\n  name: default.postgres\n  namespace: default\nspec:\n  ingress:\n  - from:\n    - podSelector:\n        matchLabels:\n          app: indexer\n  - from:\n    - podSelector:\n        matchLabels:\n          app: admin\n  podSelector:\n    matchLabels:\n      app: postgres\n  policyTypes:\n  - Ingress<\/code><\/pre>\n<p>\n<img decoding=\"async\" alt=\"Kubernetesi v\u00f5rgupoliitikate sissejuhatus turbespetsialistidele\" src=\"\/wp-content\/uploads\/2019\/04\/b579e1f4b97acd92fb38cd6703aa1983.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n3. Erinevaid poliitikaid \u00fchendatakse samuti loogilise V\u00d5I abil<\/p>\n<p>Kuid nende \u00fchendamisel on \u00fcks piirang, millele <noindex><a rel=\"nofollow\" href=\"https:\/\/medium.com\/sainsburys-engineering\/considerations-with-k8s-networkpolicy-cee7eacf5469\">mainis<\/a><\/noindex> <noindex><a rel=\"nofollow\" href=\"https:\/\/medium.com\/@chriscooney\">Chris Cooney<\/a><\/noindex>: Kubernetes v\u00f5ib poliitikad kombineerida ainult erinevatega <code>policyTypes<\/code> (<code>Ingress<\/code> v\u00f5i <code>V\u00e4ljaminev<\/code>). Poliitikad, mis m\u00e4\u00e4ratlevad sisendi (v\u00f5i v\u00e4ljundi), kirjutavad \u00fcksteist \u00fcle.<\/p>\n<h2>Ruumi vahel<\/h2>\n<p>\nVaikimisi on teabe vahetamine ruumide vahel lubatud. Seda saab muuta piirava poliitikaga, mis piirab v\u00e4ljaminevat ja\/v\u00f5i sisenevat liiklust ruumi (vt 'Puhastamise reegel' eespool).<\/p>\n<p>Piirates juurdep\u00e4\u00e4su ruumile (vt 'Puhastamise reegel' eespool), saate teha erandeid piiravas poliitikas, lubades \u00fchendusi kindlast ruumist kaudu <code>namespaceSelector<\/code>:<\/p>\n<pre><code class=\"plaintext\">apiVersion: networking.k8s.io\/v1\nkind: NetworkPolicy\nmetadata:\n  name: database.postgres\n  namespace: database\nspec:\n  podSelector:\n    matchLabels:\n      app: postgres\n  ingress:\n  - from:\n    - namespaceSelector: # &lt;&lt;&lt;\n        matchLabels:\n          namespace: default\n  policyTypes:\n  - Ingress<\/code><\/pre>\n<p>\n<img decoding=\"async\" alt=\"Kubernetesi v\u00f5rgupoliitikate sissejuhatus turbespetsialistidele\" src=\"\/wp-content\/uploads\/2019\/04\/5a3d2baed1ff9b813ef0651fe500ad8a.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTulemuseks on, et k\u00f5ik pod'id ruumis <code>Seej\u00e4rel k\u00e4ivitame exec k\u00e4su ja ootame 5000 sekundit, et j\u00e4tkata j\u00e4lgimist:<\/code> saavad juurdep\u00e4\u00e4su pod&#8217;idele <code>postgres<\/code> nimede ruumis <code>database<\/code>. Aga mis siis, kui soovite avada juurdep\u00e4\u00e4su <code>postgres<\/code> ainult konkreetsetele pod&#8217;idele nime ruumis <code>Seej\u00e4rel k\u00e4ivitame exec k\u00e4su ja ootame 5000 sekundit, et j\u00e4tkata j\u00e4lgimist:<\/code>?<\/p>\n<h2>Filtreerimine nime ruumide ja pod&#8217;ide p\u00f5hjal<\/h2>\n<p>\nKubernetes versioon 1.11 ja \u00fche rohkem v\u00f5imaldab operaatorite kombineerimist <code>namespaceSelector<\/code> ja <code>podSelector<\/code> loogilise JA abil. See n\u00e4eb v\u00e4lja j\u00e4rgmine:<\/p>\n<pre><code class=\"plaintext\">apiVersion: networking.k8s.io\/v1\nkind: NetworkPolicy\nmetadata:\n  name: database.postgres\n  namespace: database\nspec:\n  podSelector:\n    matchLabels:\n      app: postgres\n  ingress:\n  - from:\n    - namespaceSelector:\n        matchLabels:\n          namespace: default\n      podSelector: # &lt;&lt;&lt;\n        matchLabels:\n          app: admin\n  policyTypes:\n  - Ingress<\/code><\/pre>\n<p>\n<img decoding=\"async\" alt=\"Kubernetesi v\u00f5rgupoliitikate sissejuhatus turbespetsialistidele\" src=\"\/wp-content\/uploads\/2019\/04\/e933e449d9f9c10505e45930d1477b2c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMiks see t\u00f5lgendatakse kui JA, mitte tavalise V\u00d5I-ga?<\/p>\n<p>Pange t\u00e4hele, et <code>podSelector<\/code> ei alga sidekriipsuga. YAML-is t\u00e4hendab see, et <code>podSelector<\/code> ja selle ees <code>namespaceSelector<\/code> kuuluvad sama loendi elemendile. Seega nad kookonduvad loogilise JA abil.<\/p>\n<p>Sidekriipsu lisamine ette <code>podSelector<\/code> toob viib uue nimekirja elemendi tekkimiseni, mis kombineeritakse eelnevaga <code>namespaceSelector<\/code> loogilise V\u00d5I abil.<\/p>\n<p>Et valida pod&#8217;id teatud sildiga <b>k\u00f5igis nimespettides<\/b>, sisestage t\u00fchi <code>namespaceSelector<\/code>:<\/p>\n<pre><code class=\"plaintext\">apiVersion: networking.k8s.io\/v1\nkind: NetworkPolicy\nmetadata:\n  name: database.postgres\n  namespace: database\nspec:\n  podSelector:\n    matchLabels:\n      app: postgres\n  ingress:\n  - from:\n    - namespaceSelector: {}\n      podSelector:\n        matchLabels:\n          app: admin\n  policyTypes:\n  - Ingress<\/code><\/pre>\n<p>\n<img decoding=\"async\" alt=\"Kubernetesi v\u00f5rgupoliitikate sissejuhatus turbespetsialistidele\" src=\"\/wp-content\/uploads\/2019\/04\/e79e4a8067fa254f85fa8be105c3ad34.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Mitmed sildid kombineeritakse ja.<\/h2>\n<p>\nMitme objekti (hostide, v\u00f5rkude, r\u00fchmade) tulem\u00fc\u00fcrireeglid kombineeritakse loogilise V\u00d5I abil. J\u00e4rgmine reegel kehtib, kui paketi allikas vastab <code>Host_1<\/code> V\u00d5I <code>Host_2<\/code>:<\/p>\n<pre><code class=\"plaintext\">| Allikas | Sihtkoht | Teenus | Tegevus |\n| ----------------------------------------|\n| Host_1 | Subnet_A    | HTTPS   | Luba  |\n| Host_2 |             |         |        |\n| ----------------------------------------|<\/code><\/pre>\n<p>\nSeevastu Kuberneteses kombineeritakse erinevad sildid <code>podSelector<\/code> v\u00f5i <code>namespaceSelector<\/code> loogilise ja abil. N\u00e4iteks j\u00e4rgnev reegel valib pod\u2019e, millel on m\u00f5lemad sildid, <code>role=db<\/code> ma saan kasutada <code>version=v2<\/code>:<\/p>\n<pre><code class=\"plaintext\">podSelector:\n  matchLabels:\n    role: db\n    version: v2<\/code><\/pre>\n<p>\nSama loogikat rakendatakse k\u00f5igi operaatorite t\u00fc\u00fcpide puhul: poliitika sihiselektsioonide, pod&#8217;ide sihiselektsioonide ja nime ruumide sihiselektsioonide puhul.<\/p>\n<h2>Alamsuunad ja IP-aadressid (IPBlocks)<\/h2>\n<p>\nV\u00f5rgusegmentimiseks kasutavad tulem\u00fc\u00fcrid VLAN-i, IP-aadresse ja alamsuundi.<\/p>\n<p>Kubernetesis m\u00e4\u00e4ratakse IP-aadressid pod&#8217;idele automaatselt ja v\u00f5ivad sageli muutuda, seet\u00f5ttu kasutatakse v\u00f5rgupoliitikates pod&#8217;ide ja nime ruumide valimiseks silte.<\/p>\n<p>Alamsuunad (<code>ipBlocks<\/code>) kasutatakse sissetulevate (ingress) v\u00f5i v\u00e4ljaminevate (egress) v\u00e4liste (North-South) \u00fchenduste haldamiseks. N\u00e4iteks avab see poliitika juurdep\u00e4\u00e4su k\u00f5igile pod&#8217;idele nime ruumist <code>Seej\u00e4rel k\u00e4ivitame exec k\u00e4su ja ootame 5000 sekundit, et j\u00e4tkata j\u00e4lgimist:<\/code> juurdep\u00e4\u00e4su Google'i DNS teenusele:<\/p>\n<pre><code class=\"plaintext\">apiVersion: networking.k8s.io\/v1\nkind: NetworkPolicy\nmetadata:\n  name: egress-dns\n  namespace: default\nspec:\n  podSelector: {}\n  policyTypes:\n  - Egress\n  egress:\n  - to:\n    - ipBlock:\n        cidr: 8.8.8.8\/32\n    ports:\n    - protocol: UDP\n      port: 53<\/code><\/pre>\n<p>\n<img decoding=\"async\" alt=\"Kubernetesi v\u00f5rgupoliitikate sissejuhatus turbespetsialistidele\" src=\"\/wp-content\/uploads\/2019\/04\/42e1194e28331e667a094f19c88e0934.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nT\u00fchine pod&#8217;ide selektor selles n\u00e4ites t\u00e4hendab \u00abvalida k\u00f5ik pod&#8217;id nime ruumis\u00bb.<\/p>\n<p>See poliitika avab juurdep\u00e4\u00e4su ainult 8.8.8.8; juurdep\u00e4\u00e4s igale teisele IP-le on keelatud. Niisiis, olete sisuliselt DNS teenusele Kubernetes blokeerinud. Kui soovite seda siiski avada, m\u00e4rkige see selgelt.<\/p>\n<p>Tavaliselt <code>ipBlocks<\/code> ja <code>podSelectors<\/code> on vastastikku eksklusiivsed, kuna pod&#8217;ide sisemised IP-aadressid ei ole kasutusel <code>ipBlocks<\/code>. M\u00e4rkides <b>pod&#8217;ide sisemised IP<\/b>, siis tegelikult lubate \u00fchendusi pod&#8217;idele nende aadressidega. Praktikas ei tea te, millist IP-aadressi kasutada, seet\u00f5ttu ei tohiks neid pod&#8217;ide valimiseks rakendada.<\/p>\n<p>Vastupidiseks n\u00e4iteks h\u00f5lmab j\u00e4rgmine poliitika k\u00f5iki IP ja seega lubab juurdep\u00e4\u00e4su k\u00f5igile teistele pod&#8217;idele:<\/p>\n<pre><code class=\"plaintext\">apiVersion: networking.k8s.io\/v1\nkind: NetworkPolicy\nmetadata:\n  name: egress-any\n  namespace: default\nspec:\n  podSelector: {}\n  policyTypes:\n  - Egress\n  egress:\n  - to:\n    - ipBlock:\n        cidr: 0.0.0.0\/0<\/code><\/pre>\n<p>\n<img decoding=\"async\" alt=\"Kubernetesi v\u00f5rgupoliitikate sissejuhatus turbespetsialistidele\" src=\"\/wp-content\/uploads\/2019\/04\/d99dfdead1c96b071b1643cb5c572878.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSaate avada juurdep\u00e4\u00e4su ainult v\u00e4listele IP-dele, j\u00e4ttes v\u00e4lja pod&#8217;ide sisemised IP-aadressid. N\u00e4iteks, kui teie pod&#8217;ide alamv\u00f5rk on 10.16.0.0\/14:<\/p>\n<pre><code class=\"plaintext\">apiVersion: networking.k8s.io\/v1\nkind: NetworkPolicy\nmetadata:\n  name: egress-any\n  namespace: default\nspec:\n  podSelector: {}\n  policyTypes:\n  - Egress\n  egress:\n  - to:\n    - ipBlock:\n        cidr: 0.0.0.0\/0\n        except:\n        - 10.16.0.0\/14<\/code><\/pre>\n<p>\n<img decoding=\"async\" alt=\"Kubernetesi v\u00f5rgupoliitikate sissejuhatus turbespetsialistidele\" src=\"\/wp-content\/uploads\/2019\/04\/b157cfe0f1cd4677cf0defd9fdfa8a13.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Pordid ja protokollid<\/h2>\n<p>\nTavaliselt kuulavad pod&#8217;id \u00fchte porti. See t\u00e4hendab, et poliitikates saab portide numbreid lihtsalt mitte n\u00e4idata ja j\u00e4tta k\u00f5ik vaikimisi. Siiski on soovitatav poliitikad teha v\u00f5imalikult piiravad, seet\u00f5ttu on m\u00f5ningatel juhtudel siiski v\u00f5imalik portide m\u00e4\u00e4ramine:<\/p>\n<pre><code class=\"plaintext\">apiVersion: networking.k8s.io\/v1\nkind: NetworkPolicy\nmetadata:\n  name: default.postgres\n  namespace: default\nspec:\n  ingress:\n  - from:\n    - podSelector:\n        matchLabels:\n          app: indexer\n    - podSelector:\n        matchLabels:\n          app: admin\n    ports:             # &lt;&lt;&lt;\n      - port: 443      # &lt;&lt;&lt;\n        protocol: TCP  # &lt;&lt;&lt;\n      - port: 80       # &lt;&lt;&lt;\n        protocol: TCP  # &lt;&lt;&lt;\n  podSelector:\n    matchLabels:\n      app: postgres\n  policyTypes:\n  - Ingress<\/code><\/pre>\n<p>\n<img decoding=\"async\" alt=\"Kubernetesi v\u00f5rgupoliitikate sissejuhatus turbespetsialistidele\" src=\"\/wp-content\/uploads\/2019\/04\/4c778cd46c54e2ae0f4527ffa9e1e740.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPange t\u00e4hele, et valija <code>ports<\/code> kehtib k\u00f5ikidele elementidele plokis <code>to<\/code> v\u00f5i <code>from<\/code>, milles see asub. Erinevate portide m\u00e4\u00e4ramiseks erinevate elementide kogumite jaoks jagage <code>ingress<\/code> v\u00f5i <code>egress<\/code> mitmete alamjaotuste vahel, kus <code>to<\/code> v\u00f5i <code>from<\/code> ja kirjeldage igas oma porte:<\/p>\n<pre><code class=\"plaintext\">apiVersion: networking.k8s.io\/v1\nkind: NetworkPolicy\nmetadata:\n  name: default.postgres\n  namespace: default\nspec:\n  ingress:\n  - from:\n    - podSelector:\n        matchLabels:\n          app: indexer\n    ports:             # &lt;&lt;&lt;\n     - port: 443       # &lt;&lt;&lt;\n       protocol: TCP   # &lt;&lt;&lt;\n  - from:\n    - podSelector:\n        matchLabels:\n          app: admin\n    ports:             # &lt;&lt;&lt;\n     - port: 80        # &lt;&lt;&lt;\n       protocol: TCP   # &lt;&lt;&lt;\n  podSelector:\n    matchLabels:\n      app: postgres\n  policyTypes:\n  - Ingress<\/code><\/pre>\n<p>\n<img decoding=\"async\" alt=\"Kubernetesi v\u00f5rgupoliitikate sissejuhatus turbespetsialistidele\" src=\"\/wp-content\/uploads\/2019\/04\/b9ac1d8af491e992cac0be184005a278.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPortide vaikimisi t\u00f6\u00f6:<\/p>\n<ul>\n<li> Kui te j\u00e4tate portide m\u00e4\u00e4ratlemise t\u00e4ielikult v\u00e4lja (<code>ports<\/code>), t\u00e4hendab see k\u00f5iki protokolle ja k\u00f5iki porte;<\/li>\n<li> Kui te j\u00e4tate protokolli m\u00e4\u00e4ratlemise v\u00e4lja (<code>protocol<\/code>), t\u00e4hendab see TCP;<\/li>\n<li> Kui te j\u00e4tate porta m\u00e4\u00e4ratlemise v\u00e4lja (<code>port<\/code>), t\u00e4hendab see k\u00f5iki porte.<\/li>\n<\/ul>\n<p>\nParim praktika: \u00e4rge toetuge vaikimisi v\u00e4\u00e4rtustele, m\u00e4\u00e4rake see, mida vajate, selgelt.<\/p>\n<p>Pange t\u00e4hele, et tuleb kasutada pod'ide porte, mitte teenuste omad (rohkem teavet selle kohta j\u00e4rgmises l\u00f5igus).<\/p>\n<h2>Kas poliitikad on m\u00e4\u00e4ratletud pod'ide v\u00f5i teenuste jaoks?<\/h2>\n<p>\nTavaliselt suhtlevad pod'id Kubernetes'is \u00fcksteisega teenuse kaudu \u2014 virtuaalne koormuse jagaja, mis suunab liiklust pod'idesse, mis teenust realiseerivad. V\u00f5ib arvata, et v\u00f5rgu poliitikad kontrollivad juurdep\u00e4\u00e4su teenustele, aga see pole t\u00f5si. <b>Kubernetes'i v\u00f5rgu poliitikad t\u00f6\u00f6tavad pod'ide portidega, mitte teenuste omad.<\/b><\/p>\n<p>N\u00e4iteks, kui teenus kuulab 80. porti, kuid suunab liikluse oma pod'ide 8080. porti, tuleb v\u00f5rgu poliitikas t\u00e4pselt 8080 m\u00e4\u00e4rata.<\/p>\n<p>Sarnast mehhanismi tuleks pidada ebaoptimaalseks: teenuse sisemise struktuuri muutumisel (mille portide kaudu kuulavad pod'id) tuleb v\u00f5rgu poliitikaid uuendada.<\/p>\n<p>Uus arhitektuuriline l\u00e4henemine Service Mesh\u2019i kasutuselev\u00f5tuga <i>(n\u00e4iteks vaata allpool Istio kohta \u2014 toimetaja m\u00e4rkus.)<\/i> lahendab selle probleemi.<\/p>\n<h2>Kas on vajalik m\u00e4\u00e4rata nii Ingress kui Egress?<\/h2>\n<p>\nL\u00fchike vastus \u2014 jah, et pod A saaks pod B-ga suhelda, peab tal olema lubatud luua v\u00e4ljaminev \u00fchendus (selleks tuleb seadistada egress-poliitika) ja pod B-l peab olema v\u00f5imalus vastu v\u00f5tta sisenemist (seega on vajalik ingress-poliitika).<\/p>\n<p>Praktikas v\u00f5ib aga toetuda vaikimisi poliitikale, mis lubab \u00fchendusi \u00fches v\u00f5i m\u00f5lemas suunas.<\/p>\n<p>Kui m\u00f5ni pod-<b>allikas<\/b> valitakse \u00fche v\u00f5i mitme <b>egress<\/b>-poliitika poolt, siis tema suhtes kehtivad piirangud m\u00e4\u00e4ratakse nende disjunktiooniga. Sellisel juhul tuleb selgelt lubada \u00fchendust pod'-iga-<b>sihtpunkt<\/b>. Kui pod'i ei ole valitud \u00fchegi poliitikaga, on tema v\u00e4ljaminev (egress) liiklus vaikimisi lubatud.<\/p>\n<p>Sarnaselt m\u00e4\u00e4ratakse pod'i saatus -<b>sihtpunkti<\/b>, mille on valinud \u00fche v\u00f5i mitme <b>ingress<\/b>-poliitikate kaudu, nende disjunktsiooniga. Sellisel juhul tuleb selgelt lubada tal saada liiklust pod'i-allikast. Kui pod'i ei valida \u00fchegi poliitika poolt, on kogu sissetulev (ingress) liiklus tema jaoks vaikimisi lubatud.<\/p>\n<p>Vaata punkti \"Stateful v\u00f5i Stateless\" allpool.<\/p>\n<h2>Logid<\/h2>\n<p>\nKubernetes\u2019e v\u00f5rgupoliitikad ei oska logida liiklust. See muudab keeruliseks kindlaks teha, kas poliitika t\u00f6\u00f6tab korrektselt, ja raskendab oluliselt turvavaldkonna anal\u00fc\u00fcsi.<\/p>\n<h2>Kontroll liikluse \u00fcle v\u00e4liste teenuste suunas.<\/h2>\n<p>\nKubernetesi v\u00f5rgupoliitikad ei v\u00f5imalda m\u00e4\u00e4rata t\u00e4ielikku domeeninime (DNS) egressi sektsioonides. See tekitab m\u00e4rkimisv\u00e4\u00e4rset ebamugavust, kui \u00fcritatakse piirata liiklust v\u00e4listesse sihtkohtadesse, mis ei oma staatilist IP-aadressi (nt aws.com).<\/p>\n<h2>Politika kontrollimine<\/h2>\n<p>\nTulekahjus\u00fcsteemid teavitavad teid v\u00f5i keelduda isegi vale poliitika kinnitamist. Kubernetes viib samuti l\u00e4bi teatud valideerimise. Kui m\u00e4\u00e4rate v\u00f5rgupoliitika l\u00e4bi kubectl, v\u00f5ib Kubernetes v\u00e4ita, et see on vale ja keelduda selle aktsepteerimisest. Teistes olukordades aktsepteerib Kubernetes poliitikat ja t\u00e4iendab puuduvate detailidega. Need on n\u00e4htavad j\u00e4rgmisel k\u00e4sklusel:<\/p>\n<pre><code class=\"plaintext\">kubernetes get networkpolicy  -o yaml<\/code><\/pre>\n<p>\nPange t\u00e4hele, et Kubernetes kontrollimisseade ei ole infallible ja v\u00f5ib m\u00f5ningaid t\u00fc\u00fcpe vigu m\u00f6\u00f6da lasta.<\/p>\n<h2>Teostus<\/h2>\n<p>\nKubernetes ei teosta v\u00f5rgupoliitikaid iseseisvalt, vaid on lihtsalt API-l\u00fcli, mis asetab kontrollimise koorma alumisele s\u00fcsteemile, mida nimetatakse Container Networking Interface (CNI). Politike m\u00e4\u00e4ramine Kubernetes klastris ilma vastava CNI m\u00e4\u00e4ramata on sarnane politikumireeglite loomisele tulekahjus\u00fcsteemi halduss\u00fcsteemis nende hilisema seadistamise puudumisega. Te peate ise veenduma, et teil on piisav CNI v\u00f5i, kui tegemist on pilves baseeruva Kubernetes platvormiga, <i>(teenusepakkujate nimekirjaga saab tutvuda <noindex>siin<\/noindex> \u2014 t\u00f5lkija m\u00e4rkus)<\/i>, rakendama v\u00f5rgupoliitikaid, mis seadistavad CNI teie jaoks.<\/p>\n<p>Pange t\u00e4hele, et Kubernetes ei teavita teid, kui m\u00e4\u00e4rate v\u00f5rgupoliitika ilma vastava abistava CNI-ta.<\/p>\n<h3>Stateful v\u00f5i Stateless?<\/h3>\n<p>\nK\u00f5ik Kubernetes CNI-d, millega olen kokku puutunud, s\u00e4ilitavad olekut (n\u00e4iteks Calico kasutab Linuxi conntrack'i). See v\u00f5imaldab pod'il saada vastuseid algatatud TCP-\u00fchendusele ilma selle uuesti loomise vajaduseta. Siiski ei ole mulle teada, et eksisteeriks Kubernetes'e standard, mis garantiib oleku s\u00e4ilitamise (statefulness).<\/p>\n<h2>Edasij\u00f5udnud turvapostustamise haldamine<\/h2>\n<p>\nSiin on m\u00f5ned viisid, kuidas t\u00f5sta turvapostustamise t\u00e4itmise efektiivsust Kubernetes'is:<\/p>\n<ol>\n<li> Teenusev\u00f5rgu arhitektuurimuster kasutab sidecar konteinerite abil \u00fcksikasjalikku telemeetriat ja liikluse juhtimist teenuste tasandil. N\u00e4itena v\u00f5ib tuua <noindex><a rel=\"nofollow\" href=\"https:\/\/istio.io\/\">Istio<\/a><\/noindex>.<\/li>\n<li> M\u00f5ned CNI teenusepakkujad on t\u00e4iendanud oma t\u00f6\u00f6riistu, et need \u00fcletaksid Kubernetes'i v\u00f5rgupoliitikat.<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/www.tufin.com\/products\/tufin-orca\">Tufin Orca<\/a><\/noindex> tagab Kubernetes'i v\u00f5rgupoliitikate l\u00e4bipaistvuse ja automatiseerimise.<\/li>\n<\/ol>\n<p>\nTufin Orca paketiga hallatakse Kubernetes'i v\u00f5rgupoliitikaid (ja see teenib allikana \u00fclaltoodud ekraanipilte).<\/p>\n<h2>Lisainformatsioon<\/h2>\n<p><\/p>\n<ul>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/ahmetb\/kubernetes-network-policy-recipes\">V\u00f5rgu poliitikate n\u00e4ited, mille on koostanud Ahmet Alp Balkan GKE-st<\/a><\/noindex>;<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/services-networking\/network-policies\/\">Kubernetes'i ametliku veebisaidi dokumentatsioon<\/a><\/noindex>;<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/sookocheff.com\/post\/kubernetes\/understanding-kubernetes-networking-model\/\">Kubernetes'i v\u00f5rgu mudeli juhend<\/a><\/noindex>;<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Tufin\/test-network-policies\">Skript v\u00f5rgupoliitikate kontrollimiseks<\/a><\/noindex>.<\/li>\n<\/ul>\n<p><\/p>\n<h2>Kokkuv\u00f5te<\/h2>\n<p>\nKubernetes'i v\u00f5rgupoliitikad pakuvad korralikku t\u00f6\u00f6riistakomplekti klastrite segmentimiseks, kuid need on intuitiivselt mitte arusaadavad ja sisaldavad palju n\u00fcansse. Arvan, et nende keerukuse t\u00f5ttu paljudes olemasolevates klastrites on vigu. Probleemi lahenduste hulka kuulub poliitikate m\u00e4\u00e4ratlemise automatiseerimine v\u00f5i muude segmentimisvahendite rakendamine.<\/p>\n<p>Loodan, et see juhend aitab selgitada m\u00f5ningaid k\u00fcsimusi ja lahendada probleeme, millega v\u00f5ite silmitsi seista.<\/p>\n<h2>P.S. t\u00f5lkijalt<\/h2>\n<p>\nLugege ka meie blogist:<\/p>\n<ul>\n<li> \"Tagasi mikroteenustele koos Istio\": <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/438426\/\">osa 1 (tutvumine p\u00f5hifunktsioonidega)<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/440378\/\">osa 2 (marsruutimine, liikluse haldamine)<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/443668\/\">osa 3 (turvalisus)<\/a><\/noindex>;<\/li>\n<li> \u00abKubernetese v\u00f5rgu \u00fclesehituse illustreeritud juhend\u00bb: <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/346304\/\">osa 1 ja 2 (v\u00f5rgu mudel, \u00fclekandev\u00f5rgud)<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/433382\/\">osa 3 (teenused ja liikluse k\u00e4sitlemine)<\/a><\/noindex>;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/440504\/\">Docker ja Kubernetes turvalisust n\u00f5udvates keskkondades<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/436300\/\">9 parimat praktikat Kubernetes'e turvalisuse tagamiseks<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/417905\/\">11 viisi (mitte) saada Kubernetes'i h\u00e4kkimise ohvriks<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<p>Allikas: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/443190\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u043c. \u043f\u0435\u0440\u0435\u0432.: \u0410\u0432\u0442\u043e\u0440 \u0441\u0442\u0430\u0442\u044c\u0438 \u2014 Reuven Harrison \u2014 \u0438\u043c\u0435\u0435\u0442 \u0431\u043e\u043b\u0435\u0435 20 \u043b\u0435\u0442 \u043e\u043f\u044b\u0442\u0430 \u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f, \u0430 \u043d\u0430 \u0441\u0435\u0433\u043e\u0434\u043d\u044f\u0448\u043d\u0438\u0439 \u0434\u0435\u043d\u044c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u043e\u043c \u0438 \u0441\u043e\u0443\u0447\u0440\u0435\u0434\u0438\u0442\u0435\u043b\u0435\u043c \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Tufin, \u0441\u043e\u0437\u0434\u0430\u044e\u0449\u0435\u0439 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430\u043c\u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438. \u0420\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u044f \u0441\u0435\u0442\u0435\u0432\u044b\u0435 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 Kubernetes \u043a\u0430\u043a \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043c\u043e\u0449\u043d\u043e\u0435 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e \u0434\u043b\u044f \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0441\u0435\u0442\u0438 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435, \u043e\u043d \u0432 \u0442\u043e \u0436\u0435 \u0432\u0440\u0435\u043c\u044f \u0441\u0447\u0438\u0442\u0430\u0435\u0442, \u0447\u0442\u043e \u043e\u043d\u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":24432,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-32641","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0438\u043c.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/vvedenie-v-setevye-politiki-kubernetes-dlya-spetsialistov-po-bezopasnosti\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432 \u0441\u0435\u0442\u0435\u0432\u044b\u0435 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 Kubernetes \u0434\u043b\u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442\u043e\u0432 \u043f\u043e \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u043c.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/vvedenie-v-setevye-politiki-kubernetes-dlya-spetsialistov-po-bezopasnosti\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:48:11+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:48:11+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Kubernetes'i v\u00f5rgupoliitikate sissejuhatus turvaekspertidele | ProHoster","description":"M\u00e4rkus.","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/vvedenie-v-setevye-politiki-kubernetes-dlya-spetsialistov-po-bezopasnosti","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432 \u0441\u0435\u0442\u0435\u0432\u044b\u0435 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 Kubernetes \u0434\u043b\u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442\u043e\u0432 \u043f\u043e \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 | ProHoster","og:description":"\u041f\u0440\u0438\u043c.","og:url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/vvedenie-v-setevye-politiki-kubernetes-dlya-spetsialistov-po-bezopasnosti","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:48:11+00:00","article:modified_time":"2019-10-31T18:48:11+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"32641","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 11:53:20","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 02:55:23","updated":"2026-01-21 11:53:20","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/32641","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=32641"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/32641\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/24432"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=32641"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=32641"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=32641"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}