{"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\/it\/blog\/administrirovanie\/bezopasnost-helm","title":{"rendered":"Sicurezza di Helm","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>L'essenza della storia del gestore di pacchetti pi\u00f9 popolare per Kubernetes potrebbe essere rappresentata attraverso emoji:<\/p>\n<ul>\n<li>una scatola \u2014 \u00e8 Helm (questo \u00e8 il termine pi\u00f9 adatto nell'ultima versione di Emoji);<\/li>\n<li>una serratura \u2014 sicurezza;<\/li>\n<li>un omino \u2014 soluzione al problema.<\/li>\n<\/ul>\n<p>\n<img decoding=\"async\" alt=\"Sicurezza di Helm\" src=\"\/wp-content\/uploads\/2019\/08\/91099b372fd73bce94268563c3ee2c50.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIn realt\u00e0, tutto sar\u00e0 un po' pi\u00f9 complesso, e la narrazione \u00e8 piena di dettagli tecnici su come <b>rendere Helm sicuro<\/b>.<\/p>\n<ul>\n<li>In breve, che cos'\u00e8 Helm, se non lo sapevi o lo hai dimenticato. Quali problemi risolve e quale posizione occupa nell'ecosistema.<\/li>\n<li>Esaminiamo l'architettura di Helm. Nessuna discussione sulla sicurezza e su come rendere uno strumento o una soluzione pi\u00f9 sicura pu\u00f2 prescindere dalla comprensione dell'architettura del componente.<\/li>\n<li>Discutiamo dei componenti di Helm.<\/li>\n<li>La domanda pi\u00f9 scottante \u2014 il futuro \u2014 la nuova versione di Helm 3.\u00a0<\/li>\n<\/ul>\n<p>\nTutto ci\u00f2 di cui si parla in questo articolo riguarda Helm 2. Questa versione \u00e8 attualmente in produzione e, molto probabilmente, \u00e8 quella che stai utilizzando ora e in essa ci sono minacce alla sicurezza.<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=\"Guarda il 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>Informazioni sul relatore:<\/strong> Alexandr Khayorov (<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/allexx\/\" class=\"user_link\">allexx<\/a><\/noindex>) lavora nello sviluppo da 10 anni, aiuta a migliorare i contenuti <noindex><a rel=\"nofollow\" href=\"https:\/\/conf.python.ru\/2019\">Moscow Python Conf++<\/a><\/noindex> ed \u00e8 entrato a far parte del comitato <noindex><a rel=\"nofollow\" href=\"https:\/\/events.linuxfoundation.org\/events\/helm-summit-2019\/\">Helm Summit<\/a><\/noindex>. Attualmente lavora in Chainstack come development lead \u2014 un ibrido tra un responsabile dello sviluppo e una persona che si occupa della delivery delle versioni finali. Cio\u00e8 \u00e8 presente sul campo, dove accade tutto, dalla creazione del prodotto alla sua operativit\u00e0.<\/p>\n<p>Chainstack \u00e8 una piccola startup in rapida crescita, il cui obiettivo \u00e8 fornire ai clienti la possibilit\u00e0 di dimenticare l'infrastruttura e le complessit\u00e0 dell'operativit\u00e0 delle applicazioni decentralizzate, il team di sviluppo si trova a Singapore. Non chiedere a Chainstack di vendere o comprare criptovalute, ma proponi di parlare di framework blockchain per le aziende e ti risponderanno con piacere.<\/p>\n<h2>Helm<\/h2>\n<p>\n\u00c8 un gestore di pacchetti (chart) per Kubernetes. Il modo pi\u00f9 chiaro e universale di portare applicazioni in un cluster Kubernetes.<\/p>\n<p><img decoding=\"async\" alt=\"Sicurezza di Helm\" src=\"\/wp-content\/uploads\/2019\/08\/30c0fc1cc1c6ebde97c6e8ec1886ce9f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSi parla, ovviamente, di un approccio pi\u00f9 strutturato e industriale, piuttosto che della creazione dei propri manifesti YAML e scrittura di piccole utilit\u00e0.<\/p>\n<blockquote><p>Helm \u00e8 il meglio che c'\u00e8 attualmente tra le soluzioni disponibili e popolari.<\/p><\/blockquote>\n<p>\nPerch\u00e9 Helm? Innanzitutto perch\u00e9 \u00e8 supportato da CNCF. Cloud Native \u00e8 una grande organizzazione, madre di progetti come Kubernetes, etcd, Fluentd e altri.<\/p>\n<p>Un altro fatto importante, Helm \u00e8 un progetto molto popolare. Quando a gennaio 2019 ho iniziato a pensare di raccontare come rendere Helm sicuro, il progetto aveva mille stelle su GitHub. A maggio, erano diventate 12.000.<\/p>\n<p>Molti sono interessati a Helm, quindi, anche se non lo stai ancora utilizzando, le conoscenze riguardo alla sua sicurezza ti saranno utili. <strong>La sicurezza \u00e8 importante.<\/strong><\/p>\n<p>Il team principale di Helm \u00e8 supportato da Microsoft Azure, quindi \u00e8 un progetto piuttosto stabile rispetto a molti altri. Il rilascio di Helm 3 Alpha 2 a met\u00e0 luglio dimostra che ci sono molte persone che lavorano al progetto, e hanno voglia e capacit\u00e0 di sviluppare e migliorare Helm.<\/p>\n<p><img decoding=\"async\" alt=\"Sicurezza di Helm\" src=\"\/wp-content\/uploads\/2019\/08\/e53c8e64c3cf5eea3fbd9b0095b0f81e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHelm affronta diversi problemi radice nella gestione delle applicazioni su Kubernetes.<\/p>\n<ul>\n<li>Imballaggio dell'applicazione. Anche un'applicazione semplice come \"Hello, World\" su WordPress rappresenta gi\u00e0 diversi servizi che si desidera impacchettare insieme.<\/li>\n<li>Gestione della complessit\u00e0 che emerge nella gestione di queste applicazioni.<\/li>\n<li>Ciclo di vita che non termina dopo l'installazione o il rilascio dell'applicazione. Continua a vivere, deve essere aggiornata, e Helm aiuta a farlo portando le giuste misure e politiche.<\/li>\n<\/ul>\n<p>\n<strong>Imballaggio<\/strong> \u00e8 strutturato in modo chiaro: ci sono metadati in piena conformit\u00e0 con il funzionamento di un comune gestore di pacchetti per Linux, Windows o MacOS. Ovvero, repository, dipendenze da vari pacchetti, metainformazioni per le applicazioni, configurazioni, peculiarit\u00e0 di configurazione, indicizzazione delle informazioni, ecc. Tutto questo Helm consente di ottenere e utilizzare per le applicazioni.<\/p>\n<p><strong>Gestione della complessit\u00e0<\/strong>. Se hai molte applicazioni simili, \u00e8 necessaria la parametrizzazione. Da ci\u00f2 derivano i modelli, ma per non dover inventare il tuo modo di creare modelli, puoi utilizzare ci\u00f2 che Helm offre di default.<\/p>\n<p><strong>Gestione del ciclo di vita dell'applicazione<\/strong> \u2013 a mio parere, questa \u00e8 la questione pi\u00f9 interessante e irrisolta. \u00c8 il motivo per cui sono approdato a Helm in un primo momento. Dovevamo monitorare il ciclo di vita dell'applicazione, volevamo trasferire il nostro CI\/CD e i cicli delle applicazioni in questa nuova forma.<\/p>\n<p>Helm consente di:<\/p>\n<ul>\n<li>gestire i rilasci, introduce il concetto di configurazione e revisione;<\/li>\n<li>effettuare rollback con successo;<\/li>\n<li>utilizzare hook per vari eventi;<\/li>\n<li>aggiungere controlli aggiuntivi per le applicazioni e rispondere ai loro risultati.<\/li>\n<\/ul>\n<p>\nInoltre <strong>Helm ha \"batterie\"<\/strong> \u2014 un'enorme quantit\u00e0 di cose deliziose che puoi includere sotto forma di plugin, semplificando la tua vita. I plugin possono essere scritti autonomamente, sono abbastanza isolati e non richiedono un'architettura complessa. Se vuoi realizzare qualcosa, ti consiglio di farlo sotto forma di plugin e poi, eventualmente, includerlo nell'upstream.<\/p>\n<p>Helm si basa su tre concetti principali:<\/p>\n<ul>\n<li><strong>Chart Repo<\/strong> \u2014 descrizione e array di parametri disponibili per il tuo manifesto.\u00a0<\/li>\n<li><strong>Configurazione<\/strong> \u2014 cio\u00e8 valori che verranno applicati (testo, valori numerici, ecc.).<\/li>\n<li><strong>Release<\/strong> racchiude due componenti principali, e insieme si trasformano in un Release. I Release possono essere versionati, ottenendo cos\u00ec una gestione del ciclo di vita: piccolo al momento dell'installazione e sostanziale al momento di un upgrade, downgrade o rollback.<\/li>\n<\/ul>\n<p><\/p>\n<h2>Architettura di Helm<\/h2>\n<p>\nNello schema \u00e8 riflessa concettualmente l'architettura di alto livello di Helm.<\/p>\n<p><img decoding=\"async\" alt=\"Sicurezza di Helm\" src=\"\/wp-content\/uploads\/2019\/08\/c5cf54890682a3d6ca7a45021b5006a1.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nRicordo che Helm \u00e8 qualcosa legato a Kubernetes. Pertanto, non possiamo fare a meno di un cluster Kubernetes (rettangolo). Il componente kube-apiserver si trova nel master. Senza Helm abbiamo Kubeconfig. Helm porta una piccola utility binaria, se cos\u00ec vogliamo chiamarla, l'utility Helm CLI, che pu\u00f2 essere installata su computer, laptop, mainframe \u2014 su qualsiasi cosa.<\/p>\n<p>Ma non \u00e8 sufficiente. Helm ha un componente server Tiller. Esso rappresenta gli interessi di Helm all'interno del cluster, \u00e8 un'applicazione all'interno del cluster Kubernetes proprio come qualsiasi altra.<\/p>\n<p>Il prossimo componente Chart Repo \u2014 un repository di chart. Esiste un repository ufficiale e pu\u00f2 esserci un repository privato dell'azienda o del progetto.<\/p>\n<h3>Interazione<\/h3>\n<p>\nVediamo come interagiscono i componenti dell'architettura quando vogliamo installare un'applicazione usando Helm.<\/p>\n<ul>\n<li>Diciamo <code>Helm install<\/code>, ci rivolgiamo al repository (Chart Repo) e otteniamo il chart Helm.<\/li>\n<\/ul>\n<p><\/p>\n<ul>\n<li>L'utility Helm (Helm CLI) interagisce con Kubeconfig per capire a quale cluster rivolgersi.\u00a0<\/li>\n<li>Ricevute queste informazioni, l'utility si rivolge a Tiller, che si trova nel nostro cluster, gi\u00e0 come un'applicazione.\u00a0<\/li>\n<li>Tiller si rivolge a Kube-apiserver per eseguire azioni in Kubernetes, creando alcuni oggetti (servizi, pod, repliche, segreti, ecc.).<\/li>\n<\/ul>\n<p>\nA questo punto complicheremo lo schema per vedere i vettori di attacco a cui potrebbe essere esposta l'intera architettura di Helm. E poi cercheremo di proteggerla.<\/p>\n<h3>Vettore di attacco<\/h3>\n<p>\nIl primo potenziale punto debole \u2014 <strong>API privilegiato<\/strong>&#8212;<strong>utente<\/strong>. Nell'ambito dello schema, si tratta di un hacker che ha ottenuto accesso amministrativo a Helm CLI.<\/p>\n<p><strong>Utente API non privilegiato<\/strong> pu\u00f2 anche rappresentare un pericolo, se si trova nelle vicinanze. Un tale utente avr\u00e0 un contesto diverso; ad esempio, potrebbe essere bloccato in un namespace del cluster nelle impostazioni di Kubeconfig.<\/p>\n<p>Il vettore di attacco pi\u00f9 interessante potrebbe essere un processo che si trova all'interno del cluster nelle vicinanze di Tiller e pu\u00f2 interagirvi. Potrebbe trattarsi di un server web o di un microservizio che vede l'ambiente di rete del cluster.<\/p>\n<p>Un'opzione esotica, ma in crescita, di attacco \u00e8 legata al Chart Repo. Un chart creato da un autore disonesto potrebbe contenere risorse non sicure, e lo eseguirete, fidandovi. Oppure, potrebbe sostituire il chart che state scaricando dal repository ufficiale, e ad esempio, creare delle risorse sotto forma di policy ed eseguire un'escalation dei permessi.<\/p>\n<p><img decoding=\"async\" alt=\"Sicurezza di Helm\" src=\"\/wp-content\/uploads\/2019\/08\/2828046feb9ba8413a1b0e8741b4c354.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCerchiamo di difenderci dagli attacchi su questi quattro fronti e di capire dove ci siano problemi nell'architettura di Helm, e dove, forse, non ce ne siano.<\/p>\n<p>Ingrandiamo lo schema, aggiungiamo pi\u00f9 elementi, ma manteniamo tutte le basi fondamentali.<\/p>\n<p><img decoding=\"async\" alt=\"Sicurezza di Helm\" src=\"\/wp-content\/uploads\/2019\/08\/4110898e79619b8546408c668c48da0d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHelm CLI comunica con il Chart Repo, interagisce con Kubeconfig, e il lavoro viene trasferito nel cluster al componente Tiller.<\/p>\n<p>Tiller \u00e8 rappresentato da due oggetti:<\/p>\n<ul>\n<li>Tiller-deploy svc, che espone un certo servizio;<\/li>\n<li>Tiller-deploy pod (nella schematizzazione in un'unica istanza in una replica), su cui gira tutto il carico, e che interagisce con il cluster.<\/li>\n<\/ul>\n<p>\nPer l'interazione vengono utilizzati diversi protocolli e schemi. In termini di sicurezza, ci interessano in particolare:<\/p>\n<ul>\n<li>Il meccanismo tramite il quale Helm CLI si rivolge al chart repo: quale protocollo, c'\u00e8 autenticazione e cosa si pu\u00f2 fare con questo.<\/li>\n<li>Il protocollo tramite il quale Helm CLI, utilizzando kubectl, comunica con Tiller. Si tratta di un server RPC installato all'interno del cluster.<\/li>\n<li>Lo stesso Tiller \u00e8 accessibile ai microservizi che si trovano nel cluster e interagisce con Kube-apiserver.<\/li>\n<\/ul>\n<p>\n<img decoding=\"async\" alt=\"Sicurezza di Helm\" src=\"\/wp-content\/uploads\/2019\/08\/19e7e085567f3bbb49746e6402926bd6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDiscutiamo di tutte queste direzioni in ordine.<\/p>\n<h2>RBAC<\/h2>\n<p><\/p>\n<blockquote><p>\u00c8 inutile parlare di alcuna sicurezza di Helm o di un altro servizio all'interno del cluster, se RBAC non \u00e8 attivato.<\/p><\/blockquote>\n<p>\nSembrerebbe che non sia la raccomandazione pi\u00f9 recente, ma sono sicuro che molti non hanno ancora attivato RBAC nemmeno in produzione, perch\u00e9 \u00e8 un grande impiccio e richiede molte configurazioni. Tuttavia, esorto a farlo.<\/p>\n<p><img decoding=\"async\" alt=\"Sicurezza di Helm\" 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 avvocato online per RBAC. Qui si trova un'enorme quantit\u00e0 di materiali interessanti che aiuteranno a configurare RBAC, mostreranno perch\u00e9 \u00e8 utile e come viverci in produzione.<\/p>\n<p>Cercher\u00f2 di spiegare come funziona Tiller e RBAC. Tiller opera all'interno del cluster sotto un certo account di servizio. Di solito, se RBAC non \u00e8 configurato, questo sar\u00e0 un super-utente. Nella configurazione di base, Tiller sar\u00e0 amministratore. Per questo motivo si dice spesso che Tiller \u00e8 un tunnel SSH verso il tuo cluster. In realt\u00e0 \u00e8 cos\u00ec, quindi puoi utilizzare un account di servizio specializzato invece del Default Service Account nello schema sopra.<\/p>\n<p>Quando inizializzi Helm, installandolo per la prima volta sul server, puoi specificare l'account di servizio usando <code>--service-account<\/code>. Questo permetter\u00e0 di utilizzare un utente con il set minimo di diritti. Tuttavia, dovrai creare una sorta di \"ghirlanda\": Role e RoleBinding.<\/p>\n<p><img decoding=\"async\" alt=\"Sicurezza di Helm\" src=\"\/wp-content\/uploads\/2019\/08\/ec805cde756495cfd5c480ac40739c43.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSfortunatamente, Helm non lo far\u00e0 per te. Tu o il tuo amministratore del cluster Kubernetes dovrete preparare in anticipo un insieme di Role e RoleBinding per l'account di servizio da fornire ad Helm.<\/p>\n<p>Sorge la domanda: qual \u00e8 la differenza tra Role e ClusterRole? La differenza \u00e8 che ClusterRole si applica a tutti i namespace, a differenza delle normali Role e RoleBinding che funzionano solo per un namespace specifico. Puoi configurare le politiche sia per l'intero cluster e tutti i namespace, sia in modo personalizzato per ciascun namespace separatamente.<\/p>\n<p>Vale la pena menzionare che RBAC consente di risolvere un altro grande problema. Molti lamentano che Helm, sfortunatamente, non supporta il multitenancy. Se pi\u00f9 team consumano il cluster e utilizzano Helm, \u00e8 impossibile configurare politiche e limitare il loro accesso all'interno di questo cluster, perch\u00e9 c'\u00e8 un certo account di servizio da cui opera Helm, creando sotto di lui tutte le risorse nel cluster, il che a volte \u00e8 molto scomodo. \u00c8 davvero cos\u00ec: sia il file binario che il processo, <strong>Helm Tiller non ha nozione di multitenancy.<\/strong>.<\/p>\n<p>Tuttavia, c'\u00e8 un ottimo modo che consente di eseguire Tiller nel cluster pi\u00f9 volte. Non ci sono problemi a riguardo, Tiller pu\u00f2 essere eseguito in ogni namespace. In questo modo puoi sfruttare RBAC, usando Kubeconfig come contesto, e limitare l'accesso a un Helm specifico.<\/p>\n<p>Questo apparir\u00e0 nel seguente modo.<\/p>\n<p><img decoding=\"async\" alt=\"Sicurezza di Helm\" src=\"\/wp-content\/uploads\/2019\/08\/eae922c7b5e1422fb51667364ed79e0a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAd esempio, ci sono due Kubeconfig con contesti per diversi team (due namespace): X Team per il team di sviluppo e il cluster dell'amministratore. Il cluster dell'amministratore ha il suo ampio Tiller, situato nello spazio Kube-system namespace, con un avanzato service-account. E c'\u00e8 un namespace separato per il team di sviluppo, che potr\u00e0 implementare i propri servizi in uno spazio dedicato.<\/p>\n<p>Questo \u00e8 un approccio pratico, Tiller non \u00e8 cos\u00ec esigente da poter influire significativamente sul tuo budget. \u00c8 una delle soluzioni rapide.<\/p>\n<blockquote><p>Non esitare a configurare Tiller separatamente e fornire un Kubeconfig con contesto per il team, per un sviluppatore specifico o per l'ambiente: Dev, Staging, Production (\u00e8 poco probabile che tutto sia su un unico cluster, ma \u00e8 possibile farlo).<\/p><\/blockquote>\n<p>\nContinuando la nostra storia, passiamo da RBAC a ConfigMaps.<\/p>\n<h3>ConfigMaps<\/h3>\n<p>\nHelm utilizza ConfigMaps come repository di dati. Quando abbiamo parlato di architettura, non c'era un database che conservasse informazioni sui rilasci, configurazioni, rollback, ecc. A questo scopo si utilizzano ConfigMaps.<\/p>\n<p>Il problema principale con le ConfigMaps \u00e8 noto: non sono sicure in linea di principio, in esse <strong>non \u00e8 possibile archiviare dati sensibili<\/strong>. Si tratta di tutto ci\u00f2 che non deve oltrepassare il servizio, come le password. Il modo pi\u00f9 nativo per Helm attualmente \u00e8 passare dall'uso delle ConfigMaps ai segreti.<\/p>\n<p>\u00c8 molto semplice. Devi sovrascrivere la configurazione di Tiller e specificare che il repository saranno i segreti. Allora ad ogni distribuzione riceverai non una ConfigMap, ma un segreto.<\/p>\n<p><img decoding=\"async\" alt=\"Sicurezza di Helm\" src=\"\/wp-content\/uploads\/2019\/08\/7fd12bfbed5c6c8111a5126c2ab9f853.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPuoi obiettare che i segreti stessi sono una concezione strana e non molto sicura. Tuttavia, \u00e8 importante capire che questo \u00e8 gestito dagli stessi sviluppatori di Kubernetes. A partire dalla versione 1.10, cio\u00e8 da un po' di tempo, \u00e8 possibile, almeno nei cloud pubblici, connettersi a uno storage adeguato per l'archiviazione dei segreti. Attualmente, il team sta lavorando per migliorare ulteriormente l'accesso ai segreti per singoli pod o altre entit\u00e0.<\/p>\n<blockquote><p>\u00c8 meglio trasferire lo storage di Helm ai segreti e, a sua volta, proteggerli in modo centralizzato.<\/p><\/blockquote>\n<p>\nCerto, rimarr\u00e0 <strong>un limite per l'archiviazione dei dati di 1 MB<\/strong>. Helm qui utilizza etcd come archiviazione distribuita per ConfigMaps. L\u00ec hanno calcolato che si tratta di un chunk di dati adatto per le repliche e simili. A questo proposito c'\u00e8 una discussione interessante su Reddit, consiglio di trovare questa lettura divertente per il fine settimana o di leggere un riassunto. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/helm\/helm\/issues\/1413\">qui<\/a><\/noindex>.<\/p>\n<h3>Chart Repos<\/h3>\n<p>\nI chart sono particolarmente vulnerabili dal punto di vista sociale e possono diventare una fonte di attacco \u00abMan in the middle\u00bb, soprattutto se si utilizza una soluzione di default. Si tratta principalmente di repository esposti tramite HTTP.<\/p>\n<blockquote><p>Certamente, \u00e8 necessario esporre l'Helm Repo su HTTPS: questa \u00e8 l'opzione migliore e non costa molto.<\/p><\/blockquote>\n<p>\nPrestare attenzione a <strong>meccanismo di firma dei chart<\/strong>. La tecnologia \u00e8 ridicolmente semplice. \u00c8 la stessa che utilizzi su GitHub, una normale macchina PGP con chiavi pubbliche e private. Configura tutto e sarai certo, possedendo le chiavi necessarie e firmando tutto, che questo \u00e8 davvero il tuo chart.<\/p>\n<p>Inoltre, <strong>Il client Helm supporta TLS<\/strong> (non in senso HTTP dal lato server, ma TLS mutuo). Puoi utilizzare chiavi server e client per comunicare. Devo ammettere che non uso questo meccanismo per il mio disprezzo verso i certificati reciproci. In generale, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/helm\/chartmuseum\">chartmuseum<\/a><\/noindex> \u00e8 lo strumento principale per esporre Helm Repo per Helm 2 e supporta anche l'autenticazione di base. Puoi utilizzare l'autenticazione di base se ti \u00e8 pi\u00f9 comoda e rassicurante.<\/p>\n<p>C'\u00e8 anche un plugin <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/hayorov\/helm-gcs\">helm-gcs<\/a><\/noindex>, che consente di ospitare Chart Repos in Google Cloud Storage. \u00c8 molto comodo, funziona splendidamente ed \u00e8 abbastanza sicuro, perch\u00e9 vengono utilizzati tutti i meccanismi descritti.<\/p>\n<p><img decoding=\"async\" alt=\"Sicurezza di Helm\" src=\"\/wp-content\/uploads\/2019\/08\/6a72bfd96c7eb0e2fdd7bcbf128e6433.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSe attivi HTTPS o TLS, usi mTLS, e attivi l'autenticazione di base per ridurre ulteriormente i rischi, otterrai un canale di comunicazione sicuro tra Helm CLI e Chart Repo.<\/p>\n<h3>gRPC API<\/h3>\n<p>\nIl passo successivo \u00e8 molto critico: mettere al sicuro Tiller, che si trova nel cluster e che \u00e8, da un lato, un server, dall'altro lato si rivolge ad altri componenti e cerca di presentarsi come qualcuno altro.<\/p>\n<p>Come ho gi\u00e0 detto, Tiller \u00e8 un servizio che espone gRPC; il client Helm si connette a lui tramite gRPC. Per impostazione predefinita, naturalmente, TLS \u00e8 disattivato. Perch\u00e9 sia stato fatto questo, \u00e8 una questione discutibile; mi sembra che sia per semplificare la configurazione all'inizio.<\/p>\n<blockquote><p>Per la produzione e anche per lo staging, consiglio di attivare TLS su gRPC.<\/p><\/blockquote>\n<p>\nA mio avviso, contrariamente a mTLS per i chart, qui \u00e8 appropriato e molto semplice: si genera l'infrastruttura PQI, si crea un certificato, si avvia Tiller e si passa il certificato durante l'inizializzazione. Dopo questo, \u00e8 possibile eseguire tutti i comandi Helm, presentandosi con il certificato generato e la chiave privata.<\/p>\n<p><img decoding=\"async\" alt=\"Sicurezza di Helm\" src=\"\/wp-content\/uploads\/2019\/08\/ed55b9a465ed1278b272c52c90b2b345.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIn questo modo ti proteggerai da tutte le richieste a Tiller dall'esterno del cluster.<\/p>\n<p>Quindi, abbiamo protetto il canale di connessione a Tiller, abbiamo gi\u00e0 discusso di RBAC e regolato i diritti dell'apiserver di Kubernetes, ridotto il dominio con cui pu\u00f2 interagire.<\/p>\n<h2>Helm protetto<\/h2>\n<p>\nDiamo un'occhiata allo schema finale. Questa \u00e8 la stessa architettura con le stesse frecce.<\/p>\n<p><img decoding=\"async\" alt=\"Sicurezza di Helm\" src=\"\/wp-content\/uploads\/2019\/08\/6672e254ad93b917f57794e1619a572e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTutte le connessioni ora possono essere tracciate in verde:<\/p>\n<ul>\n<li>per Chart Repo utilizziamo TLS o mTLS e autenticazione di base;<\/li>\n<li>mTLS per Tiller, e viene esposto come servizio gRPC con TLS, utilizziamo certificati;<\/li>\n<li>nel cluster viene utilizzato un account di servizio speciale con Ruolo e RoleBinding.\u00a0<\/li>\n<\/ul>\n<p>\nAbbiamo notevolmente protetto il cluster, ma qualcuno di intelligente ha detto:<\/p>\n<blockquote><p>\"La soluzione assolutamente sicura pu\u00f2 essere solo una: un computer spento, rinchiuso in un box di cemento e sorvegliato da soldati.\"<\/p><\/blockquote>\n<p>\nCi sono diversi modi per manipolare i dati e trovare nuovi vettori di attacco. Tuttavia, sono sicuro che queste raccomandazioni permetteranno di implementare un standard di sicurezza industriale di base.<\/p>\n<h2>Bonus<\/h2>\n<p>\nQuesta parte non riguarda direttamente la sicurezza, ma sar\u00e0 comunque utile. Mostrer\u00f2 alcune cose interessanti di cui pochi sono a conoscenza. Per esempio, come cercare i chart: ufficiali e non ufficiali.<\/p>\n<p>Nel repository <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/helm\/charts\">github.com\/helm\/charts<\/a><\/noindex> Attualmente ci sono circa 300 chart e due stream: stable e incubator. Chi contribuisce sa bene quanto sia difficile passare da incubator a stable e quanto sia facile uscire da stable. Tuttavia, questo non \u00e8 il miglior strumento per cercare i chart per Prometheus e per tutto ci\u00f2 che ti piace, per una semplice ragione: non \u00e8 un portale dove cercare i pacchetti comodamente.<\/p>\n<p>Ma c'\u00e8 un servizio <noindex><a rel=\"nofollow\" href=\"https:\/\/hub.helm.sh\/\">hub.helm.sh<\/a><\/noindex>, grazie al quale \u00e8 molto pi\u00f9 facile trovare i chart. La cosa pi\u00f9 importante \u00e8 che ci sono molti pi\u00f9 repository esterni e sono disponibili quasi 800 chart. Inoltre, puoi collegare il tuo repository se per qualche motivo non vuoi inviare i tuoi chart a stable.<\/p>\n<p>Prova hub.helm.sh e sviluppiamolo insieme. Questo servizio \u00e8 sotto il progetto Helm, e puoi contribuire anche alla sua interfaccia utente, se sei un frontend e vuoi semplicemente migliorare l'aspetto.<\/p>\n<p>Vorrei anche attirare la vostra attenzione su <strong>integrazione dell'API Open Service Broker<\/strong>. Sembra complicato e poco chiaro, ma risolve problemi con cui tutti si trovano a confronto. Spiegher\u00f2 con un semplice esempio.<\/p>\n<p><img decoding=\"async\" alt=\"Sicurezza di Helm\" src=\"\/wp-content\/uploads\/2019\/08\/3aeb7e0781e50a79b518f1056873f73a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nC'\u00e8 un cluster Kubernetes in cui vogliamo eseguire un'applicazione classica \u2014 WordPress. Di solito, per il pieno funzionamento \u00e8 necessario un database. Ci sono molte soluzioni diverse, per esempio, si pu\u00f2 avviare il proprio servizio stateful. Non \u00e8 molto comodo, ma molti fanno cos\u00ec.<\/p>\n<p>Altri, come noi di Chainstack, utilizzano database gestiti, come MySQL o PostgreSQL, per i server. Quindi i nostri database si trovano da qualche parte nel cloud.<\/p>\n<p>Ma sorge un problema: bisogna collegare il nostro servizio al database, creare un flavor del database, passare le credenziali e gestirle in qualche modo. Tutto questo viene normalmente fatto manualmente da un amministratore di sistema o da uno sviluppatore. E non ci sono problemi quando ci sono poche applicazioni. Quando ce ne sono molte, serve un raccoglitore. Questo raccoglitore esiste: \u00e8 il Service Broker. Permette di utilizzare un plugin speciale per il cluster del cloud pubblico e richiedere risorse al fornitore tramite il Broker, come se fosse un'API. Per questo si possono utilizzare gli strumenti nativi di Kubernetes.<\/p>\n<p>\u00c8 molto semplice. Si pu\u00f2 richiedere, ad esempio, Managed MySQL in Azure con tier base (questo \u00e8 configurabile). Utilizzando l'API Azure, il database verr\u00e0 creato e preparato per l'uso. Non sar\u00e0 necessario intervenire, se ne occupa il plugin. Ad esempio, OSBA (plugin Azure) restituir\u00e0 le credenziali al servizio, trasferendole a Helm. Potrete utilizzare WordPress con MySQL cloud, senza dovervi occupare di database gestiti e senza preoccuparvi dei servizi stateful interni.<\/p>\n<blockquote><p>Si pu\u00f2 dire che Helm funge da collante, che da un lato consente di distribuire i servizi e dall'altro di consumare le risorse dei fornitori di cloud.<\/p><\/blockquote>\n<p>\nSi pu\u00f2 scrivere il proprio plugin e utilizzare tutta questa storia on-premise. Allora avrete semplicemente il vostro plugin per il fornitore di cloud aziendale. Consiglio di provare questo approccio, soprattutto se avete una grande scala e volete distribuire rapidamente dev, staging o l'intera infrastruttura per una nuova funzionalit\u00e0. Questo semplificher\u00e0 la vita per le vostre operazioni o il DevOps.<\/p>\n<p>Un'altra scoperta che ho gi\u00e0 menzionato \u00e8 <strong>il plugin helm-gcs<\/strong>, che consente di utilizzare i Google-buckets (archiviazione oggetti) per memorizzare i chart di Helm.<\/p>\n<p><img decoding=\"async\" alt=\"Sicurezza di Helm\" src=\"\/wp-content\/uploads\/2019\/08\/30888c4f9b5dba14b87ba1e29e0ebed7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nServono solo quattro comandi per iniziare a utilizzarlo:<\/p>\n<ol>\n<li>installare il plugin;<\/li>\n<li>inizializzarlo;<\/li>\n<li>impostare il percorso per il bucket che si trova in gcp;<\/li>\n<li>pubblicare i chart in modo standard.<\/li>\n<\/ol>\n<p>\nIl bello \u00e8 che verr\u00e0 utilizzato il metodo nativo di gcp per l'autenticazione. Puoi utilizzare un account di servizio, un account di sviluppatore - qualsiasi cosa. \u00c8 molto conveniente e non ha costi operativi. Se, come me, sostieni la filosofia opsless, questo sar\u00e0 molto utile, specialmente per piccoli team.<\/p>\n<h2>Alternative<\/h2>\n<p>\nHelm non \u00e8 l'unica soluzione per la gestione dei servizi. Ci sono molte domande al riguardo, probabilmente \u00e8 per questo che \u00e8 stata rilasciata cos\u00ec rapidamente la terza versione. Certo, ci sono alternative.<\/p>\n<p>Possono essere soluzioni specializzate, come Ksonnet o Metaparticle. Puoi utilizzare anche i tuoi strumenti classici di gestione dell'infrastruttura (Ansible, Terraform, Chef, ecc.) per gli stessi scopi di cui ho parlato.<\/p>\n<p>Infine, c'\u00e8 una soluzione <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/operator-framework\">Operator Framework<\/a><\/noindex>, la cui popolarit\u00e0 sta crescendo.<\/p>\n<blockquote><p>L'Operator Framework \u00e8 l'alternativa principale a Helm a cui prestare attenzione.<\/p><\/blockquote>\n<p>\n\u00c8 pi\u00f9 nativo per CNCF e Kubernetes, <strong>ma la barriera all'ingresso \u00e8 molto pi\u00f9 alta<\/strong>, richiede pi\u00f9 programmazione e meno descrizione dei manifesti.<\/p>\n<p>Ci sono vari addon, come Draft, Scaffold. Questi semplificano notevolmente la vita, ad esempio facilitano il ciclo di invio e avvio di Helm per il deployment dell'ambiente di test. Li definirei potenziatori.<\/p>\n<p>Ecco un grafico esplicativo su dove si trovi ciascuna cosa.<\/p>\n<p><img decoding=\"async\" alt=\"Sicurezza di Helm\" src=\"\/wp-content\/uploads\/2019\/08\/81a8236c975d5e1649acaaa7989c27ba.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSull'asse delle ascisse c'\u00e8 il livello di controllo personale su quanto accade, sull'asse delle ordinate - il livello di nativit\u00e0 di Kubernetes. Helm versione 2 si colloca circa a met\u00e0 strada. Nella versione 3 non ci sono enormi cambiamenti, ma sia il controllo che il livello di nativit\u00e0 sono stati migliorati. Le soluzioni a livello Ksonnet sono comunque inferiori anche a Helm 2. Tuttavia, meritano di essere considerate per sapere cosa c'\u00e8 ancora in questo mondo. Certo, il tuo gestore di configurazioni sar\u00e0 sotto controllo, ma non \u00e8 affatto nativo per Kubernetes.<\/p>\n<p>L'Operator Framework \u00e8 assolutamente nativo per Kubernetes e consente una gestione molto pi\u00f9 elegante e meticolosa (ma ricordiamo la barriera all'ingresso). Piuttosto, si adatta a un'applicazione specializzata e alla creazione della sua gestione, piuttosto che a un grande raccoglitore che imballa un gran numero di applicazioni tramite Helm.<\/p>\n<p>I potenziatori semplicemente migliorano leggermente il controllo, completano il workflow o semplificano le fasi dei pipeline CI\/CD.<\/p>\n<h2>Il futuro di Helm<\/h2>\n<p>\nLa buona notizia \u00e8 che sta arrivando Helm 3. \u00c8 stata rilasciata la versione alpha 3.0.0-alpha.2 di Helm, che puoi provare. \u00c8 abbastanza stabile, ma la funzionalit\u00e0 \u00e8 ancora limitata.<\/p>\n<p>A cosa serve Helm 3? In primo luogo, si tratta di <strong>scomparsa di Tiller<\/strong>, come componente. Come gi\u00e0 potete capire, \u00e8 un enorme passo avanti, perch\u00e9 dal punto di vista della sicurezza dell'architettura tutto diventa pi\u00f9 semplice.<\/p>\n<p>Quando \u00e8 stato creato Helm 2, eravamo ai tempi di Kubernetes 1.8 o anche prima, molte delle concezioni erano immature. Ad esempio, la concezione dei CRD \u00e8 attualmente in fase di attuazione, e Helm <strong>utilizzer\u00e0 i CRD<\/strong>, per memorizzare le strutture. Sar\u00e0 possibile utilizzare solo il client senza dover mantenere un server. Di conseguenza, si potranno utilizzare i comandi nativi di Kubernetes per lavorare con le strutture e le risorse. Questo \u00e8 un enorme passo avanti.<\/p>\n<p>Ci sar\u00e0 <strong>supporto per i repository OCI nativi<\/strong> (Open Container Initiative). \u00c8 un'iniziativa enorme, e a Helm interessa principalmente per ospitare i propri chart. Si arriva al punto che, ad esempio, Docker Hub supporta molti standard OCI. Non lo dico con certezza, ma potrebbe darsi che i tradizionali fornitori di repository Docker inizino a consentire di ospitare i propri chart Helm.<\/p>\n<p>Una questione controversa per me \u00e8 <strong>il supporto di Lua<\/strong>, come motore di templating per la scrittura di script. Non sono un grande fan di Lua, ma sar\u00e0 un'opzione completamente facoltativa. L'ho verificato tre volte: l'uso di Lua non sar\u00e0 obbligatorio. Quindi, chi lo desidera potr\u00e0 usare Lua, mentre chi preferisce Go \u2014 unisciti al nostro grande gruppo e utilizza go-tmpl per questo.<\/p>\n<p>Finalmente qualcosa che mi mancava davvero \u00e8 <strong>l'introduzione degli schemi e la validazione dei tipi di dati<\/strong>. Non ci saranno pi\u00f9 problemi con int o string, non sar\u00e0 pi\u00f9 necessario racchiudere zero tra virgolette. Ci sar\u00e0 uno schema JSONS che permetter\u00e0 di descriverlo esplicitamente per i valori.<\/p>\n<p>L'intero modello <strong>basato su eventi<\/strong>sar\u00e0 completamente rielaborato. \u00c8 gi\u00e0 descritto concettualmente. Dai un'occhiata al ramo di Helm 3 e vedrai quanti eventi, hook e altre cose sono stati aggiunti, il che semplificher\u00e0 molto e, dall'altro lato, offrir\u00e0 un maggiore controllo sui processi di deploy e le reazioni a essi.<\/p>\n<p>Helm 3 sar\u00e0 pi\u00f9 semplice, pi\u00f9 sicuro e pi\u00f9 interessante non perch\u00e9 non ci piaccia Helm 2, ma perch\u00e9 Kubernetes sta diventando pi\u00f9 avanzato. Pertanto, Helm pu\u00f2 utilizzare i progressi di Kubernetes e creare ottimi gestori per Kubernetes.<\/p>\n<blockquote><p>Un'altra buona notizia \u00e8 che su <noindex><a rel=\"nofollow\" href=\"https:\/\/devopsconf.io\/moscow\/2019\">DevOpsConf<\/a><\/noindex> Alexander Khayerov parler\u00e0 di <noindex><a rel=\"nofollow\" href=\"https:\/\/devopsconf.io\/moscow\/2019\/abstracts\/5564\">possono essere sicuri i container?<\/a><\/noindex> Ricordiamo che la conferenza sull'integrazione dei processi di sviluppo, testing e operazioni si svolger\u00e0 a Mosca <strong>il 30 settembre e 1 ottobre<\/strong>. Fino al 20 agosto \u00e8 ancora possibile <noindex><a rel=\"nofollow\" href=\"https:\/\/conf.ontico.ru\/lectures\/propose\/?conference=dc2019-moscow\">inviare una relazione<\/a><\/noindex> e condividere la propria esperienza nella risoluzione di <noindex><a rel=\"nofollow\" href=\"https:\/\/devopsconf.io\/moscow\/2019\/articles\/917\">uno dei tanti<\/a><\/noindex> problemi dell'approccio DevOps.<\/p>\n<p>Segui i checkpoint della conferenza e le notizie sul <noindex><a rel=\"nofollow\" href=\"http:\/\/eepurl.com\/bN_0E1\">in una newsletter<\/a><\/noindex> e <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/DevOpsConfChannel\">canale Telegram<\/a><\/noindex>.<\/p><\/blockquote>\n<p>Fonte: <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.1.1 - 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\/it\/blog\/administrirovanie\/bezopasnost-helm\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\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\/it\/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\udd47Sicurezza Helm | ProHoster","description":"Il concetto di una delle pi\u00f9 popolari gestori di pacchetti per Kubernetes potrebbe essere rappresentato con un'emoji: la scatola \u00e8 Helm (\u00e8 ci\u00f2 che di meglio c'\u00e8 nell'ultima release di Emoji);","canonical_url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/bezopasnost-helm","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"it_IT","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\/it\/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\/it\/wp-json\/wp\/v2\/posts\/36918","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=36918"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/36918\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/27661"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=36918"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=36918"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=36918"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}