{"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>La questione centrale del racconto sul gestore di pacchetti pi\u00f9 popolare per Kubernetes potrebbe essere riassunta con delle emoji:<\/p>\n<ul>\n<li>una scatola \u2014 \u00e8 Helm (\u00e8 la rappresentazione pi\u00f9 adatta nella recente versione Emoji);<\/li>\n<li>un lucchetto \u2014 sicurezza;<\/li>\n<li>una figura umana \u2014 soluzione dei problemi.<\/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, la situazione sar\u00e0 un po' pi\u00f9 complessa 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 sapevate o l'avete dimenticato. Quali problemi risolve e dove si colloca 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 i componenti di Helm.<\/li>\n<li>La questione pi\u00f9 scottante \u2014 il futuro \u2014 la nuova versione di Helm 3.\u00a0<\/li>\n<\/ul>\n<p>\nTutto ci\u00f2 che \u00e8 trattato in questo articolo riguarda Helm 2. Questa versione \u00e8 attualmente in produzione e probabilmente \u00e8 quella che state utilizzando, ed \u00e8 qui che risiedono le 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=\"Riproduci 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>Sul relatore:<\/strong> Alexander 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 il contenuto <noindex><a rel=\"nofollow\" href=\"https:\/\/conf.python.ru\/2019\">alla Moscow Python Conf++<\/a><\/noindex> e si \u00e8 unito al 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 una posizione ibrida tra responsabile dello sviluppo e persona incaricata della delivery delle versioni finali. Si trova, quindi, nel bel mezzo dell'azione, dove si passa dalla creazione del prodotto alla sua operativit\u00e0.<\/p>\n<p>Chainstack \u00e8 una piccola startup in crescita, il cui obiettivo \u00e8 offrire ai clienti la possibilit\u00e0 di dimenticare l'infrastruttura e le complessit\u00e0 della gestione di applicazioni decentralizzate, con un team di sviluppo situato a Singapore. Non chiedere a Chainstack di vendere o comprare criptovalute, ma proponi di parlare di framework blockchain per le imprese e riceverai con piacere una risposta.<\/p>\n<h2>Helm<\/h2>\n<p>\nQuesto \u00e8 un gestore di pacchetti (chart) per Kubernetes. Il modo pi\u00f9 chiaro e universale per 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 manifest YAML e della scrittura di piccole utility.<\/p>\n<blockquote><p>Helm \u00e8 il migliore attualmente disponibile e popolare.<\/p><\/blockquote>\n<p>\nPerch\u00e9 Helm? Prima di tutto perch\u00e9 \u00e8 supportato da CNCF. Cloud Native \u00e8 una grande organizzazione che \u00e8 la societ\u00e0 madre dei progetti Kubernetes, etcd, Fluentd e altri.<\/p>\n<p>Un altro fatto importante \u00e8 che Helm \u00e8 un progetto molto popolare. Quando a gennaio 2019 ho iniziato a pensare di parlare di come rendere Helm sicuro, il progetto aveva mille stelle su GitHub. A maggio, sono diventate 12 mila.<\/p>\n<p>Molti sono interessati a Helm, quindi, anche se ancora non lo usate, le conoscenze sulla sua sicurezza saranno utili. <strong>La sicurezza \u00e8 importante.<\/strong><\/p>\n<p>Il team principale di Helm \u00e8 supportato da Microsoft Azure, e quindi \u00e8 un progetto abbastanza stabile rispetto a molti altri. L'uscita di Helm 3 Alpha 2 a met\u00e0 luglio dimostra che ci sono molte persone che lavorano al progetto, e che hanno la volont\u00e0 e le forze per 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 diverse problematiche fondamentali nella gestione delle applicazioni in Kubernetes.<\/p>\n<ul>\n<li>Imballaggio di un'applicazione. Anche un'app come 'Hello, World' su WordPress rappresenta gi\u00e0 diversi servizi, e si desidera imballarli insieme.<\/li>\n<li>Gestire la complessit\u00e0 che sorge nella gestione di queste applicazioni.<\/li>\n<li>Un ciclo di vita che non termina dopo l'installazione o il deployment dell'applicazione. Essa continua a vivere, deve essere aggiornata, e in questo Helm offre il giusto supporto con misure e politiche adeguate.<\/li>\n<\/ul>\n<p>\n<strong>Imballaggio<\/strong> \u00e8 strutturato in modo chiaro: ci sono metadati che si conformano perfettamente al funzionamento di un normale gestore di pacchetti per Linux, Windows o MacOS. In altre parole, gestisce repository, dipendenze da vari pacchetti, metainformazioni per le applicazioni, configurazioni, peculiarit\u00e0 di configurazione, indicizzazione delle informazioni, ecc. Tutto ci\u00f2 Helm permette 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 questo derivano i modelli, ma per non dover inventare un proprio metodo di creazione di modelli, puoi utilizzare ci\u00f2 che Helm offre di default.<\/p>\n<p><strong>Gestione del ciclo di vita dell'applicazione<\/strong> \u2014 a mio avviso, questa \u00e8 la questione pi\u00f9 interessante e irrisolta. \u00c8 il motivo per cui in passato sono approdato a Helm. Dovevamo tenere d'occhio il ciclo di vita dell'applicazione e volevamo trasferire il nostro CI\/CD e i cicli delle applicazioni in questa nuova paradigmaticit\u00e0.<\/p>\n<p>Helm consente:<\/p>\n<ul>\n<li>gestire i deployment, introducendo il concetto di configurazione e revisione;<\/li>\n<li>eseguire rollback con successo;<\/li>\n<li>utilizzare hook per eventi diversi;<\/li>\n<li>aggiungere controlli aggiuntivi alle applicazioni e reagire ai loro risultati.<\/li>\n<\/ul>\n<p>\nInoltre, <strong>Helm ha \"batterie\"<\/strong> \u2014 una vasta gamma di funzionalit\u00e0 deliziose che possono essere integrate come plugin, semplificando la propria vita. I plugin possono essere scritti autonomamente, sono abbastanza isolati e non richiedono un'architettura complessa. Se vuoi realizzare qualcosa, ti consiglio di farlo come un plugin e poi, eventualmente, integrarlo nell'upstream.<\/p>\n<p>Helm si basa su tre concetti fondamentali:<\/p>\n<ul>\n<li><strong>Chart Repo<\/strong> \u2014 una descrizione e un insieme di parametri possibili per il tuo manifesto.\u00a0<\/li>\n<li><strong>Configurazione<\/strong> cio\u00e8 i valori che saranno applicati (testo, valori numerici, ecc.).<\/li>\n<li><strong>Release<\/strong> riunisce i due componenti superiori, che insieme diventano un Release. Le release possono essere versionate, consentendo di gestire il ciclo di vita: piccolo al momento dell'installazione e grande al momento di upgrade, downgrade o rollback.<\/li>\n<\/ul>\n<p><\/p>\n<h2>Architettura di Helm<\/h2>\n<p>\nIl diagramma riflette concettualmente l'architettura ad 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 che riguarda Kubernetes. Pertanto, abbiamo bisogno di un cluster Kubernetes (rettangolo). Il componente kube-apiserver si trova sul master. Senza Helm abbiamo Kubeconfig. Helm porta un piccolo binario, se cos\u00ec si pu\u00f2 chiamare, l'utility Helm CLI, che si installa su computer, laptop, mainframe \u2013 su qualsiasi cosa.<\/p>\n<p>Ma questo non basta. Helm ha un componente server chiamato Tiller. Rappresenta gli interessi di Helm all'interno del cluster, \u00e8 un'applicazione all'interno del cluster Kubernetes come qualsiasi altra.<\/p>\n<p>Il prossimo componente \u00e8 il Chart Repo \u2013 un repository di chart. C'\u00e8 un repository ufficiale e pu\u00f2 esserci un repository privato dell'azienda o del progetto.<\/p>\n<h3>Interazione<\/h3>\n<p>\nConsideriamo come interagiscono i componenti dell'architettura quando vogliamo installare un'applicazione utilizzando Helm.<\/p>\n<ul>\n<li>Diciamo <code>Helm install<\/code>, ci rivolgiamo al repository (Chart Repo) e otteniamo il chart di Helm.<\/li>\n<\/ul>\n<p><\/p>\n<ul>\n<li>L'utility Helm (Helm CLI) interagisce con Kubeconfig per determinare 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 interagisce con il Kube-apiserver per eseguire azioni in Kubernetes e creare oggetti come servizi, pod, repliche, segreti, ecc.<\/li>\n<\/ul>\n<p>\nSuccessivamente compliceremo lo schema per identificare i vettori di attacco che possono compromettere l'intera architettura di Helm e poi cercheremo di difenderla.<\/p>\n<h3>Vettore di attacco<\/h3>\n<p>\nIl primo potenziale punto debole \u00e8 <strong>API privilegiata<\/strong>\u2014<strong>utente<\/strong>. All'interno dello schema, questo \u00e8 un hacker che ha ottenuto accesso amministrativo al Helm CLI.<\/p>\n<p><strong>Un utente API non privilegiato<\/strong> pu\u00f2 anche rappresentare un pericolo se si trova nelle vicinanze. Questo utente avr\u00e0 un contesto diverso, ad esempio, potrebbe essere fissato in un namespace del cluster nelle impostazioni di Kubeconfig.<\/p>\n<p>Un interessante vettore d'attacco potrebbe essere rappresentato da un processo situato all'interno del cluster, nelle vicinanze di Tiller, e in grado di interagire con esso. Questo potrebbe essere un server web o un microservizio che percepisce l'ambiente di rete del cluster.<\/p>\n<p>Un'alternativa esotica ma in crescita, l'attacco \u00e8 legato al Chart Repo. Un chart creato da un autore malintenzionato pu\u00f2 contenere risorse non sicure e tu lo eseguirai, accettandolo per buono. Oppure pu\u00f2 sostituire il chart che scarichi dal repository ufficiale, creando ad esempio risorse in forma di politiche ed escalare i propri privilegi.<\/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 provenienti da tutte e quattro le direzioni e di comprendere dove ci siano problematiche nell'architettura di Helm e dove, eventualmente, non ci siano.<\/p>\n<p>Amplifichiamo lo schema, aggiungendo pi\u00f9 elementi, ma mantenendo tutte le componenti di base.<\/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 \/>\nL'interfaccia a riga di comando di Helm 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>Servizio Tiller-deploy, che espone un certo servizio;<\/li>\n<li>Pod Tiller-deploy (nello schema in un'unica copia in una replica), sul quale lavora tutto il carico, che si rivolge al cluster.<\/li>\n<\/ul>\n<p>\nPer l'interazione vengono utilizzati diversi protocolli e schemi. Dal punto di vista della sicurezza, ci interessano maggiormente:<\/p>\n<ul>\n<li>Il meccanismo tramite il quale l'interfaccia a riga di comando di Helm si rivolge al chart repo: quale protocollo, se c'\u00e8 autenticazione e cosa si pu\u00f2 fare a riguardo.<\/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>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 \/>\nAffronteremo tutti questi argomenti in ordine.<\/p>\n<h2>RBAC<\/h2>\n<p><\/p>\n<blockquote><p>\u00c8 inutile parlare di qualsiasi sicurezza di Helm o di un altro servizio all'interno del cluster se RBAC non \u00e8 abilitato.<\/p><\/blockquote>\n<p>\nSembra che non sia la raccomandazione pi\u00f9 recente, ma sono sicuro che ancora molti non hanno abilitato RBAC nemmeno in produzione, poich\u00e9 \u00e8 un bel po' di lavoro e richiede molte configurazioni. Tuttavia, invito 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 sito di riferimento per RBAC. Qui \u00e8 raccolto un enorme numero di materiali interessanti che aiuteranno a configurare RBAC, mostreranno perch\u00e9 \u00e8 vantaggioso e come viverci in produzione.<\/p>\n<p>Cercher\u00f2 di spiegare come funziona Tiller e RBAC. Tiller opera all'interno del cluster con un determinato account di servizio. Di solito, se RBAC non \u00e8 configurato, sar\u00e0 un superutente. Nella configurazione di base, Tiller avr\u00e0 privilegi di amministratore. \u00c8 per questo che spesso si dice che Tiller \u00e8 un tunnel SSH per il tuo cluster. In effetti, \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 utilizzando <code>--service-account<\/code>. Questo permetter\u00e0 di utilizzare un utente con il set di diritti minimi necessari. Tuttavia, dovrai creare una \"ghirlanda\" di 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 prepararvi in anticipo un insieme di Role e RoleBinding per l'account di servizio da passare a Helm.<\/p>\n<p>Sorge la domanda: qual \u00e8 la differenza tra Role e ClusterRole? La differenza \u00e8 che ClusterRole agisce per tutti i namespace, diversamente da Role e RoleBinding, che funzionano solo per un singolo namespace specifico. Puoi impostare le politiche sia per l'intero cluster e tutti i namespace, sia in modo personalizzato per ciascun namespace singolarmente.<\/p>\n<p>Vale la pena notare che RBAC affronta un altro grande problema. Molti si lamentano del fatto che Helm, purtroppo, non supporta il multitenancy. Se pi\u00f9 team utilizzano il cluster e Helm, non \u00e8 possibile impostare politiche e delimitare i loro accessi all'interno di questo cluster, poich\u00e9 esiste un certo account di servizio sotto il quale opera Helm e che crea tutte le risorse nel cluster, il che \u00e8 spesso molto scomodo. \u00c8 realmente cos\u00ec \u2014 sia per il file binario stesso che per il processo. <strong>Helm Tiller non ha conoscenza del multitenancy<\/strong>.<\/p>\n<p>Tuttavia, c'\u00e8 un ottimo modo per eseguire Tiller nel cluster pi\u00f9 volte. Non ci sono problemi: Tiller pu\u00f2 essere avviato in ogni namespace. In questo modo, puoi sfruttare RBAC, Kubeconfig come contesto e limitare l'accesso a Helm specifico.<\/p>\n<p>Ecco come apparir\u00e0.<\/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 contesto per team diversi (due namespace): il team X per il team di sviluppo e il cluster admin. Il cluster admin ha un Tiller ampio, che si trova nel namespace Kube-system, con un service-account avanzato. Esiste anche un namespace separato per il team di sviluppo, che potr\u00e0 distribuire i propri servizi in questo namespace specifico.<\/p>\n<p>Questo \u00e8 un approccio funzionante; Tiller non \u00e8 cos\u00ec esigente da influenzare molto il tuo budget. \u00c8 una delle soluzioni rapide.<\/p>\n<blockquote><p>Sentiti libero di configurare Tiller separatamente e fornire Kubeconfig con il contesto per il team, per sviluppatori specifici o per l'ambiente: Dev, Staging, Production (\u00e8 improbabile che tutto sia nello stesso cluster, ma \u00e8 possibile farlo).<\/p><\/blockquote>\n<p>\nContinuando la nostra storia, ci allontaniamo da RBAC e parliamo di ConfigMaps.<\/p>\n<h3>ConfigMaps<\/h3>\n<p>\nHelm utilizza ConfigMaps come archivio dati. Quando abbiamo parlato dell'architettura, non c'era alcun database in cui venissero memorizzate le informazioni riguardanti rilasci, configurazioni, rollback, ecc. A questo scopo vengono utilizzati i ConfigMaps.<\/p>\n<p>Il principale problema con i ConfigMaps \u00e8 noto: non sono sicuri per definizione, al loro interno <strong>non \u00e8 possibile memorizzare dati sensibili<\/strong>. Si tratta di tutto ci\u00f2 che non dovrebbe superare il servizio, come le password. Ora il modo pi\u00f9 nativo per Helm \u00e8 passare dall'utilizzo dei ConfigMaps ai segreti.<\/p>\n<p>Questo \u00e8 molto semplice. Devi ridefinire la configurazione di Tiller e specificare che l'archivio saranno i segreti. Cos\u00ec, per ogni deployment, riceverai un segreto invece di un ConfigMap.<\/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 \/>\nPotresti obiettare che i segreti stessi sono un concetto strano e non sono molto sicuri. Tuttavia, \u00e8 importante comprendere che ci\u00f2 \u00e8 gestito dagli stessi sviluppatori di Kubernetes. A partire dalla versione 1.10, quindi gi\u00e0 da un po', esiste la possibilit\u00e0, almeno nei cloud pubblici, di collegare uno storage appropriato per la memorizzazione dei segreti. Attualmente, il team sta lavorando per migliorare ulteriormente l'accesso ai segreti, a singoli pod o ad altre entit\u00e0.<\/p>\n<blockquote><p>Storage Helm \u00e8 meglio tradurlo in segreti, e a loro volta \u00e8 necessario proteggerli in modo centralizzato.<\/p><\/blockquote>\n<p>\nCerto, rimarr\u00e0 <strong>un limite per l'archiviazione dei dati di 1 MB<\/strong>. Helm utilizza etcd come archivio distribuito per ConfigMap. L\u00ec hanno calcolato che \u00e8 un blocco di dati adatto per le replica e simili. Ci sono discussioni interessanti su questo 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 e possono diventare una fonte di \"Man in the middle\", specialmente se si utilizza una soluzione standard. Si parla principalmente di repository esposti tramite HTTP.<\/p>\n<blockquote><p>Sicuramente, \u00e8 necessario esporre il Helm Repo tramite HTTPS: \u00e8 la soluzione migliore e costata poco.<\/p><\/blockquote>\n<p>\nFai attenzione a <strong>meccanismo di firma dei chart<\/strong>. La tecnologia \u00e8 incredibilmente semplice. \u00c8 la stessa che usi su GitHub, una normale macchina PGP con chiavi pubbliche e private. Configura e sarai sicuro, avendo le chiavi giuste e firmando tutto quello che \u00e8 veramente il tuo chart.<\/p>\n<p>Inoltre, <strong>Il client Helm supporta TLS<\/strong> (non nel senso HTTP lato server, ma TLS reciproco). Puoi utilizzare le chiavi server e client per comunicare. Per essere onesto, non utilizzo questo meccanismo per una certa avversione verso i certificati reciproci. Fondamentalmente, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/helm\/chartmuseum\">chartmuseum<\/a><\/noindex> \u2014 il principale strumento per la registrazione di Helm Repo per Helm 2 \u2014 supporta anche l\u2019autenticazione di base. Puoi utilizzare l'autenticazione di base se \u00e8 pi\u00f9 comodo 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 bene ed \u00e8 abbastanza sicuro, poich\u00e9 tutte le meccaniche descritte vengono utilizzate.<\/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 abiliti HTTPS o TLS, utilizzi mTLS e colleghi 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 importante \u2014 proteggere Tiller, che si trova nel cluster e che, da un lato, \u00e8 un server, dall'altro, si rivolge ad altri componenti cercando di presentarsi come qualcuno.<\/p>\n<p>Come ho gi\u00e0 detto, Tiller \u00e8 un servizio che espone gRPC, il client Helm si connette tramite gRPC. Di default, naturalmente, TLS \u00e8 disattivato. Perch\u00e9 \u00e8 stato fatto questo \u00e8 una questione dibattuta; mi sembra che sia per semplificare la configurazione iniziale.<\/p>\n<blockquote><p>Per l'ambiente di produzione e persino per lo staging, consiglio di attivare TLS su gRPC.<\/p><\/blockquote>\n<p>\nA mio avviso, a differenza dell'mTLS per i chart, qui \u00e8 opportuno e si fa molto facilmente: generate l'infrastruttura PQI, create un certificato, avviate Tiller e fornite il certificato durante l'inizializzazione. Da quel momento in poi, potrete eseguire tutti i comandi Helm presentando 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 vi proteggerete da tutte le richieste a Tiller provenienti dall'esterno del cluster.<\/p>\n<p>Quindi abbiamo protetto il canale di connessione a Tiller, discusso di RBAC e regolato i diritti del Kubernetes apiserver, 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 possono ora essere tracciate in verde:<\/p>\n<ul>\n<li>per il Chart Repo utilizziamo TLS o mTLS e autenticazione di base;<\/li>\n<li>mTLS per Tiller, che \u00e8 esposto come servizio gRPC con TLS, utilizziamo certificati;<\/li>\n<li>nel cluster viene utilizzato un account di servizio speciale con Role e RoleBinding.\u00a0<\/li>\n<\/ul>\n<p>\nAbbiamo notevolmente messo in sicurezza il cluster, ma qualcuno di intelligente ha detto:<\/p>\n<blockquote><p>\u00abL'unica soluzione assolutamente sicura pu\u00f2 essere solo un computer spento, che si trova in una scatola di cemento e protetto da soldati\u00bb.<\/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 uno standard di sicurezza industriale di base.<\/p>\n<h2>Bonus<\/h2>\n<p>\nQuesta parte non \u00e8 direttamente correlata alla sicurezza, ma sar\u00e0 comunque utile. Mostrer\u00f2 alcune cose interessanti di cui pochi sono a conoscenza. Ad esempio, come cercare chart \u2014 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 benissimo quanto sia difficile passare da incubator a stable e quanto sia facile uscire da stable. Tuttavia, non \u00e8 il miglior strumento per cercare chart per Prometheus e tutto ci\u00f2 che ti piace, per una semplice ragione: non \u00e8 un portale dove cercare 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 trovare chart \u00e8 molto pi\u00f9 semplice. 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 fa parte del progetto Helm, e puoi contribuire anche alla sua interfaccia utente, se sei un frontend developer e vuoi semplicemente migliorare l'aspetto.<\/p>\n<p>Voglio anche richiamare la tua attenzione su <strong>integrazione Open Service Broker API<\/strong>. Sembra complesso e poco chiaro, ma risolve problematiche con cui tutti si trovano a fare i conti. Spiego con un esempio semplice.<\/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 avviare un'applicazione classica \u2014 WordPress. Di solito, per il pieno funzionamento \u00e8 necessaria un database. Ci sono molte soluzioni diverse, ad esempio, si pu\u00f2 avviare il proprio servizio stateful. Non \u00e8 molto comodo, ma molti lo fanno.<\/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 a un database, creare un flavor del database, fornire le credenziali e gestirle in qualche modo. Tutto questo viene di solito fatto manualmente da un amministratore di sistema o da uno sviluppatore. E non ci sono problemi quando le applicazioni sono poche. Quando sono molte, serve un aggregatore. Esiste un aggregatore del genere: \u00e8 il Service Broker. Permette di utilizzare un plugin speciale per il cluster del cloud pubblico e ordinare risorse dal fornitore attraverso il Broker, come se fosse un'API. A tal fine, si possono utilizzare gli strumenti nativi di Kubernetes.<\/p>\n<p>\u00c8 molto semplice. Si pu\u00f2 richiedere, ad esempio, un Managed MySQL in Azure con un tier di base (questo \u00e8 configurabile). Utilizzando l'API di Azure, il database verr\u00e0 creato e preparato per l'uso. Non dovr\u00e0 intervenire, poich\u00e9 ci\u00f2 \u00e8 gestito dal plugin. Ad esempio, OSBA (il plugin di Azure) restituir\u00e0 le credenziali al servizio e le passer\u00e0 a Helm. Potr\u00e0 utilizzare WordPress con MySQL cloud, senza doversi occupare delle basi dati gestite e senza preoccuparsi dei servizi stateful all'interno.<\/p>\n<blockquote><p>Si pu\u00f2 dire che Helm funge da collante, che da un lato permette di deployare i servizi, mentre dall'altro consente di consumare risorse dai fornitori di cloud.<\/p><\/blockquote>\n<p>\n\u00c8 possibile creare un proprio plugin e utilizzare tutta questa storia in locale. In tal modo, si avr\u00e0 semplicemente il proprio plugin per un fornitore di Cloud aziendale. Consiglio di provare questo approccio, specialmente se si opera su larga scala e si desidera implementare rapidamente lo sviluppo, il testing o l'intera infrastruttura per una funzionalit\u00e0. Questo semplificher\u00e0 la vita ai vostri team operations o DevOps.<\/p>\n<p>Un'altra scoperta che ho gi\u00e0 menzionato \u00e8 <strong>il plugin helm-gcs<\/strong>, che consente di utilizzare Google-buckets (archiviazione a 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 \/>\nBastano solo quattro comandi per iniziare a utilizzarlo:<\/p>\n<ol>\n<li>installare il plugin;<\/li>\n<li>inizializzarlo;<\/li>\n<li>definire il percorso del bucket, che si trova in gcp;<\/li>\n<li>pubblicare i chart nel modo standard.<\/li>\n<\/ol>\n<p>\nLa bellezza \u00e8 che verr\u00e0 utilizzato il modo nativo di gcp per l'autenticazione. \u00c8 possibile utilizzare un account di servizio, un account sviluppatore \u2014 qualsiasi cosa. \u00c8 molto conveniente e non comporta costi operativi. Se, come me, promuovete la filosofia opsless, questo sar\u00e0 molto utile, soprattutto per i team pi\u00f9 piccoli.<\/p>\n<h2>Alternative<\/h2>\n<p>\nHelm non \u00e8 l'unica soluzione per la gestione dei servizi. Ci sono molte domande a riguardo, probabilmente \u00e8 per questo che \u00e8 stata rilasciata cos\u00ec rapidamente la terza versione. Certo, esistono alternative.<\/p>\n<p>Queste possono includere soluzioni specializzate come Ksonnet o Metaparticle. Puoi usare i tuoi strumenti tradizionali di gestione dell'infrastruttura (Ansible, Terraform, Chef, ecc.) per gli stessi obiettivi 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>Operator Framework \u00e8 l'alternativa principale a Helm, a cui prestare attenzione.<\/p><\/blockquote>\n<p>\n\u00c8 pi\u00f9 nativa 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 e Scaffold. Questi semplificano notevolmente la vita, ad esempio, facilitano il ciclo di invio e avvio di Helm per il deploy di ambienti di test. Li definirei ampliatori di funzionalit\u00e0.<\/p>\n<p>Ecco un grafico chiaro su dove si trova 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 si trova il livello di controllo personale sugli eventi, mentre sull'asse delle ordinate si evidenzia il livello di nativit\u00e0 di Kubernetes. La versione 2 di Helm \u00e8 situata a met\u00e0 strada. La versione 3 non apporta un cambiamento radicale, ma ci sono miglioramenti sia nel controllo sia nel livello di nativit\u00e0. Le soluzioni di Ksonnet sono comunque inferiori rispetto a Helm 2. Tuttavia, vale la pena darle un'occhiata per conoscere le altre opzioni disponibili in questo mondo. Certo, il vostro gestore di configurazione sar\u00e0 sotto il vostro controllo, ma non \u00e8 affatto nativo per Kubernetes.<\/p>\n<p>L'Operator Framework \u00e8 totalmente nativo per Kubernetes e consente una gestione molto pi\u00f9 elegante e meticolosa (ma ricordiamo il livello di ingresso). \u00c8 pi\u00f9 adatto per applicazioni specializzate e per creare la loro gestione, piuttosto che per un'organizzazione di massa che impacchetta un gran numero di applicazioni tramite Helm.<\/p>\n<p>Gli extender migliorano leggermente il controllo, integrano il workflow o affinano gli angoli nei pipeline CI\/CD.<\/p>\n<h2>Il futuro di Helm<\/h2>\n<p>\nLa buona notizia \u00e8 che Helm 3 sta arrivando. \u00c8 gi\u00e0 stata rilasciata la versione alpha di Helm 3.0.0-alpha.2, da provare. \u00c8 abbastanza stabile, ma la funzionalit\u00e0 \u00e8 ancora limitata.<\/p>\n<p>Perch\u00e9 \u00e8 necessario Helm 3? In primo luogo, si tratta di una storia riguardante <strong>l'uscita di Tiller<\/strong>, come componente. Questo, come gi\u00e0 sapete, \u00e8 un enorme passo avanti, perch\u00e9 dal punto di vista della sicurezza architettonica tutto diventa pi\u00f9 semplice.<\/p>\n<p>Quando \u00e8 stato creato Helm 2, ai tempi di Kubernetes 1.8 o anche prima, molte idee erano immature. Ad esempio, il concetto di CRD \u00e8 ora attivamente implementato, e Helm <strong>utilizzer\u00e0 CRD<\/strong>, per memorizzare strutture. Sar\u00e0 possibile utilizzare solo il client e non gestire la parte server. Di conseguenza, sar\u00e0 possibile 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). Questa \u00e8 una grande iniziativa, e Helm \u00e8 particolarmente interessato a essa per pubblicare i propri chart. Si arriva al punto che, ad esempio, Docker Hub supporta molti standard OCI. Non voglio sbilanciarmi, ma \u00e8 possibile che i tradizionali provider di repository Docker inizino a offrire la possibilit\u00e0 di ospitare i propri chart Helm.<\/p>\n<p>Una storia controversa per me \u00e8 <strong>il supporto per Lua<\/strong>, come motore di templating per la scrittura di script. Non sono un grande fan di Lua, ma questa sar\u00e0 un'opzione completamente facoltativa. L'ho verificato tre volte: l'uso di Lua non sar\u00e0 obbligatorio. Pertanto, chi desidera utilizzare Lua, \u00e8 libero di farlo, mentre chi preferisce Go pu\u00f2 unirsi al nostro grande gruppo e utilizzare go-tmpl per questo.<\/p>\n<p>Finalmente, ci\u00f2 che mi mancava sicuramente era <strong>l'apparizione di uno schema e la validazione dei tipi di dati<\/strong>. Non ci saranno pi\u00f9 problemi con int o string, non sar\u00e0 necessario racchiudere zero tra virgolette. Comparir\u00e0 uno schema JSON che permetter\u00e0 di descrivere esplicitamente questo per i valori.<\/p>\n<p>Sar\u00e0 profondamente ristrutturato <strong>il modello event-driven<\/strong>. \u00c8 gi\u00e0 concettualmente descritto. Dai un'occhiata al ramo Helm 3 e vedrai quante pi\u00f9 eventi, hook e altro sono stati aggiunti, il che semplificher\u00e0 notevolmente e, dall'altra parte, aggiunger\u00e0 controllo sui processi di deployment e reazioni ad essi.<\/p>\n<p>Helm 3 sar\u00e0 pi\u00f9 semplice, sicuro e interessante non perch\u00e9 non ci piaccia Helm 2, ma perch\u00e9 Kubernetes sta diventando pi\u00f9 avanzato. Di conseguenza, Helm pu\u00f2 sfruttare i miglioramenti di Kubernetes e creare ottimi gestori per Kubernetes.<\/p>\n<blockquote><p>Un'altra buona notizia \u00e8 che nella <noindex><a rel=\"nofollow\" href=\"https:\/\/devopsconf.io\/moscow\/2019\">DevOpsConf<\/a><\/noindex> Alessandro Khaiyrov parler\u00e0 di <noindex><a rel=\"nofollow\" href=\"https:\/\/devopsconf.io\/moscow\/2019\/abstracts\/5564\">se i container possono essere sicuri?<\/a><\/noindex> Ricordiamo che la conferenza sull'integrazione dei processi di sviluppo, testing e operation si svolger\u00e0 a Mosca <strong>il 30 settembre e 1 ottobre<\/strong>. Fino al 20 agosto \u00e8 possibile ancora <noindex><a rel=\"nofollow\" href=\"https:\/\/conf.ontico.ru\/lectures\/propose\/?conference=dc2019-moscow\">presentare una relazione<\/a><\/noindex> e condividere la propria esperienza nella risoluzione <noindex><a rel=\"nofollow\" href=\"https:\/\/devopsconf.io\/moscow\/2019\/articles\/917\">di uno dei molti<\/a><\/noindex> problemi dell'approccio DevOps.<\/p>\n<p>Segui gli aggiornamenti sulla conferenza e le novit\u00e0 sul <noindex><a rel=\"nofollow\" href=\"http:\/\/eepurl.com\/bN_0E1\">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 4.9.10 - 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); \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.\" \/>\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) 4.9.10\" \/>\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); \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.\" \/>\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 di Helm | ProHoster","description":"Il contenuto dell'intervento sul gestore di pacchetti pi\u00f9 popolare per Kubernetes potrebbe essere riassunto con delle emoji: una scatola \u2014 \u00e8 Helm (questo \u00e8 il migliore nel recente rilascio di emoji); un lucchetto \u2014 sicurezza; una persona \u2014 risoluzione del problema. In realt\u00e0, sar\u00e0 un po' pi\u00f9 complicato e il discorso sar\u00e0 pieno di dettagli tecnici su come rendere Helm sicuro.","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); \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.","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"},"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}]}}