{"id":36918,"date":"2019-10-31T22:14:43","date_gmt":"2019-10-31T19:14:43","guid":{"rendered":"https:\/\/prohoster.info\/blog\/bezopasnost-helm\/"},"modified":"2019-10-31T22:14:43","modified_gmt":"2019-10-31T19:14:43","slug":"bezopasnost-helm","status":"publish","type":"post","link":"https:\/\/prohoster.info\/hr\/blog\/administrirovanie\/bezopasnost-helm","title":{"rendered":"Sigurnost Helma","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Bitka pri pripovijanju o najpopularnijem paketu menad\u017eeru za Kubernetes mogla bi se prikazati pomo\u0107u emojija:<\/p>\n<ul>\n<li>kutija \u2014 to je Helm (najprikladnije je u posljednjoj verziji Emoji);<\/li>\n<li>klju\u010da \u2014 sigurnost;<\/li>\n<li>\u010dovje\u010duljak \u2014 rje\u0161enje problema.<\/li>\n<\/ul>\n<p>\n<img decoding=\"async\" alt=\"Sigurnost Helma\" src=\"\/wp-content\/uploads\/2019\/08\/91099b372fd73bce94268563c3ee2c50.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nU stvarnosti, sve \u0107e biti malo slo\u017eenije, a pri\u010da je puna tehni\u010dkih detalja o tome kako u\u010diniti Helm sigurnim. <b>Ukazat \u0107emo na to \u0161to je Helm, ako niste znali ili ste zaboravili. Koje probleme rje\u0161ava i gdje se nalazi u ekosustavu.<\/b>.<\/p>\n<ul>\n<li>Pogledajmo arhitekturu Helma. Nijedna rasprava o sigurnosti i o tome kako u\u010diniti alat ili rje\u0161enje sigurnijim ne mo\u017ee pro\u0107i bez razumijevanja arhitekture komponenti.<\/li>\n<li>Raspravimo o komponentama Helma.<\/li>\n<li>Najva\u017enije pitanje \u2014 budu\u0107nost \u2014 nova verzija Helma 3.<\/li>\n<li>Sve u ovom \u010dlanku odnosi se na Helm 2. Ova verzija je trenutno u produkciji i vjerojatno ju sada koristite, a u njoj su prisutne sigurnosne prijetnje.\u00a0<\/li>\n<\/ul>\n<p>\nAleksandar Khajerov (<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\n<center><div class=\"youtube-placeholder\" data-id=\"_8zNTJ1_R5I\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/_8zNTJ1_R5I\/hqdefault.jpg\" alt=\"Pogledajte video\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><br \/>\n<strong>O govoru:<\/strong> allexx<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/allexx\/\" class=\"user_link\">) bavi se razvojem 10 godina, poma\u017ee unaprijediti sadr\u017eaj<\/a><\/noindex>Moscow Python Conf++ <noindex><a rel=\"nofollow\" href=\"https:\/\/conf.python.ru\/2019\">i pridru\u017eio se odboru<\/a><\/noindex> Helm Summit <noindex><a rel=\"nofollow\" href=\"https:\/\/events.linuxfoundation.org\/events\/helm-summit-2019\/\">. Trenutno radi u Chainstacku kao razvojni voditelj \u2014 to je hibrid izme\u0111u rukovoditelja razvoja i osobe koja je odgovorna za isporuku kona\u010dnih izdanja. To jest, nalazi se na mjestu gdje se odvija sve od stvaranja proizvoda do njegove eksploatacije.<\/a><\/noindex>Chainstack je mali, aktivno rastu\u0107i startup, \u010dija je zada\u0107a omogu\u0107iti klijentima da zaborave na infrastrukturu i slo\u017eenosti vezane uz upravljanje decentraliziranim aplikacijama, razvojni tim se nalazi u Singapuru. Ne tra\u017eite od Chainstacka da proda ili kupi kriptovalutu, ali ponudite da razgovarate o enterprise blockchain okvirima, i rado \u0107e vam odgovoriti.<\/p>\n<p>To je paket menad\u017eer (chartova) za Kubernetes. Najjasniji i najuniverzalniji na\u010din za stavljanje aplikacija u Kubernetes klaster.<\/p>\n<h2>Helm<\/h2>\n<p>\nGovori se, naravno, o strukturiranijem i industrijskom pristupu u odnosu na stvaranje vlastitih YAML manifestacija i pisanje malih alata.<\/p>\n<p><img decoding=\"async\" alt=\"Sigurnost Helma\" src=\"\/wp-content\/uploads\/2019\/08\/30c0fc1cc1c6ebde97c6e8ec1886ce9f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHelm je najbolje \u0161to trenutno postoji od dostupnog i popularnog.<\/p>\n<blockquote><p>Za\u0161to Helm? Prije svega zato \u0161to ga podr\u017eava CNCF. Cloud Native je velika organizacija koja je mati\u010dna kompanija za projekte Kubernetes, etcd, Fluentd i druge.<\/p><\/blockquote>\n<p>\nZa\u0161to Helm? Prvo i najva\u017enije, jer ga podr\u017eava CNCF. Cloud Native je velika organizacija koja je mati\u010dna kompanija za projekte Kubernetes, etcd, Fluentd i druge.<\/p>\n<p>Jo\u0161 jedna va\u017ena \u010dinjenica, Helm je vrlo popularan projekt. Kada sam u sije\u010dnju 2019. godine odlu\u010dio govoriti o tome kako u\u010diniti Helm sigurnim, projekt je imao tisu\u0107u zvjezdica na GitHubu. Do svibnja ih je ve\u0107 bilo 12 tisu\u0107a.<\/p>\n<p>Mnogi se zanima za Helm, stoga, \u010dak i ako ga jo\u0161 ne koristite, znanje o njegovoj sigurnosti \u0107e vam biti korisno. <strong>Sigurnost je va\u017ena.<\/strong><\/p>\n<p>Glavni tim Helm podr\u017eava Microsoft Azure, i zbog toga je to prili\u010dno stabilan projekt u usporedbi s mnogim drugima. Izlazak Helm 3 Alpha 2 sredinom srpnja svjedo\u010di o tome da na projektu radi dosta ljudi koji imaju \u017eelju i snagu razvijati i pobolj\u0161ati Helm.<\/p>\n<p><img decoding=\"async\" alt=\"Sigurnost Helma\" src=\"\/wp-content\/uploads\/2019\/08\/e53c8e64c3cf5eea3fbd9b0095b0f81e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHelm rje\u0161ava nekoliko osnovnih problema upravljanja aplikacijama u Kubernetesu.<\/p>\n<ul>\n<li>Pakiranje aplikacije. \u010cak i aplikacija tipa \u201eHello, World\u201d na WordPressu ve\u0107 predstavlja nekoliko servisa, i \u017eelimo ih zapakirati zajedno.<\/li>\n<li>Upravljanje slo\u017eeno\u0161\u0107u koja nastaje s upravljanjem tih aplikacija.<\/li>\n<li>\u017divotni ciklus koji ne zavr\u0161ava nakon instalacije ili implementacije aplikacije. Ona nastavlja postojati, potrebno ju je a\u017eurirati, a u tome poma\u017ee Helm, poku\u0161avaju\u0107i donijeti ispravne mjere i politike.<\/li>\n<\/ul>\n<p>\n<strong>Pakiranje<\/strong> je ure\u0111eno na razumljiv na\u010din: postoje metapodaci u punoj sukladnosti s radom obi\u010dnog upravitelja paketa za Linux, Windows ili MacOS. Dakle, repozitorij, ovisnosti o razli\u010ditim paketima, metainformacije za aplikacije, postavke, zna\u010dajke konfiguracije, indeksiranje informacija itd. Sve to Helm omogu\u0107ava da se dobije i koristi za aplikacije.<\/p>\n<p><strong>Upravljanje slo\u017eeno\u0161\u0107u<\/strong>. Ako imate puno identi\u010dnih aplikacija, potrebna je parametrizacija. Iz toga proizlaze predlo\u0161ci, ali da ne biste smi\u0161ljali vlastiti na\u010din izrade predlo\u017eaka, mo\u017eete koristiti ono \u0161to Helm nudi iz kutije.<\/p>\n<p><strong>Upravljanje \u017eivotnim ciklusom aplikacije<\/strong> \u2014 po mom mi\u0161ljenju, to je najzanimljivije i nerije\u0161eno pitanje. To je razlog zbog kojeg sam se tada okrenuo Helmu. Trebali smo pratiti \u017eivotni ciklus aplikacije, \u017eeljeli smo prenijeti na\u0161 CI\/CD i cikluse aplikacija u ovu paradigmu.<\/p>\n<p>Helm omogu\u0107ava:<\/p>\n<ul>\n<li>upravljanje implementacijama, uvodi pojam konfiguracije i revizije;<\/li>\n<li>uspje\u0161no provoditi rollback;<\/li>\n<li>koristiti hook-ove za razli\u010dite doga\u0111aje;<\/li>\n<li>dodavati dodatne provjere aplikacija i reagirati na njihove rezultate.<\/li>\n<\/ul>\n<p>\nOsim toga <strong>Helm ima \"baterije\".<\/strong> \u2014 ogroman broj ukusnih stvari koje mo\u017eete uklju\u010diti u obliku dodataka, olak\u0161avaju\u0107i si \u017eivot. Dodatke mo\u017eete pisati sami, oni su prili\u010dno izolirani i ne zahtijevaju slo\u017eenu arhitekturu. Ako \u017eelite ne\u0161to implementirati, preporu\u010dujem da to u\u010dinite u obliku dodatka, a kasnije mo\u017eda uklju\u010dite u upstream.<\/p>\n<p>Helm se temelji na tri glavne koncepcije:<\/p>\n<ul>\n<li><strong>Chart Repo<\/strong> \u2014 opis i niz parametarizacije koji su mogu\u0107i za va\u0161 manifest.\u00a0<\/li>\n<li><strong>Postavke<\/strong> \u2014 to jest, vrijednosti koje \u0107e se primijeniti (tekst, numeri\u010dke vrijednosti i sl.).<\/li>\n<li><strong>Objava<\/strong> objedinjuje dva gornja komponente, a zajedno se pretvaraju u Release. Izdanje se mo\u017ee verzionirati, \u010dime se posti\u017ee organizacija \u017eivotnog ciklusa: malo prilikom instalacije i veliko prilikom nadogradnje, smanjenja ili vra\u0107anja.<\/li>\n<\/ul>\n<p><\/p>\n<h2>Arhitektura Helm<\/h2>\n<p>\nNa shemi konceptualno je prikazana visoka razina arhitekture Helma.<\/p>\n<p><img decoding=\"async\" alt=\"Sigurnost Helma\" src=\"\/wp-content\/uploads\/2019\/08\/c5cf54890682a3d6ca7a45021b5006a1.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPodsje\u0107am, Helm je ne\u0161to \u0161to je povezano s Kubernetesom. Stoga ne mo\u017eemo pro\u0107i bez Kubernetes klastera (pravokutnik). Komponenta kube-apiserver nalazi se na masteru. Bez Helma imamo Kubeconfig. Helm donosi jednu malu binarnu, ako to tako mo\u017eemo nazvati, alat Helm CLI, koji se instalira na ra\u010dunalo, laptop, mainframe \u2014 na sve \u0161to \u017eelite.<\/p>\n<p>Ali to nije dovoljno. Helm ima serversku komponentu Tiller. On predstavlja interese Helma unutar klastera, to je ista aplikacija unutar Kubernetes klastera kao i svaka druga.<\/p>\n<p>Sljede\u0107a komponenta Chart Repo \u2014 repozitorij s chartovima. Postoji slu\u017ebeni repozitorij, a mo\u017ee biti i privatni repozitorij tvrtke ili projekta.<\/p>\n<h3>Interakcija<\/h3>\n<p>\nRazmotrimo kako komponente arhitekture me\u0111usobno djeluju kada \u017eelimo instalirati aplikaciju putem Helma.<\/p>\n<ul>\n<li>Ka\u017eemo <code>Helm install<\/code>, obra\u0107amo se repozitoriju (Chart Repo) i dobivamo Helm chart.<\/li>\n<\/ul>\n<p><\/p>\n<ul>\n<li>Helm alat (Helm CLI) djeluje s Kubeconfigom, kako bi saznao kojem klasteru se obratiti.\u00a0<\/li>\n<li>Nakon \u0161to dobijemo te informacije, alat se obra\u0107a Tilleru, koji se nalazi u na\u0161em klasteru, ve\u0107 kao aplikaciji.\u00a0<\/li>\n<li>Tiller se obra\u0107a Kube-apiserveru kako bi poduzeo radnje u Kubernetesu, stvorio neke objekte (servise, podove, replikate, tajne itd.).<\/li>\n<\/ul>\n<p>\nZatim \u0107emo pojednostaviti shemu kako bismo vidjeli vektore napada kojima bi se cijela arhitektura Helma mogla suo\u010diti. A kasnije \u0107emo poku\u0161ati je za\u0161tititi.<\/p>\n<h3>Vektori napada<\/h3>\n<p>\nPrvo potencijalno slabo mjesto \u2014 <strong>privilegirani API<\/strong>\u2014<strong>korisnik<\/strong>. U okviru sheme, to je haker koji je dobio administratorski pristup Helm CLI.<\/p>\n<p><strong>Nepovla\u0161teni API korisnik<\/strong> tako\u0111er mo\u017ee predstavljati opasnost ako se nalazi negdje u blizini. Takav korisnik \u0107e imati drugi kontekst, na primjer, mo\u017ee biti zabilje\u017een u jednom namespaceu klastera u postavkama Kubeconfig.<\/p>\n<p>Najzanimljiviji vektor napada mo\u017ee biti proces koji se nalazi unutar klastera negdje blizu Tillera i mo\u017ee mu pristupiti. To mo\u017ee biti web server ili mikroservis koji vidi mre\u017eno okru\u017eenje klastera.<\/p>\n<p>Egzoti\u010dna, ali sve popularnija, varijanta napada povezana je s Chart Repo. Chart koji je kreiran od strane nesavjesnog autora mo\u017ee sadr\u017eavati nesigurne resurse, a vi biste ga izvr\u0161ili vjeruju\u0107i mu. Ili bi mogao zamijeniti chart koji preuzimate iz zvani\u010dnog repozitorija i, na primjer, stvoriti resurs u obliku politika i tako eskalirati svoj pristup.<\/p>\n<p><img decoding=\"async\" alt=\"Sigurnost Helma\" src=\"\/wp-content\/uploads\/2019\/08\/2828046feb9ba8413a1b0e8741b4c354.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPoku\u0161ajmo se obraniti od napada sa svih ovih \u010detiri strane i istra\u017eiti gdje su ovdje problemi u arhitekturi Helma, a gdje ih mo\u017eda nema.<\/p>\n<p>Uve\u0107ajmo shemu, dodajmo vi\u0161e elemenata, ali sa\u010duvajmo sve osnovne komponente.<\/p>\n<p><img decoding=\"async\" alt=\"Sigurnost Helma\" src=\"\/wp-content\/uploads\/2019\/08\/4110898e79619b8546408c668c48da0d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHelm CLI komunicira s Chart Repo, interagira s Kubeconfigom, a rad se proslje\u0111uje u klaster u komponentu Tiller.<\/p>\n<p>Tiller je predstavljen s dva objekta:<\/p>\n<ul>\n<li>Tiller-deploy svc koji izla\u017ee odre\u0111enu uslugu;<\/li>\n<li>Tiller-deploy pod (na shemi u jednoj jedinstvenoj instanci u jednoj repliki), na kojem se odvija sav teret, koji se obra\u0107a klasteru.<\/li>\n<\/ul>\n<p>\nZa interakciju se koriste razli\u010diti protokoli i sheme. Sa stajali\u0161ta sigurnosti, najzanimljiviji su nam:<\/p>\n<ul>\n<li>Mehanizam putem kojeg Helm CLI pristupa chart repo: koji protokol, postoji li autentifikacija i \u0161to se s tim mo\u017ee u\u010diniti.<\/li>\n<li>Protokol putem kojeg Helm CLI, koriste\u0107i kubectl, komunicira s Tillerom. To je RPC server instaliran unutar klastera.<\/li>\n<li>Sam Tiller je dostupan mikroservisima koji se nalaze u klasteru i interagira s Kube-apiserverom.<\/li>\n<\/ul>\n<p>\n<img decoding=\"async\" alt=\"Sigurnost Helma\" src=\"\/wp-content\/uploads\/2019\/08\/19e7e085567f3bbb49746e6402926bd6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nRazgovarajmo o svim tim pravcima redom.<\/p>\n<h2>RBAC<\/h2>\n<p><\/p>\n<blockquote><p>Besmisleno je govoriti o bilo kojoj sigurnosti Helma ili druge usluge unutar klastera, ako RBAC nije uklju\u010den.<\/p><\/blockquote>\n<p>\n\u010cini se da to nije najnovija preporuka, ali sam siguran da mnogi i dalje nisu uklju\u010dili RBAC \u010dak ni u produkciji, jer je to velika gnjava\u017ea i treba sve dobro postaviti. Ipak, pozivam vas da to u\u010dinite.<\/p>\n<p><img decoding=\"async\" alt=\"Sigurnost Helma\" src=\"\/wp-content\/uploads\/2019\/08\/37ee8aeb2b331b75ea5569c0b114a756.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/rbac.dev\/\">https:\/\/rbac.dev\/<\/a><\/noindex> \u2014 pravni savjetnik za RBAC. Tamo se nalazi ogroman broj zanimljivih materijala koji \u0107e pomo\u0107i u postavljanju RBAC-a, pokazati za\u0161to je dobar i kako s njim \u017eivjeti u produkciji.<\/p>\n<p>Poku\u0161at \u0107u objasniti kako Tiller i RBAC rade. Tiller radi unutar klastera pod nekim servisnim ra\u010dunom. Obi\u010dno, ako RBAC nije postavljen, to \u0107e biti superuser. U osnovnoj konfiguraciji Tiller \u0107e biti admin. Zato se \u010desto ka\u017ee da je Tiller SSH tunel do va\u0161eg klastera. U stvarnosti, to je tako, pa se mo\u017ee koristiti poseban servisni ra\u010dun umjesto Default Service Account na gornjoj shemi.<\/p>\n<p>Kada inicijalizirate Helm, prvi put ga instalirate na server, mo\u017eete odrediti servisni ra\u010dun pomo\u0107u <code>--service-account<\/code>. To \u0107e omogu\u0107iti kori\u0161tenje korisnika s minimalnim potrebnim skupom prava. Na\u017ealost, morat \u0107ete stvoriti takvu \"niz\": Role i RoleBinding.<\/p>\n<p><img decoding=\"async\" alt=\"Sigurnost Helma\" src=\"\/wp-content\/uploads\/2019\/08\/ec805cde756495cfd5c480ac40739c43.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNa\u017ealost, Helm to ne\u0107e u\u010diniti umjesto vas. Vama ili va\u0161em administratoru Kubernetes klastera potrebno je unaprijed pripremiti skup Role i RoleBinding za servisni ra\u010dun kako bi se predao Helmu.<\/p>\n<p>Pitanje se postavlja \u2014 koja je razlika izme\u0111u Role i ClusterRole? Razlika je u tome \u0161to ClusterRole djeluje za sve namespaces, za razliku od obi\u010dnih Role i RoleBinding, koji rade samo za specijalizirani namespace. Mo\u017eete postaviti politike i za cijeli klaster i za sve namespaces, kao i personalizirane za svaki namespace pojedina\u010dno.<\/p>\n<p>Treba spomenuti da RBAC omogu\u0107uje rje\u0161avanje jo\u0161 jednog velikog problema. Mnogi se \u017eale da Helm, na\u017ealost, nije multitenant (ne podr\u017eava vi\u0161ekorisni\u010dko kori\u0161tenje). Ako nekoliko timova koristi klaster i koristi Helm, u na\u010delu se ne mo\u017ee postaviti politike i ograni\u010diti njihov pristup u okviru tog klastera, jer postoji neki servisni ra\u010dun pod kojim radi Helm, i on stvara sve resurse u klasteru, \u0161to ponekad mo\u017ee biti vrlo nezgodno. To je istina \u2014 kao sama binarna datoteka, kao proces, <strong>Helm Tiller nema pojam o multitenantnosti.<\/strong>.<\/p>\n<p>Me\u0111utim, postoji izvrstan na\u010din koji omogu\u0107ava pokretanje Tillera u klasteru vi\u0161e puta. S tim nema nikakvih problema, Tiller se mo\u017ee pokrenuti u svakom namespaceu. Tako mo\u017eete iskoristiti RBAC, Kubeconfig kao kontekst, i ograni\u010diti pristup posebnom Helmu.<\/p>\n<p>To \u0107e izgledati ovako.<\/p>\n<p><img decoding=\"async\" alt=\"Sigurnost Helma\" src=\"\/wp-content\/uploads\/2019\/08\/eae922c7b5e1422fb51667364ed79e0a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNa primjer, postoje dva Kubeconfig s kontekstom za razli\u010dite timove (dva namespace): X Team za razvojni tim i adminsitratorski klaster. Administratorski klaster ima svoj \u0161iroki Tiller, koji se nalazi u Kube-system namespace, a time i napredne service-account. Osim toga, postoji odvojen namespace za razvojni tim, koji \u0107e mo\u0107i implementirati svoje servise u poseban namespace.<\/p>\n<p>To je radni pristup, Tiller nije toliko zahtjevan da bi to moglo zna\u010dajno utjecati na va\u0161 bud\u017eet. To je jedno od brzih rje\u0161enja.<\/p>\n<blockquote><p>Ne ustru\u010davajte se odvojeno konfigurirati Tiller i pru\u017eiti Kubeconfig s kontekstom za tim, za odre\u0111enog programera ili za okru\u017eenje: Dev, Staging, Production (dosta je sumnjivo da \u0107e sve biti na jednom klasteru, iako je to mogu\u0107e).<\/p><\/blockquote>\n<p>\nNastavljaju\u0107i na\u0161u pri\u010du, prebacit \u0107emo se s RBAC-a i razgovarati o ConfigMaps.<\/p>\n<h3>ConfigMaps<\/h3>\n<p>\nHelm koristi ConfigMaps kao skladi\u0161te podataka. Kada smo govorili o arhitekturi, nije bilo nijedne baze podataka u kojoj se \u010duvaju informacije o izdanjima, konfiguracijama, rollback-ima itd. Za to se koristi ConfigMaps.<\/p>\n<p>Glavni problem s ConfigMaps-ima je poznat \u2014 oni su inherentno nesigurni, u njima <strong>nije mogu\u0107e \u010duvati osjetljive podatke<\/strong>. Rije\u010d je o svemu \u0161to ne bi trebalo iza\u0107i iz servisa, poput lozinki. Najprikladniji na\u010din za Helm sada je prelazak s kori\u0161tenja ConfigMaps-a na tajne.<\/p>\n<p>To se radi vrlo jednostavno. Preopredjeljujete postavku Tiller-a i navodite da \u0107e skladi\u0161te biti tajne. Tada \u0107ete za svaku implementaciju dobivati ne ConfigMap, ve\u0107 tajnu.<\/p>\n<p><img decoding=\"async\" alt=\"Sigurnost Helma\" src=\"\/wp-content\/uploads\/2019\/08\/7fd12bfbed5c6c8111a5126c2ab9f853.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMo\u017eete prigovoriti da su same tajne - \u010dudna koncept, i da to nije ba\u0161 sigurno. Me\u0111utim, treba razumjeti da se ovim pitanjima bave sami razvojni programeri Kubernetes-a. Po\u010dev\u0161i od verzije 1.10, tj. ve\u0107 neko vrijeme, postoji mogu\u0107nost, bar u javnim oblacima, povezati odgovaraju\u0107e skladi\u0161te za pohranu tajni. Trenutno tim radi na jo\u0161 boljoj distribuciji pristupa tajnama, odre\u0111enim podovima ili drugim entitetima.<\/p>\n<blockquote><p>Skladi\u0161te Helm je bolje prevesti na tajne, a njih zauzvrat centralizirano osigurati.<\/p><\/blockquote>\n<p>\nNaravno, ostat \u0107e <strong>ograni\u010denje za pohranu podataka od 1 MB<\/strong>. Helm ovdje koristi etcd kao distribuirano skladi\u0161te za ConfigMaps. Tamo su procijenili da je to prikladni komad podataka za replikacije itd. O tome postoji zanimljiva rasprava na Redditu, preporu\u010dujem da prona\u0111ete ovo zanimljivo \u0161tivo za vikend ili pro\u010ditate sa\u017eetak. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/helm\/helm\/issues\/1413\">ovdje<\/a><\/noindex>.<\/p>\n<h3>Chart Repos<\/h3>\n<p>\nChartovi su najvi\u0161e dru\u0161tveno ranjivi i mogu postati izvor \"Man in the middle\", posebno ako koristite standardna rje\u0161enja. Uglavnom se radi o repozitorijima koji su dostupni putem HTTP-a.<\/p>\n<blockquote><p>Definitivno, treba postaviti Helm Repo preko HTTPS-a \u2014 to je najbolja opcija i nije skupa.<\/p><\/blockquote>\n<p>\nObratite pa\u017enju na <strong>mehanizam potpisa chartova<\/strong>. Tehnologija je izuzetno jednostavna. To je isto ono \u0161to koristite na GitHubu, obi\u010dna PGP ma\u0161inerija s javnim i privatnim klju\u010devima. Postavite to i bit \u0107ete sigurni, imaju\u0107i potrebne klju\u010deve i potpisuju\u0107i sve, da je to stvarno va\u0161 chart.<\/p>\n<p>Osim toga, <strong>Helm klijent podr\u017eava TLS<\/strong> (ne u smislu HTTP-a sa strane servera, ve\u0107 uzajamni TLS). Mo\u017eete koristiti server i klijent klju\u010deve za komunikaciju. Iskreno, ne koristim takav mehanizam zbog nevolje prema uzajamnim certifikatima. U principu, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/helm\/chartmuseum\">chartmuseum<\/a><\/noindex> \u2014 glavni alat za postavljanje Helm Repo za Helm 2 \u2014 tako\u0111er podr\u017eava basic auth. Mo\u017eete koristiti basic auth ako je to prikladnije i sigurnije.<\/p>\n<p>Postoji i plugin <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/hayorov\/helm-gcs\">helm-gcs<\/a><\/noindex>, koji omogu\u0107uje postavljanje Chart Repos u Google Cloud Storage. To je prili\u010dno prakti\u010dno, odli\u010dno radi i dovoljno je sigurno, jer se koriste svi opisani mehanizmi.<\/p>\n<p><img decoding=\"async\" alt=\"Sigurnost Helma\" src=\"\/wp-content\/uploads\/2019\/08\/6a72bfd96c7eb0e2fdd7bcbf128e6433.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAko uklju\u010dite HTTPS ili TLS, koristite mTLS, pove\u017eite basic auth da dodatno smanjite rizike, dobit \u0107ete siguran kanal komunikacije izme\u0111u Helm CLI i Chart Repo.<\/p>\n<h3>gRPC API<\/h3>\n<p>\nSljede\u0107i korak je vrlo odgovoran \u2014 osigurati Tiller, koji se nalazi u klasteru i koji je, s jedne strane, server, a s druge strane \u2014 sam pristupa drugim komponentama i poku\u0161ava se predstavljati nekim drugim.<\/p>\n<p>Kao \u0161to sam ve\u0107 rekao, Tiller je servis koji izla\u017ee gRPC, a Helm klijent dolazi do njega putem gRPC-a. Po defaultu, naravno, TLS je isklju\u010den. Za\u0161to je to tako \u2014 pitanje je rasprave, mislim da je to kako bi se pojednostavila inicijalna konfiguracija.<\/p>\n<blockquote><p>Za produkciju i \u010dak za staging preporu\u010dujem uklju\u010diti TLS na gRPC.<\/p><\/blockquote>\n<p>\nSmislim da je, za razliku od mTLS za chartove, ovdje to prikladno i vrlo jednostavno \u2014 generirate PQI infrastrukturu, kreirate certifikat, pokre\u0107ete Tiller, predajete certifikat tijekom inicijalizacije. Nakon toga mo\u017eete izvoditi sve Helm naredbe, predstavljaju\u0107i se generiranim certifikatom i privatnim klju\u010dem.<\/p>\n<p><img decoding=\"async\" alt=\"Sigurnost Helma\" src=\"\/wp-content\/uploads\/2019\/08\/ed55b9a465ed1278b272c52c90b2b345.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTime \u0107ete se za\u0161tititi od svih zahtjeva prema Tilleru izvana iz klastera.<\/p>\n<p>Dakle, osigurali smo kanal povezivanja s Tillerom, ve\u0107 smo razgovarali o RBAC-u i postavili prava Kubernetes apiservera, smanjili domen koji mo\u017ee komunicirati.<\/p>\n<h2>Za\u0161ti\u0107eni Helm<\/h2>\n<p>\nPogledajmo kona\u010dnu shemu. To je ista arhitektura sa istim strelicama.<\/p>\n<p><img decoding=\"async\" alt=\"Sigurnost Helma\" src=\"\/wp-content\/uploads\/2019\/08\/6672e254ad93b917f57794e1619a572e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSve veze sada se mogu odva\u017enije prikazati zelenom bojom:<\/p>\n<ul>\n<li>za Chart Repo koristimo TLS ili mTLS i osnovnu autentifikaciju;<\/li>\n<li>mTLS za Tiller, koji je izlo\u017een kao gRPC usluga s TLS-om, koristimo certifikate;<\/li>\n<li>u klasteru se koristi posebni servisni ra\u010dun s ulogom i RoleBindingom.\u00a0<\/li>\n<\/ul>\n<p>\nZna\u010dajno smo osigurali klaster, ali netko pametan je rekao:<\/p>\n<blockquote><p>\u201eApsolutno sigurno rje\u0161enje mo\u017ee biti samo jedno \u2014 isklju\u010den ra\u010dunar koji se nalazi u betonskoj kutiji i \u010duvaju ga vojnici.\u201c<\/p><\/blockquote>\n<p>\nPostoje razli\u010diti na\u010dini manipulacije podacima i pronala\u017eenja novih vektora napada. Me\u0111utim, siguran sam da \u0107e vas ove preporuke omogu\u0107iti da postignete osnovni industrijski standard sigurnosti.<\/p>\n<h2>Bonus<\/h2>\n<p>\nOvaj dio se ne odnosi izravno na sigurnost, ali \u0107e tako\u0111er biti koristan. Prikazat \u0107u neke zanimljive stvari koje mnogi ne znaju. Na primjer, kako tra\u017eiti chartove \u2014 slu\u017ebene i neslu\u017ebene.<\/p>\n<p>U repozitoriju <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/helm\/charts\">github.com\/helm\/charts<\/a><\/noindex> sada postoji oko 300 chartova i dva strima: stable i incubator. Oni koji doprinose znaju koliko je te\u0161ko pre\u0107i iz incubatora u stable, i koliko je lako ispasti iz stablea. Me\u0111utim, ovo nije najbolji alat za tra\u017eenje chartova za Prometheus i sve \u0161to vam se svi\u0111a, iz jednog jednostavnog razloga \u2014 to nije portal za jednostavno pretra\u017eivanje paketa.<\/p>\n<p>Ali postoji usluga <noindex><a rel=\"nofollow\" href=\"https:\/\/hub.helm.sh\/\">hub.helm.sh<\/a><\/noindex>, s kojom je pronala\u017eenje chartova mnogo jednostavnije. Najva\u017enije, tamo je znatno vi\u0161e vanjskih repozitorija i dostupno je gotovo 800 chartova. Osim toga, mo\u017eete povezati svoj repozitorij ako iz nekog razloga ne \u017eelite slati svoje chartove u stable.<\/p>\n<p>Isprobajte hub.helm.sh i hajde da ga zajedno razvijamo. Ova usluga je pod Helm projektom, a vi mo\u017eete doprinositi \u010dak i njegovom UI-ju ako ste frontend developer i \u017eelite jednostavno pobolj\u0161ati izgled.<\/p>\n<p>Tako\u0111er \u017eelim skrenuti va\u0161u pozornost na <strong>Open Service Broker API integraciju<\/strong>. Zvu\u010di komplicirano i nejasno, ali rje\u0161ava probleme s kojima se svi suo\u010davaju. Objasnit \u0107u na jednostavnom primjeru.<\/p>\n<p><img decoding=\"async\" alt=\"Sigurnost Helma\" src=\"\/wp-content\/uploads\/2019\/08\/3aeb7e0781e50a79b518f1056873f73a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nImamo Kubernetes klaster u kojem \u017eelimo pokrenuti klasi\u010dnu aplikaciju \u2014 WordPress. Obi\u010dno, za punu funkcionalnost potrebna je baza podataka. Ima mnogo razli\u010ditih rje\u0161enja, na primjer, mo\u017eemo pokrenuti vlastitu stateful uslugu. To nije ba\u0161 zgodno, ali mnogi to rade.<\/p>\n<p>Drugi, na primjer mi u Chainstack-u, koriste upravljane baze podataka, kao \u0161to su MySQL ili PostgreSQL, za servere. Stoga se na\u0161e baze nalaze negdje u oblaku.<\/p>\n<p>Ali javlja se problem: potrebno je povezati na\u0161u uslugu s bazom podataka, stvoriti flavor baze podataka, prenijeti vjerodajnice i nekako njima upravljati. Sve to obi\u010dno obavlja sistemski administrator ili programer ru\u010dno. Nema problema kad je aplikacija malo. Kada ih je puno, potrebna je kombajn. Takav kombajn postoji \u2014 to je Service Broker. Omogu\u0107uje kori\u0161tenje posebnog dodatka za klaster javnog oblaka i naru\u010divanje resursa od pru\u017eatelja putem Brokera, kao da je to API. Za to se mogu koristiti izvorni alati Kubernetes-a.<\/p>\n<p>To je vrlo jednostavno. Mo\u017eete zatra\u017eiti, na primjer, Managed MySQL u Azure-u s osnovnim tierom (to se mo\u017ee podesiti). Kori\u0161tenjem Azure API-a baza \u0107e biti stvorena i pripremljena za kori\u0161tenje. Ne\u0107ete se trebati u to mije\u0161ati, za to se brine dodatak. Na primjer, OSBA (Azure dodatak) \u0107e vratiti vjerodajnice u servis, prenijeti to Helm-u. Mo\u0107i \u0107ete koristiti WordPress s oblaku MySQL-om, ne brinu\u0107i se o upravljanim bazama podataka i ne zamaraju\u0107i se stateful uslugama unutra.<\/p>\n<blockquote><p>Mo\u017ee se re\u0107i da Helm predstavlja ljepilo koje s jedne strane omogu\u0107uje raspore\u0111ivanje usluga, a s druge \u2014 konzumiranje resursa pru\u017eatelja oblaka.<\/p><\/blockquote>\n<p>\nMo\u017eete napisati svoj dodatak i koristiti cijelu tu pri\u010du on-premise. Tada \u0107ete imati jednostavno svoj dodatak za korporativnog Cloud-providera. Preporu\u010dujem da isprobate takav pristup, posebno ako imate veliku razmjenu i \u017eelite brzo postaviti dev, staging ili cijelu infrastrukturu pod funkciju. To \u0107e olak\u0161ati \u017eivot va\u0161im operacijama ili DevOps-u.<\/p>\n<p>Jo\u0161 jedan nalaz koji sam ve\u0107 spomenuo \u2014 to je <strong>helm-gcs dodatak<\/strong>, koji omogu\u0107uje kori\u0161tenje Google-buckets (objektno spremi\u0161te) za pohranu Helm-ovih grafova.<\/p>\n<p><img decoding=\"async\" alt=\"Sigurnost Helma\" src=\"\/wp-content\/uploads\/2019\/08\/30888c4f9b5dba14b87ba1e29e0ebed7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPotrebna su samo \u010detiri naredbe da biste po\u010deli koristiti:<\/p>\n<ol>\n<li>instalirati dodatak;<\/li>\n<li>inicializirati ga;<\/li>\n<li>postaviti put do bucket-a koji se nalazi u gcp;<\/li>\n<li>objaviti karte na standardni na\u010din.<\/li>\n<\/ol>\n<p>\nLepota je u tome \u0161to \u0107e se koristiti native pristup gcp za autorizaciju. Mo\u017eete koristiti servisni ra\u010dun, ra\u010dun programera \u2014 sve \u0161to \u017eelite. To je vrlo zgodno i ne ko\u0161ta ni\u0161ta u eksploataciji. Ako, kao i ja, propagirate opsless filozofiju, onda \u0107e vam ovo biti vrlo prakti\u010dno, posebno za manje timove.<\/p>\n<h2>Alternatives<\/h2>\n<p>\nHelm nije jedino re\u0161enje za upravljanje servisima. Ima puno pitanja, verovatno zbog toga je tako brzo iza\u0161la tre\u0107a verzija. Naravno, postoje alternative.<\/p>\n<p>To mogu biti specijalizovana re\u0161enja, kao \u0161to su Ksonnet ili Metaparticle. Mo\u017eete koristiti svoja klasi\u010dna sredstva za upravljanje infrastrukturom (Ansible, Terraform, Chef itd.) za iste ciljeve o kojima sam govorio.<\/p>\n<p>Na kraju, postoji re\u0161enje <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/operator-framework\">Operator Framework<\/a><\/noindex>, \u010dija popularnost raste.<\/p>\n<blockquote><p>Operator Framework je glavna alternativa Helmu na koju treba obratiti pa\u017enju.<\/p><\/blockquote>\n<p>\nOno je vi\u0161e nativno za CNCF i Kubernetes, <strong>ali je prag ulaska mnogo vi\u0161i<\/strong>, potrebno je vi\u0161e programirati i manje opisivati manifeste.<\/p>\n<p>Postoje razli\u010diti dodaci, kao \u0161to su Draft, Scaffold. Oni zna\u010dajno olak\u0161avaju \u017eivot, na primer, programerima olak\u0161avaju ciklus slanja i pokretanja Helma za implementaciju testnog okru\u017eenja. Nazvao bih ih pro\u0161iriva\u010dima mogu\u0107nosti.<\/p>\n<p>Evo preglednog grafikona o tome gde se \u0161ta nalazi.<\/p>\n<p><img decoding=\"async\" alt=\"Sigurnost Helma\" src=\"\/wp-content\/uploads\/2019\/08\/81a8236c975d5e1649acaaa7989c27ba.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNa apscisi je nivo va\u0161e li\u010dne kontrole nad de\u0161avanjima, na ordinati nivo nativnosti Kubernetesa. Helm verzija 2 je negde na sredini. U verziji 3 nije monumentalno, ali su pobolj\u0161ani i kontrola i nivo nativnosti. Re\u0161enja nivoa Ksonnet su ipak inferiorna \u010dak i Helmu 2. Me\u0111utim, vredi ih pogledati da biste znali \u0161ta jo\u0161 postoji u ovom svetu. Naravno, va\u0161 menad\u017eer konfiguracije \u0107e biti pod va\u0161om kontrolom, ali apsolutno nije nativan za Kubernetes.<\/p>\n<p>Operator Framework je apsolutno nativan za Kubernetes i omogu\u0107ava da se njime upravlja mnogo elegantnije i preciznije (ali pametno je imati na umu nivo ulaska). Pre bi bio pogodan za specijalizovanu aplikaciju i kreiranje menad\u017ementa za nju, nego kao masovni kombajn za pakovanje ogromnog broja aplikacija pomo\u0107u Helma.<\/p>\n<p>Pro\u0161iriva\u010di samo malo pobolj\u0161avaju kontrolu, dopunjavaju radne tokove ili skra\u0107uju uglove CI\/CD pipelines.<\/p>\n<h2>Budu\u0107nost Helma<\/h2>\n<p>\nDobra vijest je da dolazi Helm 3. Ve\u0107 je objavljena alfa verzija Helm 3.0.0-alpha.2, koju mo\u017eete isprobati. Dovoljno je stabilna, ali funkcionalnost je jo\u0161 uvijek ograni\u010dena.<\/p>\n<p>Za\u0161to je potreban Helm 3? Prije svega, radi se o <strong>nestajanju Tillera<\/strong>, kao komponente. To je, kao \u0161to ve\u0107 razumijete, ogroman korak naprijed, jer se s aspekta sigurnosti arhitekture sve pojednostavljuje.<\/p>\n<p>Kada je Helm 2 stvoren, a to je bilo u vrijeme Kubernetes 1.8 ili \u010dak ranije, mnoge koncepcije su bile nezrele. Na primjer, koncept CRD se sada aktivno implementira, a Helm \u0107e <strong>koristiti CRD<\/strong>, kako bi pohranio strukture. Bit \u0107e mogu\u0107e koristiti samo klijenta i ne dr\u017eati serverski dio. U skladu s tim, koristiti nativne Kubernetes komande za rad sa strukturama i resursima. To je ogroman korak naprijed.<\/p>\n<p>Pojavit \u0107e se <strong>podr\u0161ka za nativne OCI repozitorije<\/strong> (Open Container Initiative). To je ogromna inicijativa, a Helm je zanimljiv prvenstveno za to da smjesti svoje karte. Dolazi do toga da, na primjer, Docker Hub podr\u017eava mnoge OCI standarde. Ne \u017eelim precijeniti, ali mo\u017eda \u0107e klasi\u010dni pru\u017eatelji Docker repozitorija po\u010deti davati mogu\u0107nost smje\u0161taja svojih Helm karata.<\/p>\n<p>Sporna pri\u010da za mene je <strong>podr\u0161ka za Luu<\/strong>, kao templating engine za pisanje skripti. Nisam veliki obo\u017eavatelj Lue, ali to \u0107e biti potpuno opcionalna mogu\u0107nost. Provjerio sam to tri puta \u2014 kori\u0161tenje Lue ne\u0107e biti obavezno. Dakle, tko \u017eeli mo\u017ee koristiti Luu, a tko voli Go \u2014 pridru\u017eite se na\u0161em velikom kampu i koristite go-tmpl za to.<\/p>\n<p>Napokon, ono \u0161to mi je definitivno nedostajalo je <strong>pojava sheme i validacija tipova podataka<\/strong>. Vi\u0161e ne\u0107e biti problema s int ili string, nije potrebno obavijati nulu u dvostruke navodnike. Pojavit \u0107e se JSONS shema koja \u0107e to omogu\u0107iti da se jasno opi\u0161e za values.<\/p>\n<p>Veoma \u0107e se preraditi <strong>event-driven model<\/strong>. Ve\u0107 je konceptualno opisan. Pogledajte u granu Helm 3 i vidjet \u0107ete koliko je mnogo dodatih doga\u0111aja, hookova i drugih stvari koje \u0107e znatno pojednostaviti i, s druge strane, dodati kontrolu nad procesima implementacije i reakcijama na njih.<\/p>\n<p>Helm 3 \u0107e biti jednostavniji, sigurniji i zanimljiviji ne zato \u0161to volimo Helm 2 manje, ve\u0107 zato \u0161to Kubernetes postaje napredniji. U skladu s tim, Helm mo\u017ee iskoristiti dostignu\u0107a Kubernetes-a i stvoriti odli\u010dne menad\u017eere za Kubernetes.<\/p>\n<blockquote><p>Jo\u0161 jedna dobra vijest je da <noindex><a rel=\"nofollow\" href=\"https:\/\/devopsconf.io\/moscow\/2019\">DevOpsConf<\/a><\/noindex> Aleksandar Hajev \u0107e govoriti, <noindex><a rel=\"nofollow\" href=\"https:\/\/devopsconf.io\/moscow\/2019\/abstracts\/5564\">mogu li kontejneri biti sigurni?<\/a><\/noindex> Podsje\u0107amo, konferencija o integraciji procesa razvoja, testiranja i operacija odr\u017eat \u0107e se u Moskvi <strong>30. rujna i 1. listopada<\/strong>. Do 20. kolovoza jo\u0161 se mo\u017ee <noindex><a rel=\"nofollow\" href=\"https:\/\/conf.ontico.ru\/lectures\/propose\/?conference=dc2019-moscow\">ili opu\u0161teno<\/a><\/noindex> i podijeliti svoja iskustva rje\u0161avanja <noindex><a rel=\"nofollow\" href=\"https:\/\/devopsconf.io\/moscow\/2019\/articles\/917\">jednog od mnogih<\/a><\/noindex> zadatka DevOps pristupa.<\/p>\n<p>Za novosti i informacije o konferenciji pratite na\u0161u <noindex><a rel=\"nofollow\" href=\"http:\/\/eepurl.com\/bN_0E1\">newsletteru<\/a><\/noindex> i <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/DevOpsConfChannel\">telegram grupu<\/a><\/noindex>.<\/p><\/blockquote>\n<p>Izvor: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/oleg-bunin\/blog\/462665\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0421\u0443\u0442\u044c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430 \u043e \u0441\u0430\u043c\u043e\u043c \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u043c \u043f\u0430\u043a\u0435\u0442\u043d\u043e\u043c \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0435 \u0434\u043b\u044f Kubernetes \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0438\u0437\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u044d\u043c\u043e\u0434\u0436\u0438: \u043a\u043e\u0440\u043e\u0431\u043a\u0430 \u2014 \u044d\u0442\u043e Helm (\u044d\u0442\u043e \u0441\u0430\u043c\u043e\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0435\u0435, \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u043c \u0440\u0435\u043b\u0438\u0437\u0435 Emoji); \u0437\u0430\u043c\u043e\u043a \u2014 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c; \u0447\u0435\u043b\u043e\u0432\u0435\u0447\u0435\u043a \u2014 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b. \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0436\u0435 \u0434\u0435\u043b\u0435, \u0432\u0441\u0435 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u043c\u043d\u043e\u0436\u0435\u0447\u043a\u043e \u0441\u043b\u043e\u0436\u043d\u0435\u0435, \u0438 \u0440\u0430\u0441\u0441\u043a\u0430\u0437 \u043f\u043e\u043b\u043e\u043d \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0435\u0439 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c Helm \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u043c. [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":27661,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-36918","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.5 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0421\u0443\u0442\u044c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430 \u043e \u0441\u0430\u043c\u043e\u043c \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u043c \u043f\u0430\u043a\u0435\u0442\u043d\u043e\u043c \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0435 \u0434\u043b\u044f Kubernetes \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0438\u0437\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u044d\u043c\u043e\u0434\u0436\u0438: \u043a\u043e\u0440\u043e\u0431\u043a\u0430 \u2014 \u044d\u0442\u043e Helm (\u044d\u0442\u043e \u0441\u0430\u043c\u043e\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0435\u0435, \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u043c \u0440\u0435\u043b\u0438\u0437\u0435 Emoji);.\" \/>\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\/hr\/blog\/administrirovanie\/bezopasnost-helm\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.5\" \/>\n\t\t<meta property=\"og:locale\" content=\"hr_HR\" \/>\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\u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c Helm | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0421\u0443\u0442\u044c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430 \u043e \u0441\u0430\u043c\u043e\u043c \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u043c \u043f\u0430\u043a\u0435\u0442\u043d\u043e\u043c \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0435 \u0434\u043b\u044f Kubernetes \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0438\u0437\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u044d\u043c\u043e\u0434\u0436\u0438: \u043a\u043e\u0440\u043e\u0431\u043a\u0430 \u2014 \u044d\u0442\u043e Helm (\u044d\u0442\u043e \u0441\u0430\u043c\u043e\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0435\u0435, \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u043c \u0440\u0435\u043b\u0438\u0437\u0435 Emoji);.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/hr\/blog\/administrirovanie\/bezopasnost-helm\" \/>\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-31T19:14:43+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:14:43+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\udd47Sigurnost Helma | ProHoster","description":"Su\u0161tinu govora o najpopularnijem menad\u017eeru paketa za Kubernetes moglo bi se prikazati pomo\u0107u emod\u017eija: kutija \u2014 to je Helm (to je najprimjerenije u posljednjem izdanju Emoji);","canonical_url":"https:\/\/prohoster.info\/hr\/blog\/administrirovanie\/bezopasnost-helm","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"hr_HR","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\u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c Helm | ProHoster","og:description":"\u0421\u0443\u0442\u044c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430 \u043e \u0441\u0430\u043c\u043e\u043c \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u043c \u043f\u0430\u043a\u0435\u0442\u043d\u043e\u043c \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0435 \u0434\u043b\u044f Kubernetes \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0438\u0437\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u044d\u043c\u043e\u0434\u0436\u0438: \u043a\u043e\u0440\u043e\u0431\u043a\u0430 \u2014 \u044d\u0442\u043e Helm (\u044d\u0442\u043e \u0441\u0430\u043c\u043e\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0435\u0435, \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u043c \u0440\u0435\u043b\u0438\u0437\u0435 Emoji);.","og:url":"https:\/\/prohoster.info\/hr\/blog\/administrirovanie\/bezopasnost-helm","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-31T19:14:43+00:00","article:modified_time":"2019-10-31T19:14:43+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"36918","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-22 05:19:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:36:25","updated":"2026-01-22 05:19:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/posts\/36918","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/comments?post=36918"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/posts\/36918\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/media\/27661"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/media?parent=36918"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/categories?post=36918"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/tags?post=36918"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}