{"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\/de\/blog\/administrirovanie\/bezopasnost-helm","title":{"rendered":"Helm-Sicherheit","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Die Essenz der Geschichte \u00fcber den beliebtesten Paketmanager f\u00fcr Kubernetes k\u00f6nnte man mit Emojis darstellen:<\/p>\n<ul>\n<li>Schachtel \u2014 das ist Helm (das passendste Emoji in der letzten Version);<\/li>\n<li>Schloss \u2014 Sicherheit;<\/li>\n<li>M\u00e4nnchen \u2014 die L\u00f6sung des Problems.<\/li>\n<\/ul>\n<p>\n<img decoding=\"async\" alt=\"Helm-Sicherheit\" src=\"\/wp-content\/uploads\/2019\/08\/91099b372fd73bce94268563c3ee2c50.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIn Wirklichkeit wird alles jedoch etwas komplizierter, und die Geschichte ist reich an technischen Details dar\u00fcber, <b>wie man Helm sicher macht.<\/b>.<\/p>\n<ul>\n<li>Kurz gesagt, was ist Helm, falls Sie es nicht wussten oder vergessen haben? Welche Probleme l\u00f6st es und wo steht es im \u00d6kosystem?<\/li>\n<li>Lassen Sie uns die Architektur von Helm betrachten. Kein Gespr\u00e4ch \u00fcber Sicherheit und dar\u00fcber, wie man ein Werkzeug oder eine L\u00f6sung sicherer macht, kann ohne Verst\u00e4ndnis der Architektur des Komponenten erfolgen.<\/li>\n<li>Lassen Sie uns die Komponenten von Helm besprechen.<\/li>\n<li>Die dr\u00e4ngendste Frage - die Zukunft - die neue Version von Helm 3.\u00a0<\/li>\n<\/ul>\n<p>\nAlles in diesem Artikel bezieht sich auf Helm 2. Diese Version ist derzeit in Produktion und h\u00f6chstwahrscheinlich nutzen Sie \u0438\u043c\u0435\u043d\u043d\u043e diese, und genau darin gibt es Sicherheitsbedenken.<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=\"Video abspielen\" 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>\u00dcber den Sprecher:<\/strong> Alexander Khayev (<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/allexx\/\" class=\"user_link\">allexx<\/a><\/noindex>) ist seit 10 Jahren in der Entwicklung t\u00e4tig und hilft, Inhalte zu verbessern. <noindex><a rel=\"nofollow\" href=\"https:\/\/conf.python.ru\/2019\">Moscow Python Conf++<\/a><\/noindex> und ist dem Komitee beigetreten <noindex><a rel=\"nofollow\" href=\"https:\/\/events.linuxfoundation.org\/events\/helm-summit-2019\/\">Helm Summit<\/a><\/noindex>. Derzeit arbeitet er als Development Lead bei Chainstack \u2013 eine hybride Rolle zwischen der Leitung der Entwicklung und der Verantwortung f\u00fcr die Lieferung von Endversionen. Das bedeutet, er befindet sich dort, wo alles geschieht, von der Produktentwicklung bis zum Betrieb.<\/p>\n<p>Chainstack ist ein kleines, dynamisch wachsendes Start-up, dessen Ziel es ist, Kunden die Probleme mit der Infrastruktur und dem Betrieb von dezentralen Anwendungen abzunehmen. Das Entwicklungsteam hat seinen Sitz in Singapur. Bitten Sie Chainstack nicht, Kryptow\u00e4hrungen zu kaufen oder zu verkaufen, aber schlagen Sie ein Gespr\u00e4ch \u00fcber Enterprise-Blockchain-Frameworks vor, und Sie werden mit Freude empfangen.<\/p>\n<h2>Helm<\/h2>\n<p>\nDas ist ein Paketmanager (Charts) f\u00fcr Kubernetes. Der klarste und vielseitigste Weg, um Anwendungen in einen Kubernetes-Cluster zu bringen.<\/p>\n<p><img decoding=\"async\" alt=\"Helm-Sicherheit\" src=\"\/wp-content\/uploads\/2019\/08\/30c0fc1cc1c6ebde97c6e8ec1886ce9f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEs geht hierbei eindeutig um einen strukturierten und industriellen Ansatz, im Gegensatz zur Erstellung eigener YAML-Manifeste und der Entwicklung kleinerer Tools.<\/p>\n<blockquote><p>Helm ist das Beste, was derzeit verf\u00fcgbar und popul\u00e4r ist.<\/p><\/blockquote>\n<p>\nWarum Helm? Zun\u00e4chst einmal, weil es von der CNCF unterst\u00fctzt wird. Cloud Native ist eine gro\u00dfe Organisation, die die Muttergesellschaft f\u00fcr Projekte wie Kubernetes, etcd, Fluentd und andere ist.<\/p>\n<p>Ein weiterer wichtiger Fakt ist, dass Helm ein sehr beliebtes Projekt ist. Als ich im Januar 2019 begann, dar\u00fcber nachzudenken, wie man Helm sicher macht, hatte das Projekt auf GitHub etwa tausend Sterne. Bis Mai waren es bereits 12.000.<\/p>\n<p>Viele interessieren sich f\u00fcr Helm, daher werden Ihnen auch dann Kenntnisse \u00fcber seine Sicherheit n\u00fctzlich sein, wenn Sie es bisher noch nicht verwenden. <strong>Sicherheit ist wichtig.<\/strong><\/p>\n<p>Das Hauptteam von Helm wird von Microsoft Azure unterst\u00fctzt, weshalb es ein recht stabiles Projekt ist, im Gegensatz zu vielen anderen. Die Ver\u00f6ffentlichung von Helm 3 Alpha 2 Mitte Juli zeigt, dass viele Menschen an dem Projekt arbeiten und bereit sind, Helm weiterzuentwickeln und zu verbessern.<\/p>\n<p><img decoding=\"async\" alt=\"Helm-Sicherheit\" src=\"\/wp-content\/uploads\/2019\/08\/e53c8e64c3cf5eea3fbd9b0095b0f81e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHelm l\u00f6st mehrere grundlegende Probleme bei der Verwaltung von Anwendungen in Kubernetes.<\/p>\n<ul>\n<li>Das Packen von Anwendungen. Selbst eine Anwendung wie \"Hello, World\" auf WordPress besteht bereits aus mehreren Diensten, die zusammen verpackt werden wollen.<\/li>\n<li>Die Verwaltung der Komplexit\u00e4t, die bei der Verwaltung dieser Anwendungen entsteht.<\/li>\n<li>Der Lebenszyklus endet nicht nach der Installation oder Bereitstellung der Anwendung. Sie bleibt aktiv, erfordert regelm\u00e4\u00dfige Updates, und Helm unterst\u00fctzt dabei, indem es die richtigen Ma\u00dfnahmen und Richtlinien bereitstellt.<\/li>\n<\/ul>\n<p>\n<strong>Paketierung<\/strong> ist klar strukturiert: Es gibt Metadaten, die vollst\u00e4ndig mit der Funktionsweise eines typischen Paketmanagers f\u00fcr Linux, Windows oder MacOS \u00fcbereinstimmen. Das bedeutet Repository, Abh\u00e4ngigkeiten verschiedener Pakete, Metainformationen f\u00fcr Anwendungen, Konfigurationseinstellungen, Besonderheiten der Einrichtung, Informationsindizierung usw. All das erm\u00f6glicht Helm, um es f\u00fcr Anwendungen zu nutzen.<\/p>\n<p><strong>Komplexit\u00e4tsmanagement<\/strong>. Wenn Sie viele gleichartige Anwendungen haben, ist eine Parametrisierung notwendig. Daraus ergeben sich Templates, aber um nicht selbst einen Weg zur Erstellung von Templates zu entwickeln, kann man das nutzen, was Helm standardm\u00e4\u00dfig anbietet.<\/p>\n<p><strong>Management des Lebenszyklus von Anwendungen<\/strong> \u2014 das ist meiner Meinung nach die interessanteste und noch ungel\u00f6ste Frage. Genau aus diesem Grund habe ich mich damals f\u00fcr Helm entschieden. Wir mussten den Lebenszyklus der Anwendung im Blick behalten und wollten unsere CI\/CD- und Anwendungszyklen in dieses Paradigma \u00fcberf\u00fchren.<\/p>\n<p>Helm erm\u00f6glicht:<\/p>\n<ul>\n<li>Verwalten von Deployments, Einf\u00fchrung von Konfiguration und Revision;<\/li>\n<li>Rollback erfolgreich durchf\u00fchren;<\/li>\n<li>Hooks f\u00fcr verschiedene Ereignisse verwenden;<\/li>\n<li>Zus\u00e4tzliche Pr\u00fcfungen von Anwendungen hinzuf\u00fcgen und auf deren Ergebnisse reagieren.<\/li>\n<\/ul>\n<p>\nDar\u00fcber hinaus <strong>verf\u00fcgt Helm \u00fcber \u201eBatterien\u201c<\/strong> \u2013 eine enorme Anzahl n\u00fctzlicher Dinge, die man als Plugins einf\u00fcgen kann, um das Leben zu erleichtern. Plugins k\u00f6nnen selbst geschrieben werden, sie sind recht isoliert und erfordern keine strenge Architektur. Wenn Sie etwas umsetzen m\u00f6chten, empfehle ich, dies als Plugin zu entwickeln und dann m\u00f6glicherweise in das Upstream zu integrieren.<\/p>\n<p>Helm basiert auf drei grundlegenden Konzepten:<\/p>\n<ul>\n<li><strong>Chart-Repo<\/strong> \u2013 eine Beschreibung und eine Reihe von Parametrierungen, die f\u00fcr Ihr Manifest m\u00f6glich sind.\u00a0<\/li>\n<li><strong>Konfiguration<\/strong> \u2013 also die Werte, die angewendet werden, (Text, numerische Werte usw.).<\/li>\n<li><strong>Release<\/strong> vereint die beiden oberen Komponenten, und zusammen ergeben sie ein Release. Releases k\u00f6nnen versioniert werden, wodurch der Lebenszyklus organisiert wird: klein zum Zeitpunkt der Installation und gro\u00df zum Zeitpunkt des Upgrades, Downgrades oder Rollbacks.<\/li>\n<\/ul>\n<p><\/p>\n<h2>Architektur von Helm<\/h2>\n<p>\nDas Diagramm spiegelt konzeptionell die hochrangige Architektur von Helm wider.<\/p>\n<p><img decoding=\"async\" alt=\"Helm-Sicherheit\" src=\"\/wp-content\/uploads\/2019\/08\/c5cf54890682a3d6ca7a45021b5006a1.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIch erinnere daran, dass Helm etwas ist, das mit Kubernetes zu tun hat. Daher ben\u00f6tigen wir einen Kubernetes-Cluster (Rechteck). Die Komponente kube-apiserver befindet sich auf dem Master. Ohne Helm haben wir Kubeconfig. Helm bringt ein kleines bin\u00e4res Tool mit, das man Helm CLI nennt und auf jedem Ger\u00e4t installiert werden kann \u2014 auf Computern, Laptops, Mainframes \u2013 auf alles.<\/p>\n<p>Aber das ist nicht genug. Helm hat eine serverseitige Komponente namens Tiller. Diese repr\u00e4sentiert Helm innerhalb des Clusters; es ist eine Anwendung innerhalb des Kubernetes-Clusters, wie jede andere auch.<\/p>\n<p>Die n\u00e4chste Komponente ist das Chart Repo \u2014 ein Repository mit Charts. Es gibt ein offizielles Repository, und m\u00f6glicherweise auch ein privates Repository des Unternehmens oder Projekts.<\/p>\n<h3>Interaktion<\/h3>\n<p>\nLassen Sie uns betrachten, wie die Komponenten der Architektur interagieren, wenn wir eine Anwendung mit Helm installieren m\u00f6chten.<\/p>\n<ul>\n<li>Wir geben <code>Helm install<\/code>, kontaktieren das Repository (Chart Repo) und erhalten das Helm-Chart.<\/li>\n<\/ul>\n<p><\/p>\n<ul>\n<li>Das Helm-Tool (Helm CLI) interagiert mit Kubeconfig, um herauszufinden, mit welchem Cluster es kommunizieren soll.\u00a0<\/li>\n<li>Sobald diese Informationen vorliegen, wendet sich das Tool an Tiller, das sich bereits als Anwendung in unserem Cluster befindet.\u00a0<\/li>\n<li>Tiller kommuniziert mit dem Kube-apiserver, um Aktionen in Kubernetes durchzuf\u00fchren, bestimmte Objekte (Dienste, Pods, Replikate, Secrets usw.) zu erstellen.<\/li>\n<\/ul>\n<p>\nAls n\u00e4chstes werden wir das Schema komplexer gestalten, um die Angriffsvektoren zu erkennen, denen die gesamte Helm-Architektur ausgesetzt sein k\u00f6nnte. Danach werden wir versuchen, sie zu sch\u00fctzen.<\/p>\n<h3>Angriffsvektor<\/h3>\n<p>\nDer erste potenziell schwache Punkt ist <strong>privilegierte API<\/strong>&#8212;<strong>Benutzer<\/strong>. Im Schema ist dies ein Hacker, der administrativen Zugriff auf das Helm CLI erhalten hat.<\/p>\n<p><strong>Ein unprivilegierter API-Benutzer<\/strong> kann ebenfalls eine Bedrohung darstellen, wenn er sich in der N\u00e4he befindet. Ein solcher Benutzer hat einen anderen Kontext, zum Beispiel k\u00f6nnte er in einem bestimmten Namespace des Clusters in den Kubeconfig-Einstellungen verankert sein.<\/p>\n<p>Der interessanteste Angriffsvektor k\u00f6nnte ein Prozess sein, der sich innerhalb des Clusters in der N\u00e4he von Tiller befindet und auf ihn zugreifen kann. Das k\u00f6nnte ein Webserver oder ein Mikroservice sein, der die Netzwerkumgebung des Clusters sieht.<\/p>\n<p>Eine exotische, aber zunehmend beliebte Angriffsart ist mit dem Chart Repo verbunden. Ein Chart, das von einem unehrlichen Autor erstellt wurde, kann unsichere Ressourcen enthalten, und Sie k\u00f6nnten es gutgl\u00e4ubig ausf\u00fchren. Alternativ kann er das Chart, das Sie aus dem offiziellen Repository herunterladen, manipulieren und beispielsweise Ressourcen in Form von Richtlinien erstellen, um sich selbst Zugriff zu verschaffen.<\/p>\n<p><img decoding=\"async\" alt=\"Helm-Sicherheit\" src=\"\/wp-content\/uploads\/2019\/08\/2828046feb9ba8413a1b0e8741b4c354.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLassen Sie uns versuchen, uns gegen Angriffe von all diesen vier Seiten zu verteidigen und herauszufinden, wo die Probleme in der Architektur von Helm liegen und wo m\u00f6glicherweise keine bestehen.<\/p>\n<p>Wir vergr\u00f6\u00dfern das Schema, f\u00fcgen mehr Elemente hinzu, behalten aber alle grundlegenden Bestandteile bei.<\/p>\n<p><img decoding=\"async\" alt=\"Helm-Sicherheit\" src=\"\/wp-content\/uploads\/2019\/08\/4110898e79619b8546408c668c48da0d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDie Helm-CLI kommuniziert mit dem Chart Repo, interagiert mit Kubeconfig, und die Arbeit wird an den Cluster im Tiller-Komponenten \u00fcbergeben.<\/p>\n<p>Tiller wird durch zwei Objekte repr\u00e4sentiert:<\/p>\n<ul>\n<li>Tiller-deploy svc, das einen Dienst bereitstellt;<\/li>\n<li>Tiller-deploy pod (in dem Schema in einem Exemplar in einer Replikation), auf dem die gesamte Last ausgef\u00fchrt wird und der mit dem Cluster kommuniziert.<\/li>\n<\/ul>\n<p>\nF\u00fcr die Interaktion werden verschiedene Protokolle und Schemata verwendet. Aus Sicherheitsgr\u00fcnden sind uns folgende besonders wichtig:<\/p>\n<ul>\n<li>Der Mechanismus, mit dem die Helm-CLI auf das Chart Repo zugreift: welches Protokoll verwendet wird, ob eine Authentifizierung stattfindet und was damit gemacht werden kann.<\/li>\n<li>Das Protokoll, \u00fcber das das Helm CLI mit kubectl mit Tiller kommuniziert. Dies ist ein RPC-Server, der innerhalb des Clusters installiert ist.<\/li>\n<li>Tiller selbst ist f\u00fcr die Microservices, die sich im Cluster befinden, zug\u00e4nglich und interagiert mit dem Kube-apiserver.<\/li>\n<\/ul>\n<p>\n<img decoding=\"async\" alt=\"Helm-Sicherheit\" src=\"\/wp-content\/uploads\/2019\/08\/19e7e085567f3bbb49746e6402926bd6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLassen Sie uns all diese Themen der Reihe nach besprechen.<\/p>\n<h2>RBAC<\/h2>\n<p><\/p>\n<blockquote><p>Es ist sinnlos, \u00fcber die Sicherheit von Helm oder anderen Diensten innerhalb des Clusters zu sprechen, wenn RBAC nicht aktiviert ist.<\/p><\/blockquote>\n<p>\nEs scheint zwar nicht die aktuellste Empfehlung zu sein, aber ich bin mir sicher, dass viele RBAC selbst in der Produktion noch nicht aktiviert haben, weil es viel Aufwand erfordert und viele Einstellungen notwendig sind. Dennoch m\u00f6chte ich Sie dazu anregen, dies zu tun.<\/p>\n<p><img decoding=\"async\" alt=\"Helm-Sicherheit\" 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 die Website f\u00fcr RBAC. Dort finden Sie eine Vielzahl interessanter Materialien, die Ihnen helfen, RBAC einzurichten, erkl\u00e4ren, warum es gut ist und wie man es im Produktionsumfeld nutzen kann.<\/p>\n<p>Ich m\u00f6chte erkl\u00e4ren, wie Tiller und RBAC funktionieren. Tiller operiert innerhalb des Clusters unter einem bestimmten Dienstkonto. In der Regel, wenn RBAC nicht konfiguriert ist, handelt es sich um einen Superuser. In der Standardkonfiguration wird Tiller als Administrator fungieren. Deshalb sagt man oft, dass Tiller ein SSH-Tunnel zu Ihrem Cluster ist. Tats\u00e4chlich ist das der Fall, und daher kann ein separates, spezialisiertes Dienstkonto anstelle des Standarddienstkontos in obiger Abbildung verwendet werden.<\/p>\n<p>Wenn Sie Helm initialisieren und es zum ersten Mal auf dem Server installieren, k\u00f6nnen Sie ein Dienstkonto mit <code>--service-account<\/code>angeben. Dies erm\u00f6glicht die Verwendung eines Benutzers mit den minimal notwendigen Rechten. Sie m\u00fcssen jedoch eine solche 'Kette' erstellen: Role und RoleBinding.<\/p>\n<p><img decoding=\"async\" alt=\"Helm-Sicherheit\" src=\"\/wp-content\/uploads\/2019\/08\/ec805cde756495cfd5c480ac40739c43.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLeider erledigt Helm das nicht f\u00fcr Sie. Sie oder Ihr Kubernetes-Cluster-Administrator m\u00fcssen im Vorfeld ein Set aus Role und RoleBinding f\u00fcr das Dienstkonto vorbereiten, um es an Helm weiterzugeben.<\/p>\n<p>Die Frage stellt sich, was der Unterschied zwischen Role und ClusterRole ist? Der Unterschied liegt darin, dass ClusterRole f\u00fcr alle Namespaces gilt, im Gegensatz zu den \u00fcblichen Role und RoleBinding, die nur f\u00fcr einen bestimmten Namespace funktionieren. Es ist m\u00f6glich, Richtlinien sowohl f\u00fcr den gesamten Cluster und alle Namespaces als auch individuell f\u00fcr jeden Namespace festzulegen.<\/p>\n<p>Es ist erw\u00e4hnenswert, dass RBAC ein weiteres gro\u00dfes Problem l\u00f6st. Viele beschweren sich, dass Helm leider keine Multitenancy unterst\u00fctzt. Wenn mehrere Teams einen Cluster nutzen und Helm einsetzen, ist es grunds\u00e4tzlich nicht m\u00f6glich, Richtlinien einzurichten und deren Zugriff innerhalb dieses Clusters zu differenzieren, da es einen bestimmten Service-Account gibt, unter dem Helm l\u00e4uft, und dieser erstellt alle Ressourcen im Cluster unter diesem Account, was oft sehr unpraktisch ist. Das ist tats\u00e4chlich der Fall \u2013 sowohl die Bin\u00e4rdatei als auch der Prozess, <strong>Helm Tiller hat kein Konzept f\u00fcr Multitenancy.<\/strong>.<\/p>\n<p>Es gibt jedoch einen gro\u00dfartigen Weg, um Tiller in einem Cluster mehrfach zu starten. Damit gibt es keine Probleme, Tiller kann in jedem Namespace gestartet werden. So k\u00f6nnen Sie RBAC und Kubeconfig als Kontext nutzen und den Zugriff auf einen speziellen Helm einschr\u00e4nken.<\/p>\n<p>So k\u00f6nnte es aussehen.<\/p>\n<p><img decoding=\"async\" alt=\"Helm-Sicherheit\" src=\"\/wp-content\/uploads\/2019\/08\/eae922c7b5e1422fb51667364ed79e0a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nZum Beispiel gibt es zwei Kubeconfigs mit Kontexten f\u00fcr verschiedene Teams (zwei Namespaces): Das X-Team f\u00fcr das Entwicklerteam und den Admin-Cluster. Der Admin-Cluster hat sein eigenes erweitertes Tiller im Kube-system Namespace, entsprechend mit einem erweiterten Service-Account. Und einen separaten Namespace f\u00fcr das Entwicklerteam, das seine Dienste im speziellen Namespace bereitstellen kann.<\/p>\n<p>Das ist ein praktikabler Ansatz, Tiller ist nicht so ressourcenintensiv, als dass es Ihr Budget erheblich belasten k\u00f6nnte. Es ist eine der schnellen L\u00f6sungen.<\/p>\n<blockquote><p>Scheuen Sie sich nicht, Tiller separat zu konfigurieren und Kubeconfig mit Kontext f\u00fcr das Team, den spezifischen Entwickler oder f\u00fcr Umgebungen wie: Dev, Staging, Production bereitzustellen (es ist unwahrscheinlich, dass alles in einem Cluster ist, aber es ist m\u00f6glich).<\/p><\/blockquote>\n<p>\nLassen Sie uns, um unsere Geschichte fortzusetzen, von RBAC zur ConfigMap wechseln.<\/p>\n<h3>ConfigMaps<\/h3>\n<p>\nHelm verwendet ConfigMaps als Datenrepository. Als wir \u00fcber die Architektur sprachen, gab es keine Datenbank, in der Informationen zu Releases, Konfigurationen, Rollbacks usw. gespeichert waren. Hier kommen ConfigMaps ins Spiel.<\/p>\n<p>Ein zentrales Problem mit ConfigMaps ist bekannt \u2013 sie sind grunds\u00e4tzlich unsicher, da sie <strong>keine sensiblen Daten speichern k\u00f6nnen.<\/strong>Es geht um alles, was nicht \u00fcber den Dienst hinausgehen sollte, zum Beispiel Passw\u00f6rter. Der derzeit nativste Ansatz f\u00fcr Helm besteht darin, von der Verwendung von ConfigMaps auf Secrets umzusteigen.<\/p>\n<p>Das ist ganz einfach. Sie \u00fcberschreiben die Einstellung von Tiller und geben an, dass das Repository Secrets sein sollen. Dann erhalten Sie f\u00fcr jede Bereitstellung kein ConfigMap, sondern ein Secret.<\/p>\n<p><img decoding=\"async\" alt=\"Helm-Sicherheit\" src=\"\/wp-content\/uploads\/2019\/08\/7fd12bfbed5c6c8111a5126c2ab9f853.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSie k\u00f6nnten einwenden, dass Secrets an sich ein merkw\u00fcrdiges Konzept sind und nicht besonders sicher sind. Dennoch ist zu beachten, dass dies von den Entwicklern von Kubernetes selbst angegangen wird. Seit Version 1.10, also schon seit einiger Zeit, gibt es die M\u00f6glichkeit, zumindest in \u00f6ffentlichen Clouds den richtigen Speicher f\u00fcr die Verwaltung von Secrets zu integrieren. Derzeit arbeitet das Team daran, den Zugriff auf Secrets f\u00fcr separate Pods oder andere Entit\u00e4ten weiter zu verbessern.<\/p>\n<blockquote><p>Storage Helm sollte besser auf Geheimnisse \u00fcbertragen werden, und die sollten zentral gesichert werden.<\/p><\/blockquote>\n<p>\nNat\u00fcrlich bleibt <strong>eine Speichergrenze von 1 MB<\/strong>. Helm verwendet hier etcd als verteiltes Speicher f\u00fcr ConfigMaps. Dabei wurde festgestellt, dass dies ein geeigneter Datenchunk f\u00fcr Replikationen usw. ist. Dazu gibt es eine interessante Diskussion auf Reddit, ich empfehle, diese am Wochenende zu finden oder eine Zusammenfassung zu lesen. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/helm\/helm\/issues\/1413\">hier<\/a><\/noindex>.<\/p>\n<h3>Chart-Repos<\/h3>\n<p>\nCharts sind besonders anf\u00e4llig f\u00fcr soziale Angriffe und k\u00f6nnen eine Quelle f\u00fcr \"Man in the Middle\"-Angriffe sein, insbesondere wenn Standardl\u00f6sungen verwendet werden. Dies betrifft vor allem Repositories, die \u00fcber HTTP zug\u00e4nglich sind.<\/p>\n<blockquote><p>Definitiv sollte das Helm-Repo \u00fcber HTTPS bereitgestellt werden \u2013 das ist die beste Option und kosteng\u00fcnstig.<\/p><\/blockquote>\n<p>\nBitte beachten Sie <strong>Mechanismus zum Signieren von Charts<\/strong>. Die Technologie ist so einfach wie m\u00f6glich. Es funktioniert wie bei GitHub, eine gew\u00f6hnliche PGP-Maschine mit \u00f6ffentlichen und privaten Schl\u00fcsseln. Richten Sie es ein, und Sie werden sicher sein, Ihre Schl\u00fcssel zu haben und alles zu signieren, damit es sich tats\u00e4chlich um Ihr Chart handelt.<\/p>\n<p>Dar\u00fcber hinaus, <strong>Der Helm-Client unterst\u00fctzt TLS<\/strong> (nicht im Sinne von HTTP vom Server, sondern gegenseitiges TLS). Sie k\u00f6nnen Server- und Client-Schl\u00fcssel verwenden, um zu kommunizieren. Ehrlich gesagt, ich benutze einen solchen Mechanismus nicht, da ich gegenseitige Zertifikate nicht mag. Grunds\u00e4tzlich, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/helm\/chartmuseum\">chartmuseum<\/a><\/noindex> \u2014 das Hauptwerkzeug zur Bereitstellung von Helm-Repos f\u00fcr Helm 2 \u2014 unterst\u00fctzt auch Basic Auth. Basic Auth kann verwendet werden, wenn dies bequemer und sicherer ist.<\/p>\n<p>Es gibt auch ein Plugin <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/hayorov\/helm-gcs\">helm-gcs<\/a><\/noindex>, das es erm\u00f6glicht, Chart-Repos in Google Cloud Storage zu hosten. Das ist ziemlich praktisch, funktioniert hervorragend und ist ausreichend sicher, da alle beschriebenen Mechanismen effizient genutzt werden.<\/p>\n<p><img decoding=\"async\" alt=\"Helm-Sicherheit\" src=\"\/wp-content\/uploads\/2019\/08\/6a72bfd96c7eb0e2fdd7bcbf128e6433.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nWenn Sie HTTPS oder TLS aktivieren, mTLS verwenden und Basic Auth hinzuf\u00fcgen, um das Risiko weiter zu minimieren, erhalten Sie einen sicheren Kommunikationskanal zwischen Helm CLI und Chart Repo.<\/p>\n<h3>gRPC API<\/h3>\n<p>\nDer n\u00e4chste Schritt ist sehr verantwortungsvoll \u2014 Tiller, der sich im Cluster befindet, abzusichern; er ist einerseits der Server, andererseits spricht er selbst mit anderen Komponenten und versucht, sich als jemand anderes auszugeben.<\/p>\n<p>Wie bereits erw\u00e4hnt, ist Tiller ein Service, der gRPC bereitstellt, und der Helm-Client kommuniziert \u00fcber gRPC damit. Standardm\u00e4\u00dfig ist nat\u00fcrlich TLS deaktiviert. Warum das so ist, bleibt diskutabel; ich denke, es dient der vereinfachten Einrichtung zu Beginn.<\/p>\n<blockquote><p>F\u00fcr Produktionsumgebungen und sogar f\u00fcr Staging empfehle ich, TLS f\u00fcr gRPC zu aktivieren.<\/p><\/blockquote>\n<p>\nMeiner Meinung nach ist es im Gegensatz zu mTLS f\u00fcr Charts hier durchaus sinnvoll und sehr einfach zu implementieren \u2013 Sie generieren die PQI-Infrastruktur, erstellen ein Zertifikat, starten Tiller und \u00fcbergeben das Zertifikat w\u00e4hrend der Initialisierung. Danach k\u00f6nnen Sie alle Helm-Befehle mit dem generierten Zertifikat und dem privaten Schl\u00fcssel ausf\u00fchren.<\/p>\n<p><img decoding=\"async\" alt=\"Helm-Sicherheit\" src=\"\/wp-content\/uploads\/2019\/08\/ed55b9a465ed1278b272c52c90b2b345.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSo sch\u00fctzen Sie sich vor allen Anfragen an Tiller von au\u00dferhalb des Clusters.<\/p>\n<p>Wir haben also den Verbindungskanal zu Tiller gesichert, bereits RBAC besprochen und die Rechte des Kubernetes apiservers angepasst sowie die Dom\u00e4ne, mit der er interagieren kann, reduziert.<\/p>\n<h2>Gesch\u00fctzter Helm<\/h2>\n<p>\nSchauen wir uns das finale Diagramm an. Es ist dieselbe Architektur mit denselben Pfeilen.<\/p>\n<p><img decoding=\"async\" alt=\"Helm-Sicherheit\" src=\"\/wp-content\/uploads\/2019\/08\/6672e254ad93b917f57794e1619a572e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAlle Verbindungen k\u00f6nnen nun mutig gr\u00fcn dargestellt werden:<\/p>\n<ul>\n<li>f\u00fcr das Chart-Repository verwenden wir TLS oder mTLS und Basic Auth;<\/li>\n<li>mTLS f\u00fcr Tiller, das als gRPC-Service mit TLS bereitgestellt wird, wobei wir Zertifikate verwenden;<\/li>\n<li>Im Cluster wird ein spezieller Service-Account mit Rolle und Rollebindung verwendet.\u00a0<\/li>\n<\/ul>\n<p>\nWir haben den Cluster deutlich gesichert, aber jemand hat einmal gesagt:<\/p>\n<blockquote><p>\u201eEs gibt nur eine wirklich sichere L\u00f6sung \u2013 ein ausgeschalteter Computer, der in einer Betonkiste steht und von Soldaten bewacht wird.\u201c<\/p><\/blockquote>\n<p>\nEs gibt verschiedene M\u00f6glichkeiten, Daten zu manipulieren und neue Angriffsvektoren zu finden. Ich bin jedoch zuversichtlich, dass diese Empfehlungen es erm\u00f6glichen, einen grundlegenden Industrie-Sicherheitsstandard zu realisieren.<\/p>\n<h2>Bonus<\/h2>\n<p>\nDieser Abschnitt bezieht sich nicht direkt auf die Sicherheit, wird aber trotzdem n\u00fctzlich sein. Ich zeige einige interessante Dinge, die nur wenigen bekannt sind. Beispielsweise, wie man Charts sucht \u2013 offizielle und inoffizielle.<\/p>\n<p>Im Repository <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/helm\/charts\">github.com\/helm\/charts<\/a><\/noindex> gibt es derzeit etwa 300 Charts und zwei Streams: stable und incubator. Wer beitr\u00e4gt, wei\u00df, wie schwer es ist, von incubator nach stable zu kommen und wie einfach man von stable fallen kann. Allerdings ist es nicht das beste Werkzeug, um Charts f\u00fcr Prometheus und alles andere, was Ihnen gef\u00e4llt, zu suchen, aus einem einfachen Grund \u2013 es ist kein Portal, wo es bequem ist, nach Paketen zu suchen.<\/p>\n<p>Aber es gibt einen Service <noindex><a rel=\"nofollow\" href=\"https:\/\/hub.helm.sh\/\">hub.helm.sh<\/a><\/noindex>, mit dem das Finden von Charts viel einfacher ist. Das Wichtigste ist, dass es viel mehr externe Repositories gibt und fast 800 Charts verf\u00fcgbar sind. Au\u00dferdem k\u00f6nnen Sie Ihr eigenes Repository anschlie\u00dfen, wenn Sie aus irgendeinem Grund Ihre Charts nicht in stable senden m\u00f6chten.<\/p>\n<p>Probieren Sie hub.helm.sh aus und lassen Sie uns gemeinsam daran arbeiten. Dieser Dienst steht unter dem Helm-Projekt und Sie k\u00f6nnen sogar dessen UI mitgestalten, wenn Sie ein Frontend-Entwickler sind und einfach das Erscheinungsbild verbessern m\u00f6chten.<\/p>\n<p>Ich m\u00f6chte auch Ihre Aufmerksamkeit auf <strong>die Open Service Broker API-Integration<\/strong>. Das klingt kompliziert und unverst\u00e4ndlich, l\u00f6st aber Probleme, mit denen alle konfrontiert sind. Lassen Sie mich das an einem einfachen Beispiel erkl\u00e4ren.<\/p>\n<p><img decoding=\"async\" alt=\"Helm-Sicherheit\" src=\"\/wp-content\/uploads\/2019\/08\/3aeb7e0781e50a79b518f1056873f73a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEs gibt ein Kubernetes-Cluster, in dem wir eine klassische Anwendung \u2013 WordPress \u2013 ausf\u00fchren m\u00f6chten. In der Regel wird eine Datenbank f\u00fcr die volle Funktionalit\u00e4t ben\u00f6tigt. Es gibt viele verschiedene L\u00f6sungen, zum Beispiel kann man seinen eigenen Stateful-Service starten. Das ist nicht sehr bequem, aber viele machen das so.<\/p>\n<p>Andere, wie wir bei Chainstack, verwenden verwaltete Datenbanken, zum Beispiel MySQL oder PostgreSQL, f\u00fcr Server. Daher befindet sich unsere DB irgendwo in der Cloud.<\/p>\n<p>Es gibt jedoch ein Problem: Wir m\u00fcssen unseren Service mit der Datenbank verbinden, einen Datenbank-Flavor erstellen, die Zugangsdaten \u00fcbermitteln und diese verwalten. All dies wird normalerweise manuell von einem Systemadministrator oder einem Entwickler erledigt. Das ist kein Problem, wenn es nur wenige Anwendungen gibt. Bei vielen Anwendungen jedoch ben\u00f6tigt man einen Kombi. Solch ein Kombi ist der Service Broker. Er erm\u00f6glicht die Nutzung eines speziellen Plugins f\u00fcr das \u00f6ffentliche Cloud-Cluster und das Anfordern von Ressourcen beim Anbieter \u00fcber den Broker, als w\u00e4re es eine API. Daf\u00fcr kann die nativen Kubernetes-Tools verwendet werden.<\/p>\n<p>Es ist ganz einfach. Man kann zum Beispiel Managed MySQL in Azure mit dem Basis-Tier anfordern (das ist konfigurierbar). Mit der Azure-API wird die Datenbank erstellt und f\u00fcr die Verwendung vorbereitet. Sie m\u00fcssen sich dabei nicht einmischen; daf\u00fcr ist das Plugin zust\u00e4ndig. Zum Beispiel wird OSBA (das Azure-Plugin) die Zugangsdaten an den Service zur\u00fcckgeben und diese an Helm \u00fcbermitteln. Sie k\u00f6nnen WordPress mit cloudbasiertem MySQL verwenden, ohne sich um verwaltete Datenbanken k\u00fcmmern zu m\u00fcssen und sich keine Sorgen um Stateful-Services im Inneren zu machen.<\/p>\n<blockquote><p>Man kann sagen, dass Helm der Kleber ist, der auf der einen Seite das Deployment von Services erm\u00f6glicht und auf der anderen Seite Ressourcen von Cloud-Anbietern konsumiert.<\/p><\/blockquote>\n<p>\nSie k\u00f6nnen ein eigenes Plugin erstellen und all diese Funktionen lokal nutzen. So haben Sie einfach Ihr eigenes Plugin f\u00fcr einen Unternehmens-Cloud-Anbieter. Ich empfehle, diesen Ansatz auszuprobieren, besonders wenn Sie im gro\u00dfen Ma\u00dfstab arbeiten und schnell Entwicklungs-, Test- oder gesamte Infrastruktur f\u00fcr eine Funktion einrichten m\u00f6chten. Das wird Ihren Operations- oder DevOps-Teams das Leben erheblich erleichtern.<\/p>\n<p>Ein weiteres Tool, das ich bereits erw\u00e4hnt habe, ist <strong>das helm-gcs Plugin<\/strong>, das die Verwendung von Google-Buckets (Objektspeicher) erm\u00f6glicht, um Helm-Charts zu speichern.<\/p>\n<p><img decoding=\"async\" alt=\"Helm-Sicherheit\" src=\"\/wp-content\/uploads\/2019\/08\/30888c4f9b5dba14b87ba1e29e0ebed7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEs sind nur vier Befehle erforderlich, um damit zu beginnen:<\/p>\n<ol>\n<li>das Plugin installieren;<\/li>\n<li>es initialisieren;<\/li>\n<li>den Pfad zu dem Bucket angeben, der sich in GCP befindet;<\/li>\n<li>die Charts auf die \u00fcbliche Weise ver\u00f6ffentlichen.<\/li>\n<\/ol>\n<p>\nDas Beste daran ist, dass die native Methode von GCP zur Authentifizierung verwendet wird. Sie k\u00f6nnen einen Dienst-Account, einen Entwickler-Account oder was auch immer nutzen. Das ist sehr praktisch und verursacht keine Betriebskosten. Wenn Sie wie ich die Philosophie ohne Operations propagieren, wird das besonders von Vorteil sein, insbesondere f\u00fcr kleine Teams.<\/p>\n<h2>Alternativen<\/h2>\n<p>\nHelm ist nicht die einzige L\u00f6sung f\u00fcr das Management von Services. Es gibt viele Fragen dazu, vielleicht ist das der Grund, warum die dritte Version so schnell erschienen ist. Nat\u00fcrlich gibt es auch Alternativen.<\/p>\n<p>Das k\u00f6nnen spezialisierte L\u00f6sungen wie Ksonnet oder Metaparticle sein. Sie k\u00f6nnen auch Ihre traditionellen Infrastrukturmanagement-Tools (Ansible, Terraform, Chef usw.) f\u00fcr die gleichen Zwecke einsetzen, \u00fcber die ich gesprochen habe.<\/p>\n<p>Schlie\u00dflich gibt es die L\u00f6sung <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/operator-framework\">Operator Framework<\/a><\/noindex>, dessen Popularit\u00e4t zunimmt.<\/p>\n<blockquote><p>Das Operator Framework ist die Hauptalternative zu Helm, auf die man achten sollte.<\/p><\/blockquote>\n<p>\nEs ist nativ f\u00fcr CNCF und Kubernetes konzipiert, <strong>aber die Einstiegsh\u00fcrde ist viel h\u00f6her<\/strong>, man muss mehr programmieren und weniger Manifestdateien beschreiben.<\/p>\n<p>Es gibt verschiedene Add-ons wie Draft und Scaffold. Diese erleichtern das Leben erheblich, zum Beispiel den Entwicklern, indem sie den Zyklus von Helm f\u00fcr die Bereitstellung einer Testumgebung vereinfachen. Ich w\u00fcrde sie als Erweiterungswerkzeuge bezeichnen.<\/p>\n<p>Hier ist ein anschauliches Diagramm, das zeigt, wo sich was befindet.<\/p>\n<p><img decoding=\"async\" alt=\"Helm-Sicherheit\" src=\"\/wp-content\/uploads\/2019\/08\/81a8236c975d5e1649acaaa7989c27ba.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAuf der x-Achse sehen wir Ihr pers\u00f6nliches Kontrollniveau \u00fcber das Geschehen, auf der y-Achse \u2013 das Ma\u00df an Kubernetes-Nativit\u00e4t. Helm Version 2 befindet sich irgendwo dazwischen. In Version 3 sind sowohl Kontrolle als auch Nativit\u00e4t zwar nicht revolution\u00e4r verbessert, aber dennoch optimiert. Ksonnet-L\u00f6sungen sind letztlich immer noch hinter Helm 2 zur\u00fcck. Sie sind jedoch einen Blick wert, um zu wissen, was es sonst noch in dieser Welt gibt. Nat\u00fcrlich wird Ihr Konfigurationsmanager unter Ihrer Kontrolle bleiben, ist aber f\u00fcr Kubernetes nicht nativ.<\/p>\n<p>Das Operator Framework ist vollst\u00e4ndig nativ f\u00fcr Kubernetes und erm\u00f6glicht eine viel elegantere und pr\u00e4zisere Verwaltung (aber denken Sie an das Einstiegsniveau). Es eignet sich eher f\u00fcr spezialisierte Anwendungen und deren Management als f\u00fcr eine Massenl\u00f6sung zur Verpackung einer Vielzahl von Anwendungen mit Helm.<\/p>\n<p>Erweiterungen verbessern lediglich das Kontrollniveau, erg\u00e4nzen den Workflow oder beschleunigen CI\/CD-Pipelines.<\/p>\n<h2>Die Zukunft von Helm<\/h2>\n<p>\nDie gute Nachricht ist, dass Helm 3 erscheint. Die Alpha-Version 3.0.0-alpha.2 ist bereits ver\u00f6ffentlicht und kann ausprobiert werden. Sie ist recht stabil, aber die Funktionalit\u00e4t ist momentan noch begrenzt.<\/p>\n<p>Warum wird Helm 3 ben\u00f6tigt? Zun\u00e4chst einmal geht es um <strong>das Verschwinden von Tiller<\/strong>, als Komponente. Das ist, wie Sie bereits verstehen, ein enormer Fortschritt, da sich die Sicherheitsarchitektur dadurch erheblich vereinfacht.<\/p>\n<p>Als Helm 2 entwickelt wurde, zu einer Zeit als Kubernetes 1.8 oder sogar fr\u00fcher, waren viele Konzepte noch unausgereift. Zum Beispiel wird das Konzept der CRDs jetzt aktiv eingef\u00fchrt, und Helm wird <strong>CRDs verwenden<\/strong>, um Strukturen zu speichern. Es wird m\u00f6glich sein, nur den Client zu verwenden und keinen Serverteil zu betreiben. Entsprechend k\u00f6nnen die nativen Kubernetes-Befehle f\u00fcr die Arbeit mit Strukturen und Ressourcen verwendet werden. Das ist ein erheblichen Fortschritt.<\/p>\n<p>Es wird <strong>unterst\u00fctzung f\u00fcr native OCI-Repositorys<\/strong> geben (Open Container Initiative). Dies ist eine gro\u00dfe Initiative, die f\u00fcr Helm besonders interessant ist, um seine Charts zu ver\u00f6ffentlichen. Es reicht so weit, dass beispielsweise Docker Hub viele OCI-Standards unterst\u00fctzt. Ich mache keine Vorhersagen, aber es k\u00f6nnte sein, dass klassische Anbieter von Docker-Repositorys beginnen, Ihnen das Hosting Ihrer Helm-Charts zu erm\u00f6glichen.<\/p>\n<p>Eine umstrittene Angelegenheit f\u00fcr mich ist die <strong>Unterst\u00fctzung f\u00fcr Lua<\/strong>, als Templating-Engine f\u00fcr das Schreiben von Skripten. Ich bin kein gro\u00dfer Fan von Lua, aber das wird eine v\u00f6llig optionale M\u00f6glichkeit sein. Ich habe das dreimal \u00fcberpr\u00fcft \u2013 die Verwendung von Lua wird nicht obligatorisch sein. Daher kann jeder, der m\u00f6chte, Lua verwenden, w\u00e4hrend die Go-Anh\u00e4nger sich uns anschlie\u00dfen und go-tmpl verwenden k\u00f6nnen.<\/p>\n<p>Endlich das, was mir auf jeden Fall gefehlt hat \u2013 <strong>das Erscheinen von Schemata und die Validierung von Datentypen<\/strong>. Es wird keine Probleme mehr mit int oder string geben, man muss null nicht in Anf\u00fchrungszeichen setzen. Es wird ein JSON-Schema geben, das es erm\u00f6glicht, dies klar f\u00fcr Werte zu beschreiben.<\/p>\n<p>Das <strong>ereignisgesteuerte Modell<\/strong>wird stark \u00fcberarbeitet. Es ist bereits konzeptionell beschrieben. Schaut euch den Helm 3-Thread an, und ihr werdet sehen, wie viele Ereignisse, Hooks und anderes hinzugef\u00fcgt wurden, was den Deploy-Prozess erheblich vereinfacht und zugleich mehr Kontrolle dar\u00fcber bietet.<\/p>\n<p>Helm 3 wird einfacher, sicherer und interessanter sein, nicht weil wir Helm 2 nicht m\u00f6gen, sondern weil Kubernetes fortschrittlicher wird. Entsprechend kann Helm die Entwicklungen in Kubernetes nutzen und hervorragende Manager f\u00fcr Kubernetes schaffen.<\/p>\n<blockquote><p>Eine weitere gute Nachricht ist, dass auf der <noindex><a rel=\"nofollow\" href=\"https:\/\/devopsconf.io\/moscow\/2019\">DevOpsConf<\/a><\/noindex> Alexander Khayev wird erl\u00e4utern, <noindex><a rel=\"nofollow\" href=\"https:\/\/devopsconf.io\/moscow\/2019\/abstracts\/5564\">ob Container sicher sein k\u00f6nnen.<\/a><\/noindex> Wir erinnern daran, dass die Konferenz zur Integration von Entwicklungs-, Test- und Betriebsprozessen in Moskau stattfinden wird. <strong>am 30. September und 1. Oktober.<\/strong>Bis zum 20. August kann man noch <noindex><a rel=\"nofollow\" href=\"https:\/\/conf.ontico.ru\/lectures\/propose\/?conference=dc2019-moscow\">einen Vortrag einreichen<\/a><\/noindex> und von seinen Erfahrungen bei der L\u00f6sung <noindex><a rel=\"nofollow\" href=\"https:\/\/devopsconf.io\/moscow\/2019\/articles\/917\">einer der vielen<\/a><\/noindex> Herausforderungen des DevOps-Ansatzes berichten.<\/p>\n<p>Verfolgen Sie die Updates zur Konferenz und Neuigkeiten in der <noindex><a rel=\"nofollow\" href=\"http:\/\/eepurl.com\/bN_0E1\">Newsletter<\/a><\/noindex> und <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/DevOpsConfChannel\">Telegram-Gruppe.<\/a><\/noindex>.<\/p><\/blockquote>\n<p>Quelle: <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\/de\/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=\"de_DE\" \/>\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\/de\/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\udd47Sicherheit von Helm | ProHoster","description":"Die Essenz des Berichts \u00fcber den beliebtesten Paketmanager f\u00fcr Kubernetes k\u00f6nnte durch Emojis dargestellt werden: K\u00e4stchen \u2013 das ist Helm (das passendste, was in der letzten Emoji-Version verf\u00fcgbar ist); Schloss \u2013 Sicherheit; M\u00e4nnchen \u2013 Probleml\u00f6sung. In Wirklichkeit wird es jedoch etwas komplizierter, und der Bericht enth\u00e4lt viele technische Details dar\u00fcber, wie man Helm sicher macht.","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/bezopasnost-helm","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"de_DE","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\/de\/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\/de\/wp-json\/wp\/v2\/posts\/36918","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=36918"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/36918\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/27661"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=36918"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=36918"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=36918"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}