{"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":"Sicherheit von Helm","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Die Essenz der Geschichte \u00fcber den beliebtesten Paketmanager f\u00fcr Kubernetes k\u00f6nnte durch Emojis dargestellt werden:<\/p>\n<ul>\n<li>eine Box \u2014 das ist Helm (das passendste, was es in der letzten Emoji-Version gibt);<\/li>\n<li>ein Schloss \u2014 Sicherheit;<\/li>\n<li>eine Figur \u2014 L\u00f6sung des Problems.<\/li>\n<\/ul>\n<p>\n<img decoding=\"async\" alt=\"Sicherheit von Helm\" src=\"\/wp-content\/uploads\/2019\/08\/91099b372fd73bce94268563c3ee2c50.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTats\u00e4chlich wird alles ein wenig komplizierter, und die Geschichte ist voller technischer Details dar\u00fcber, <b>wie man Helm sicher macht<\/b>.<\/p>\n<ul>\n<li>Kurze Erkl\u00e4rung, was Helm ist, falls Sie es nicht wussten oder vergessen haben. Welche Probleme er l\u00f6st und wo er sich im \u00d6kosystem befindet.<\/li>\n<li>Betrachten wir die Architektur von Helm. Kein Gespr\u00e4ch \u00fcber Sicherheit und dar\u00fcber, wie man ein Tool oder eine L\u00f6sung sicherer macht, kommt ohne das Verst\u00e4ndnis der Architektur der Komponenten aus.<\/li>\n<li>Diskutieren wir die Komponenten von Helm.<\/li>\n<li>Die brennendste Frage \u2014 die Zukunft \u2014 die neue Version von Helm 3.\u00a0<\/li>\n<\/ul>\n<p>\nAlles in diesem Artikel bezieht sich auf Helm 2. Diese Version befindet sich derzeit im Einsatz und wird wahrscheinlich genau die sein, die Sie jetzt verwenden, und in der gibt es Sicherheitsbedrohungen.<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, den Inhalt 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>. Er arbeitet derzeit bei Chainstack als Entwicklungsleiter \u2014 eine Hybride zwischen Entwicklungsleiter und einer Person, die f\u00fcr die Lieferung der Endprodukte verantwortlich ist. Das hei\u00dft, er ist am \u201eSchlachtfeld\u201c, wo alles von der Produktentwicklung bis zum Betrieb stattfindet.<\/p>\n<p>Chainstack ist ein kleines, aktiv wachsendes Start-up, dessen Aufgabe es ist, den Kunden zu erm\u00f6glichen, sich um Infrastruktur und die Komplexit\u00e4t des Betriebs dezentralisierter Anwendungen keine Gedanken zu machen. Das Entwicklungsteam befindet sich in Singapur. Fragen Sie Chainstack nicht, ob sie Kryptow\u00e4hrung kaufen oder verkaufen k\u00f6nnen, sondern schlagen Sie vor, \u00fcber Unternehmens-Blockchain-Frameworks zu sprechen, und man wird Ihnen gerne antworten.<\/p>\n<h2>Helm<\/h2>\n<p>\nEs ist ein Paketmanager (Charts) f\u00fcr Kubernetes. Der klarste und vielseitigste Weg, Anwendungen in ein Kubernetes-Cluster zu bringen.<\/p>\n<p><img decoding=\"async\" alt=\"Sicherheit von Helm\" src=\"\/wp-content\/uploads\/2019\/08\/30c0fc1cc1c6ebde97c6e8ec1886ce9f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEs geht nat\u00fcrlich um einen strukturierteren und industriellen Ansatz, als das Erstellen eigener YAML-Manifeste und das Schreiben kleiner Hilfsprogramme.<\/p>\n<blockquote><p>Helm ist das Beste, was zurzeit verf\u00fcgbar und beliebt ist.<\/p><\/blockquote>\n<p>\nWarum Helm? Zun\u00e4chst, weil es von der CNCF unterst\u00fctzt wird. Cloud Native ist eine gro\u00dfe Organisation und die Muttergesellschaft der Projekte Kubernetes, etcd, Fluentd und anderer.<\/p>\n<p>Eine weitere wichtige Tatsache ist, dass Helm ein sehr beliebtes Projekt ist. Als ich im Januar 2019 dar\u00fcber nachdachte, wie man Helm sicher machen kann, hatte das Projekt tausend Sterne auf GitHub. Bis Mai waren es 12.000.<\/p>\n<p>Viele interessieren sich f\u00fcr Helm, deshalb sind die Kenntnisse \u00fcber seine Sicherheit auch n\u00fctzlich, selbst wenn Sie ihn bisher nicht verwenden. <strong>Sicherheit ist wichtig.<\/strong><\/p>\n<p>Das Hauptteam von Helm wird von Microsoft Azure unterst\u00fctzt, daher ist dies ein recht stabiles Projekt im Vergleich zu vielen anderen. Die Ver\u00f6ffentlichung von Helm 3 Alpha 2 Mitte Juli zeigt, dass an dem Projekt viele Leute arbeiten, die den Wunsch und die Kraft haben, Helm weiterzuentwickeln und zu verbessern.<\/p>\n<p><img decoding=\"async\" alt=\"Sicherheit von Helm\" src=\"\/wp-content\/uploads\/2019\/08\/e53c8e64c3cf5eea3fbd9b0095b0f81e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHelm l\u00f6st mehrere grundlegende Probleme des Anwendungsmanagements in Kubernetes.<\/p>\n<ul>\n<li>Anwendungspaketierung. Selbst eine \u201eHello, World\u201c-Anwendung auf WordPress besteht bereits aus mehreren Diensten, die man zusammen paketieren m\u00f6chte.<\/li>\n<li>Management der Komplexit\u00e4t, die mit der Verwaltung dieser Anwendungen einhergeht.<\/li>\n<li>Der Lebenszyklus, der nach der Installation oder Bereitstellung der Anwendung nicht endet. Die Anwendung lebt weiter, sie muss aktualisiert werden, und dabei hilft Helm, indem es die richtigen Ma\u00dfnahmen und Richtlinien bereitstellt.<\/li>\n<\/ul>\n<p>\n<strong>Paketierung<\/strong> ist verst\u00e4ndlich strukturiert: Es gibt Metadaten, die vollst\u00e4ndig mit der Funktionsweise eines herk\u00f6mmlichen Paketmanagers f\u00fcr Linux, Windows oder MacOS \u00fcbereinstimmen. Das bedeutet Repository, Abh\u00e4ngigkeiten von verschiedenen Paketen, Metainformationen f\u00fcr Anwendungen, Einstellungen, Konfigurationseigenschaften, Informationsindizierung usw. All dies erm\u00f6glicht Helm, um f\u00fcr Anwendungen zur Verf\u00fcgung gestellt und verwendet zu werden.<\/p>\n<p><strong>Komplexit\u00e4tsmanagement<\/strong>. Wenn Sie viele gleichartige Anwendungen haben, ben\u00f6tigen Sie Parameterisierung. Daraus ergeben sich Vorlagen, aber um nicht selbst einen Weg zur Erstellung von Vorlagen zu erfinden, kann man nutzen, was Helm von Haus aus bietet.<\/p>\n<p><strong>Management des Anwendungslebenszyklus<\/strong> \u2014 das ist meiner Meinung nach die interessanteste und ungel\u00f6ste Frage. Das ist der Grund, warum ich mich damals f\u00fcr Helm entschieden habe. Wir mussten den Lebenszyklus der Anwendung \u00fcberwachen; wir wollten unsere CI\/CD- und Anwendungszyklen in dieses Paradigma \u00fcberf\u00fchren.<\/p>\n<p>Helm erm\u00f6glicht:<\/p>\n<ul>\n<li>das Management von Bereitstellungen, definiert den Begriff der Konfiguration und Revision;<\/li>\n<li>Rollback erfolgreich durchzuf\u00fchren;<\/li>\n<li>Hooks f\u00fcr verschiedene Ereignisse zu verwenden;<\/li>\n<li>Zus\u00e4tzliche Pr\u00fcfungen von Anwendungen hinzuzuf\u00fcgen und auf deren Ergebnisse zu reagieren.<\/li>\n<\/ul>\n<p>\n\u00fcberf\u00fchrt werden. Zudem <strong>Helm hat \u201eBatterien\u201c<\/strong> \u2014 eine riesige Anzahl an leckeren Dingen, 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 strikte Architektur. Wenn Sie etwas umsetzen m\u00f6chten, empfehle ich, dies in Form eines Plugins zu tun und dann vielleicht in den upstream einzubinden.<\/p>\n<p>Helm basiert auf drei grundlegenden Konzepten:<\/p>\n<ul>\n<li><strong>Chart Repo<\/strong> \u2014 eine Beschreibung und ein Array von Parametern, die f\u00fcr Ihr Manifest m\u00f6glich sind.\u00a0<\/li>\n<li><strong>Konfiguration<\/strong> \u2014 das sind die Werte, die angewendet werden (Text, Zahlenwerte usw.).<\/li>\n<li><strong>Release<\/strong> fasst die beiden oberen Komponenten zusammen, und zusammen verwandeln sie sich in ein Release. Releases k\u00f6nnen versioniert werden, was eine Organisation des Lebenszyklus erm\u00f6glicht: 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>\nIm Diagramm wird konzeptionell die hochgradige Architektur von Helm dargestellt.<\/p>\n<p><img decoding=\"async\" alt=\"Sicherheit von Helm\" 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 verbunden ist. Daher kommen wir nicht ohne einen Kubernetes-Cluster aus (Rechteck). Die Komponente kube-apiserver befindet sich auf dem Master. Ohne Helm haben wir Kubeconfig. Helm bringt ein kleines bin\u00e4res Tool, wenn man so will, das Helm CLI, das auf Computer, Laptop, Mainframe \u2013 alles, was man braucht \u2013 installiert wird.<\/p>\n<p>Aber das reicht nicht aus. Helm hat eine serverseitige Komponente namens Tiller. Er vertritt die Interessen von Helm innerhalb des Clusters, es ist eine Anwendung innerhalb des Kubernetes-Clusters, wie jede andere auch.<\/p>\n<p>Die n\u00e4chste Komponente, Chart Repo \u2013 ein Repository mit Charts. Es gibt ein offizielles Repository und m\u00f6glicherweise ein privates Repository eines 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 sagen <code>Helm install<\/code>, sprechen das Repository (Chart Repo) an 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 sprechen soll.\u00a0<\/li>\n<li>Nachdem es diese Informationen erhalten hat, wendet sich das Tool an Tiller, der sich in unserem Cluster bereits als Anwendung befindet.\u00a0<\/li>\n<li>Tiller wendet sich an den Kube-apiserver, um Aktionen in Kubernetes durchzuf\u00fchren, um some Objekte (Dienste, Pods, Repliken, Geheimnisse usw.) zu erstellen.<\/li>\n<\/ul>\n<p>\nAls n\u00e4chstes werden wir das Diagramm komplexer gestalten, um den Angriffsvektor zu erkennen, dem die gesamte Helm-Architektur ausgesetzt sein kann. Und dann versuchen wir, sie zu sch\u00fctzen.<\/p>\n<h3>Angriffsvektor<\/h3>\n<p>\nDer erste potenziell schwache Punkt \u2013 <strong>privilegierte API<\/strong>\u2014<strong>Nutzer<\/strong>. Im Rahmen des Schemas ist dies ein Hacker, der Administratorzugriff auf die Helm CLI erhalten hat.<\/p>\n<p><strong>Ein nicht privilegierter API-Benutzer<\/strong> kann ebenfalls eine Gefahr darstellen, wenn er sich in der N\u00e4he befindet. Ein solcher Benutzer hat einen anderen Kontext, zum Beispiel kann er in einem bestimmten Namespace des Clusters in den Kubeconfig-Einstellungen verankert sein.<\/p>\n<p>Der interessanteste Angriffsvektor k\u00f6nnte der Prozess sein, der sich innerhalb des Clusters in der N\u00e4he von Tiller befindet und auf ihn zugreifen kann. Dies kann ein Webserver oder Mikrodienst sein, der die Netzwerkumgebung des Clusters sieht.<\/p>\n<p>Eine exotische, aber zunehmend beliebte Angriffsvariante ist mit dem Chart Repo verbunden. Ein von einem b\u00f6swilligen Autor erstelltes Chart kann unsichere Ressourcen enthalten, die Sie aus Vertraulichkeit ausf\u00fchren. Alternativ k\u00f6nnte er das Chart, das Sie aus dem offiziellen Repository herunterladen, manipulieren und beispielsweise eine Ressource in Form von Richtlinien erstellen und sich damit Zugang verschaffen.<\/p>\n<p><img decoding=\"async\" alt=\"Sicherheit von Helm\" src=\"\/wp-content\/uploads\/2019\/08\/2828046feb9ba8413a1b0e8741b4c354.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nWir werden versuchen, uns gegen Angriffe von all diesen vier Seiten zu verteidigen und herauszufinden, wo die Architektur von Helm Probleme hat und wo m\u00f6glicherweise nicht.<\/p>\n<p>Lassen Sie uns das Schema vergr\u00f6\u00dfern, mehr Elemente hinzuf\u00fcgen, aber alle grundlegenden Bestandteile beibehalten.<\/p>\n<p><img decoding=\"async\" alt=\"Sicherheit von Helm\" 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 das Cluster im Tiller-Komponenten weitergegeben.<\/p>\n<p>Tiller wird durch zwei Objekte repr\u00e4sentiert:<\/p>\n<ul>\n<li>Tiller-deploy svc, das einen bestimmten Dienst bereitstellt;<\/li>\n<li>Tiller-deploy pod (im Schema in einem einzigen Exemplar in einer Replik), auf dem die gesamte Last ausgef\u00fchrt wird, das auf das Cluster zugreift.<\/li>\n<\/ul>\n<p>\nF\u00fcr die Interaktion werden verschiedene Protokolle und Schemas verwendet. Aus Sicht der Sicherheit sind die am interessantesten:<\/p>\n<ul>\n<li>Der Mechanismus, mit dem die Helm CLI auf das Chart Repo zugreift: welches Protokoll, gibt es eine Authentifizierung und was kann man damit machen.<\/li>\n<li>Das Protokoll, \u00fcber das die Helm CLI mithilfe von kubectl mit Tiller kommuniziert. Es handelt sich um einen RPC-Server, der innerhalb des Clusters installiert ist.<\/li>\n<li>Selbst Tiller ist f\u00fcr Mikrodienste, die sich im Cluster befinden, zug\u00e4nglich und interagiert mit dem Kube-apiserver.<\/li>\n<\/ul>\n<p>\n<img decoding=\"async\" alt=\"Sicherheit von Helm\" src=\"\/wp-content\/uploads\/2019\/08\/19e7e085567f3bbb49746e6402926bd6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLassen Sie uns all diese Richtungen der Reihe nach besprechen.<\/p>\n<h2>RBAC<\/h2>\n<p><\/p>\n<blockquote><p>Es ist sinnlos, \u00fcber die Sicherheit von Helm oder einem anderen Dienst innerhalb des Clusters zu sprechen, wenn RBAC nicht aktiviert ist.<\/p><\/blockquote>\n<p>\nEs scheint, dass dies nicht die neueste Empfehlung ist, aber ich bin mir sicher, dass viele RBAC selbst in der Produktion noch nicht aktiviert haben, weil es viel Aufwand bedeutet und man vieles einrichten muss. Dennoch fordere ich Sie auf, dies zu tun.<\/p>\n<p><img decoding=\"async\" alt=\"Sicherheit von 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 Anwalt-Website f\u00fcr RBAC. Dort finden Sie eine gro\u00dfe Anzahl an interessanten Materialien, die Ihnen helfen, RBAC einzurichten, zeigen, warum es gut ist und wie man im Grunde damit im Produktionsbetrieb lebt.<\/p>\n<p>Ich werde versuchen zu erkl\u00e4ren, wie Tiller und RBAC funktionieren. Tiller arbeitet innerhalb des Clusters unter einem bestimmten Dienstkonto. In der Regel, wenn RBAC nicht konfiguriert ist, ist dies ein Superbenutzer. In der Standardkonfiguration ist Tiller Administrator. Deshalb h\u00f6rt man oft, dass Tiller ein SSH-Tunnel zu Ihrem Cluster ist. Tats\u00e4chlich ist es so, deshalb kann man ein separates spezialisiertes Dienstkonto anstelle des Standarddienstkontos in dem oben gezeigten Diagramm verwenden.<\/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 es, einen Benutzer mit dem minimal notwendigen Rechtssatz zu verwenden. Allerdings m\u00fcssen Sie eine solche \"Girlande\" erstellen: Role und RoleBinding.<\/p>\n<p><img decoding=\"async\" alt=\"Sicherheit von Helm\" src=\"\/wp-content\/uploads\/2019\/08\/ec805cde756495cfd5c480ac40739c43.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLeider wird Helm dies nicht f\u00fcr Sie erledigen. Sie oder Ihr Kubernetes-Administrator m\u00fcssen im Voraus ein Set von Role und RoleBinding f\u00fcr das Dienstkonto vorbereiten, um Helm zu \u00fcbergeben.<\/p>\n<p>Es stellt sich die Frage \u2013 was ist der Unterschied zwischen Role und ClusterRole? Der Unterschied besteht darin, dass ClusterRole f\u00fcr alle Namespaces gilt, im Gegensatz zu normalen Role und RoleBinding, die nur f\u00fcr einen spezifischen Namespace funktionieren. Sie k\u00f6nnen Richtlinien sowohl f\u00fcr das gesamte Cluster und alle Namespaces als auch personalisiert f\u00fcr jeden einzelnen Namespace einrichten.<\/p>\n<p>Es sei erw\u00e4hnt, dass RBAC ein weiteres gro\u00dfes Problem l\u00f6sen kann. Viele beklagen sich, dass Helm leider keine Multitenancy unterst\u00fctzt. Wenn mehrere Teams das Cluster nutzen und Helm verwenden, ist es im Prinzip unm\u00f6glich, Richtlinien einzurichten und den Zugriff innerhalb dieses Clusters zu begrenzen, weil es ein bestimmtes Dienstkonto gibt, unter dem Helm arbeitet, und es alle Ressourcen aus diesem Konto im Cluster erstellt, was manchmal sehr unpraktisch ist. Das ist in der Tat so \u2013 sowohl die bin\u00e4re Datei selbst als auch der Prozess, <strong>Helm Tiller hat kein Konzept f\u00fcr Multitenancy.<\/strong>.<\/p>\n<p>Es gibt jedoch einen hervorragenden Weg, um Tiller mehrmals im Cluster zu starten. Damit gibt es keine Probleme, Tiller kann in jedem Namespace gestartet werden. So k\u00f6nnen Sie RBAC nutzen, Kubeconfig als Kontext verwenden und den Zugriff auf ein spezielles Helm begrenzen.<\/p>\n<p>Das wird folgenderma\u00dfen aussehen.<\/p>\n<p><img decoding=\"async\" alt=\"Sicherheit von Helm\" src=\"\/wp-content\/uploads\/2019\/08\/eae922c7b5e1422fb51667364ed79e0a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nZum Beispiel gibt es zwei Kubeconfig mit Kontext f\u00fcr verschiedene Teams (zwei Namespaces): X Team f\u00fcr das Entwicklerteam und den Admin-Cluster. Der Admin-Cluster hat ein umfassendes Tiller, das sich im Kube-system Namespace befindet, entsprechend mit einem erweiterten Service-Account. Und einen separaten Namespace f\u00fcr das Entwicklerteam, das seine Dienste in diesen speziellen Namespace bereitstellen kann.<\/p>\n<p>Dies ist ein praktikabler Ansatz, Tiller ist nicht so hungrig, dass es Ihre Budgetierung stark beeinflussen k\u00f6nnte. Es ist eine der schnellen L\u00f6sungen.<\/p>\n<blockquote><p>Scheuen Sie sich nicht, Tiller separat zu konfigurieren und Kubeconfig mit dem Kontext f\u00fcr das Team, einen bestimmten Entwickler oder die Umgebung: Dev, Staging, Production bereitzustellen (es ist zweifelhaft, dass alles in einem Cluster sein wird, aber es ist m\u00f6glich, dies zu tun).<\/p><\/blockquote>\n<p>\nLassen Sie uns unsere Geschichte fortsetzen, indem wir von RBAC zu ConfigMaps wechseln.<\/p>\n<h3>ConfigMaps<\/h3>\n<p>\nHelm verwendet ConfigMaps als Datenspeicher. Als wir \u00fcber die Architektur sprachen, gab es keinen Datenbank, die Informationen \u00fcber Releases, Konfigurationen, Rollbacks usw. speichert. Daf\u00fcr werden ConfigMaps verwendet.<\/p>\n<p>Das Hauptproblem mit ConfigMaps ist bekannt \u2013 sie sind in der Regel unsicher, weil in ihnen <strong>es unm\u00f6glich ist, sensible Daten zu speichern<\/strong>. Es geht um alles, was nicht \u00fcber den Dienst hinaus gelangen sollte, wie zum Beispiel Passw\u00f6rter. Der derzeit nativste Weg f\u00fcr Helm ist es, von ConfigMaps zu Secrets \u00fcberzugehen.<\/p>\n<p>Das ist ganz einfach. Sie \u00fcberschreiben die Tiller-Einstellung und geben an, dass der Speicher Secrets sein werden. Dann erhalten Sie bei jedem Deployment kein ConfigMap, sondern ein Secret.<\/p>\n<p><img decoding=\"async\" alt=\"Sicherheit von Helm\" src=\"\/wp-content\/uploads\/2019\/08\/7fd12bfbed5c6c8111a5126c2ab9f853.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSie k\u00f6nnten einwenden, dass Secrets \u2013 ein seltsames Konzept \u2013 nicht besonders sicher sind. Es ist jedoch wichtig zu verstehen, dass dies von den Entwicklern von Kubernetes selbst behandelt wird. Seit Version 1.10, also schon seit einiger Zeit, gibt es die M\u00f6glichkeit, zumindest in \u00f6ffentlichen Clouds den richtigen Speicher f\u00fcr Secrets anzuschlie\u00dfen. Das Team arbeitet derzeit daran, den Zugriff auf Secrets f\u00fcr einzelne Pods oder andere Entit\u00e4ten noch besser zu steuern.<\/p>\n<blockquote><p>Es ist besser, den Speicher von Helm auf Secrets umzustellen und diese wiederum zentral abzusichern.<\/p><\/blockquote>\n<p>\nNat\u00fcrlich wird es ein <strong>Speicherlimit von 1 MB geben<\/strong>. Helm verwendet hier etcd als verteiltes Speichersystem f\u00fcr ConfigMaps. Dort wurde entschieden, dass dies ein geeigneter Datenchunk f\u00fcr Replikationen usw. ist. Dazu gibt es eine interessante Diskussion auf Reddit, ich empfehle, diese am Wochenende zu lesen oder eine Zusammenfassung zu finden. <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\u00f6nnten zur Quelle von \u201eMan in the Middle\u201c-Attacken werden, insbesondere wenn eine Standardl\u00f6sung verwendet wird. Zuallererst handelt es sich um Repositories, die \u00fcber HTTP bereitgestellt werden.<\/p>\n<blockquote><p>Man muss definitiv das Helm-Repo \u00fcber HTTPS bereitstellen \u2013 das ist die beste Option und kostet nicht viel.<\/p><\/blockquote>\n<p>\nAchten Sie darauf, dass <strong>Mechanismus zur Signierung von Charts<\/strong>. Die Technologie ist erschreckend einfach. Es ist dasselbe, was Sie auf GitHub verwenden, eine gew\u00f6hnliche PGP-Maschine mit \u00f6ffentlichen und privaten Schl\u00fcsseln. Richten Sie es ein und seien Sie sich sicher, die richtigen Schl\u00fcssel zu haben und alles zu signieren, damit es wirklich Ihr Chart ist.<\/p>\n<p>Au\u00dferdem, <strong>Der Helm-Client unterst\u00fctzt TLS<\/strong> (nicht im Sinne von HTTP auf der Serverseite, sondern f\u00fcr mutual TLS). Sie k\u00f6nnen Server- und Client-Schl\u00fcssel verwenden, um zu kommunizieren. Ehrlich gesagt verwende ich einen solchen Mechanismus nicht, weil ich mutuale Zertifikate nicht mag. Im Prinzip, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/helm\/chartmuseum\">chartmuseum<\/a><\/noindex> \u2013 das Hauptelement zur Bereitstellung von Helm-Repo f\u00fcr Helm 2 \u2013 unterst\u00fctzt auch Basic Auth. Basic Auth kann verwendet werden, wenn es bequemer und angenehmer 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 verwendet werden.<\/p>\n<p><img decoding=\"async\" alt=\"Sicherheit von Helm\" 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 aktivieren, um die Risiken weiter zu minimieren, erhalten Sie eine sichere Kommunikationsverbindung zwischen Helm CLI und Chart Repo.<\/p>\n<h3>gRPC-API<\/h3>\n<p>\nDer n\u00e4chste Schritt ist sehr verantwortungsvoll \u2013 Tiller abzusichern, der sich im Cluster befindet und einerseits ein Server ist, andererseits selbst auf andere Komponenten zugreift und versucht, sich als etwas anderes auszugeben.<\/p>\n<p>Wie ich bereits sagte, ist Tiller ein Dienst, der gRPC bereitstellt, der Helm-Client greift \u00fcber gRPC darauf zu. Standardm\u00e4\u00dfig ist TLS nat\u00fcrlich deaktiviert. Warum dies so gemacht wurde, ist eine diskussionsw\u00fcrdige Frage, ich denke, um die anf\u00e4ngliche Konfiguration zu vereinfachen.<\/p>\n<blockquote><p>F\u00fcr die Produktion 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 angemessen und sehr einfach \u2014 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 ausf\u00fchren, indem Sie sich mit dem generierten Zertifikat und dem privaten Schl\u00fcssel identifizieren.<\/p>\n<p><img decoding=\"async\" alt=\"Sicherheit von Helm\" src=\"\/wp-content\/uploads\/2019\/08\/ed55b9a465ed1278b272c52c90b2b345.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDamit sichern Sie sich gegen alle Anfragen an Tiller von au\u00dferhalb des Clusters ab.<\/p>\n<p>So haben wir den Verbindungskanal zu Tiller gesichert, bereits \u00fcber RBAC gesprochen und die Berechtigungen des Kubernetes apiserver angepasst, und die Dom\u00e4ne, mit der er interagieren kann, eingeschr\u00e4nkt.<\/p>\n<h2>Gesch\u00fctzter Helm<\/h2>\n<p>\nSchauen wir uns das finale Schema an. Es ist die gleiche Architektur mit denselben Pfeilen.<\/p>\n<p><img decoding=\"async\" alt=\"Sicherheit von Helm\" src=\"\/wp-content\/uploads\/2019\/08\/6672e254ad93b917f57794e1619a572e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAlle Verbindungen k\u00f6nnen jetzt ohne Bedenken gr\u00fcn gezeichnet werden:<\/p>\n<ul>\n<li>f\u00fcr das Chart Repo verwenden wir TLS oder mTLS und Basic Auth;<\/li>\n<li>mTLS f\u00fcr Tiller, und es ist als gRPC-Dienst mit TLS eingerichtet, wobei wir Zertifikate verwenden;<\/li>\n<li>im Cluster wird ein spezieller Service-Account mit Role und RoleBinding verwendet.\u00a0<\/li>\n<\/ul>\n<p>\nWir haben den Cluster deutlich gesichert, aber jemand hat schlau gesagt:<\/p>\n<blockquote><p>\u201eDie absolut sichere L\u00f6sung kann nur eines sein \u2014 ein abgeschalteter Computer, der sich in einem Betonkasten befindet 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 \u00fcberzeugt, dass diese Empfehlungen es erm\u00f6glichen, einen grundlegenden industriellen Sicherheitsstandard umzusetzen.<\/p>\n<h2>Bonus<\/h2>\n<p>\nDieser Teil bezieht sich nicht direkt auf die Sicherheit, wird aber ebenfalls n\u00fctzlich sein. Ich zeige einige interessante Dinge, von denen nur wenige wissen. Zum Beispiel, wie man Charts sucht \u2014 offizielle und inoffizielle.<\/p>\n<p>Im Repository <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/helm\/charts\">github.com\/helm\/charts<\/a><\/noindex> Derzeit gibt es etwa 300 Charts und zwei Streams: stable und incubator. Wer beitr\u00e4gt, wei\u00df genau, wie schwierig es ist, aus dem incubator in das stable zu gelangen und wie einfach es ist, aus dem stable herauszufallen. Allerdings ist dies nicht das beste Werkzeug, um Charts f\u00fcr Prometheus und alles, was Ihnen gef\u00e4llt, zu suchen, aus einem einfachen Grund \u2014 es ist kein Portal, wo es bequem ist, Pakete zu suchen.<\/p>\n<p>Aber es gibt einen Dienst <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 dort viel mehr externe Repositories verf\u00fcgbar sind und fast 800 Charts zur Verf\u00fcgung stehen. Au\u00dferdem k\u00f6nnen Sie Ihr eigenes Repository anschlie\u00dfen, wenn Sie aus bestimmten Gr\u00fcnden Ihre Charts nicht in stable einf\u00fcgen m\u00f6chten.<\/p>\n<p>Probieren Sie hub.helm.sh aus und lassen Sie uns gemeinsam daran arbeiten. Dieser Dienst geh\u00f6rt zum Helm-Projekt, und Sie k\u00f6nnen sogar zur Benutzeroberfl\u00e4che beitragen, wenn Sie Frontend-Entwickler sind und das Erscheinungsbild einfach verbessern m\u00f6chten.<\/p>\n<p>Ich m\u00f6chte Ihre Aufmerksamkeit auf <strong>Integration der Open Service Broker API<\/strong>. Es klingt kompliziert und unverst\u00e4ndlich, l\u00f6st aber Probleme, mit denen jeder konfrontiert ist. Lassen Sie mich das anhand eines einfachen Beispiels erl\u00e4utern.<\/p>\n<p><img decoding=\"async\" alt=\"Sicherheit von Helm\" src=\"\/wp-content\/uploads\/2019\/08\/3aeb7e0781e50a79b518f1056873f73a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAngenommen, wir haben einen Kubernetes-Cluster, in dem wir eine klassische Anwendung \u2014 WordPress \u2014 betreiben m\u00f6chten. In der Regel ben\u00f6tigt man daf\u00fcr eine Datenbank. Es gibt viele verschiedene L\u00f6sungen, zum Beispiel k\u00f6nnte man seinen eigenen stateful-Service betreiben. Das ist nicht sehr praktisch, aber viele machen das so.<\/p>\n<p>Andere, wie wir bei Chainstack, nutzen verwaltete Datenbanken, wie MySQL oder PostgreSQL, f\u00fcr Server. Deshalb befindet sich unsere DB irgendwo in der Cloud.<\/p>\n<p>Aber es ergibt sich ein Problem: Wir m\u00fcssen unseren Dienst mit der Datenbank verbinden, einen Datenbank-Flavor erstellen, Anmeldeinformationen \u00fcbergeben und diese verwalten. All das geschieht normalerweise manuell durch einen Systemadministrator oder Entwickler. Das ist kein Problem, wenn es nur wenige Anwendungen gibt. Wenn es viele sind, braucht man einen Kombi-Anbieter. So einen Kombi-Anbieter gibt es \u2014 das ist der Service Broker. Er erm\u00f6glicht die Verwendung eines speziellen Plugins f\u00fcr den \u00f6ffentlichen Cloud-Cluster und das Anfordern von Ressourcen beim Anbieter \u00fcber Broker, als w\u00e4re es eine API. Dazu k\u00f6nnen die nativen Mittel von Kubernetes verwendet werden.<\/p>\n<p>Das ist sehr einfach. Man kann beispielsweise Managed MySQL in Azure mit einem Basis-Tier anfordern (das kann man anpassen). Mit der Azure-API wird die Datenbank erstellt und einsatzbereit gemacht. Sie m\u00fcssen sich nicht darum k\u00fcmmern, darum k\u00fcmmert sich das Plugin. Zum Beispiel gibt OSBA (Azure-Plugin) die Anmeldeinformationen an den Dienst zur\u00fcck und \u00fcbergibt diese an Helm. So k\u00f6nnen Sie WordPress mit der Cloud-MySQL nutzen, ohne sich um verwaltete Datenbanken und stateful-Services k\u00fcmmern zu m\u00fcssen.<\/p>\n<blockquote><p>Man k\u00f6nnte sagen, dass Helm als Kleber fungiert, der auf der einen Seite das Bereitstellen von Diensten erm\u00f6glicht und auf der anderen Seite die Ressourcen von Cloud-Anbietern konsumiert.<\/p><\/blockquote>\n<p>\nMan kann sein eigenes Plugin schreiben und diese ganze Geschichte on-premise nutzen. Dann h\u00e4tten Sie einfach Ihr eigenes Plugin f\u00fcr den Unternehmens-Cloud-Anbieter. Ich empfehle, diesen Ansatz auszuprobieren, insbesondere wenn Sie in gro\u00dfem Ma\u00dfstab arbeiten und schnell Dev-, Staging- oder die gesamte Infrastruktur f\u00fcr ein Feature bereitstellen m\u00f6chten. Das wird das Leben Ihrer Operations oder DevOps erleichtern.<\/p>\n<p>Eine weitere Entdeckung, die ich bereits erw\u00e4hnt habe, ist das <strong>helm-gcs-Plugin<\/strong>, das es erm\u00f6glicht, Google-Buckets (Objektspeicher) zur Speicherung von Helm-Charts zu nutzen.<\/p>\n<p><img decoding=\"async\" alt=\"Sicherheit von Helm\" src=\"\/wp-content\/uploads\/2019\/08\/30888c4f9b5dba14b87ba1e29e0ebed7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEs sind nur vier Befehle n\u00f6tig, um damit zu beginnen:<\/p>\n<ol>\n<li>Plugin installieren;<\/li>\n<li>es initialisieren;<\/li>\n<li>Einen Pfad zu dem Bucket angeben, der sich in GCP befindet;<\/li>\n<li>Charts auf die standardm\u00e4\u00dfige Weise ver\u00f6ffentlichen.<\/li>\n<\/ol>\n<p>\nDer Vorteil ist, dass die native Methode von GCP f\u00fcr die Authentifizierung verwendet wird. Sie k\u00f6nnen einen Dienstkonto, ein Entwicklerkonto \u2013 alles, was Sie m\u00f6chten. Es ist sehr bequem und kostet nichts im Betrieb. Wenn Sie, wie ich, die opsless-Philosophie propagieren, wird es besonders praktisch, vor allem f\u00fcr kleine Teams.<\/p>\n<h2>Alternativen<\/h2>\n<p>\nHelm ist nicht die einzige L\u00f6sung zur Verwaltung von Diensten. Dazu gibt es viele Fragen, vielleicht ist das der Grund, warum so schnell die dritte Version erschienen ist. Nat\u00fcrlich gibt es Alternativen.<\/p>\n<p>Das k\u00f6nnen sowohl spezialisierte L\u00f6sungen wie Ksonnet oder Metaparticle sein. Sie k\u00f6nnen auch Ihre klassischen Infrastrukturmanagement-Tools (Ansible, Terraform, Chef usw.) f\u00fcr dieselben Zwecke verwenden, \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>, deren Beliebtheit w\u00e4chst.<\/p>\n<blockquote><p>Operator Framework ist die Hauptalternative zu Helm, der man Aufmerksamkeit schenken sollte.<\/p><\/blockquote>\n<p>\nEs ist nativ f\u00fcr CNCF und Kubernetes, <strong>aber die Einstiegsh\u00fcrde ist viel h\u00f6her<\/strong>, Sie m\u00fcssen mehr programmieren und weniger Manifeste beschreiben.<\/p>\n<p>Es gibt verschiedene Addons wie Draft, Scaffold. Diese erleichtern das Leben erheblich, indem sie beispielsweise Entwicklern den Zyklus des Sendens und Startens von Helm zum Deployen einer Testumgebung vereinfachen. Ich w\u00fcrde sie als Leistungsverbesserer bezeichnen.<\/p>\n<p>Hier ist ein anschauliches Diagramm, wo sich was befindet.<\/p>\n<p><img decoding=\"async\" alt=\"Sicherheit von Helm\" src=\"\/wp-content\/uploads\/2019\/08\/81a8236c975d5e1649acaaa7989c27ba.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAuf der Abszisse ist Ihr pers\u00f6nlicher Kontrollgrad \u00fcber das Geschehen, auf der Ordinate der Grad der Nativit\u00e4t von Kubernetes. Helm Version 2 befindet sich irgendwo in der Mitte. In Version 3 sind sowohl die Kontrolle als auch die Nativit\u00e4t nicht enorm verbessert, aber dennoch besser. L\u00f6sungen der Ebene Ksonnet sind immer noch unterlegen im Vergleich zu Helm 2. Dennoch sollten Sie einen Blick darauf werfen, um zu wissen, was es noch in dieser Welt gibt. Nat\u00fcrlich wird Ihr Konfigurationsmanager unter Ihrer Kontrolle stehen, ist aber absolut nicht nativ f\u00fcr Kubernetes.<\/p>\n<p>Operator Framework ist absolut nativ f\u00fcr Kubernetes und erlaubt eine viel elegantere und gr\u00fcndlichere Verwaltung (aber denken Sie an die Einstiegsh\u00fcrde). Es ist eher f\u00fcr spezialisierte Anwendungen geeignet und zur Erstellung eines Managements daf\u00fcr, als f\u00fcr einen Massenkompostierer zum Verpacken einer gro\u00dfen Anzahl von Anwendungen mit Helm.<\/p>\n<p>Leistungsverbesserer verbessern lediglich die Kontrolle, erg\u00e4nzen den Workflow oder schneiden Ecken in CI\/CD-Pipelines.<\/p>\n<h2>Die Zukunft von Helm<\/h2>\n<p>\nDie gute Nachricht ist, dass Helm 3 verf\u00fcgbar wird. Die Alpha-Version 3.0.0-alpha.2 ist bereits ver\u00f6ffentlicht und kann ausprobiert werden. Sie ist ziemlich stabil, aber die Funktionalit\u00e4t ist noch eingeschr\u00e4nkt.<\/p>\n<p>Warum braucht man Helm 3? In erster Linie geht es darum, <strong>Tiller zu eliminieren<\/strong>, wie ein Bestandteil. Das ist, wie Sie bereits verstehen, ein riesiger Schritt nach vorne, denn aus Sicht der Sicherheitsarchitektur wird alles vereinfacht.<\/p>\n<p>Als Helm 2 entwickelt wurde, das war zu Zeiten von Kubernetes 1.8 oder sogar fr\u00fcher, waren viele Konzepte unreif. Zum Beispiel wird das Konzept von CRD jetzt aktiv umgesetzt, und Helm wird <strong>CRD nutzen<\/strong>, um Strukturen zu speichern. Es wird m\u00f6glich sein, nur den Client zu verwenden, ohne den Serverteil zu ben\u00f6tigen. Entsprechend k\u00f6nnen die nativen Kubernetes-Befehle f\u00fcr die Arbeit mit Strukturen und Ressourcen verwendet werden. Das ist ein gro\u00dfer Fortschritt.<\/p>\n<p>Es wird <strong>Unterst\u00fctzung f\u00fcr native OCI-Repositorys<\/strong> geben (Open Container Initiative). Das ist eine gro\u00dfe Initiative, und Helm ist vor allem daran interessiert, eigene Charts bereitzustellen. Es geht so weit, dass zum Beispiel Docker Hub viele OCI-Standards unterst\u00fctzt. Ich wage keine Vorhersage, aber m\u00f6glicherweise werden die klassischen Anbieter von Docker-Repositories beginnen, Ihnen die M\u00f6glichkeit zu geben, Ihre Helm-Charts bereitzustellen.<\/p>\n<p>Eine f\u00fcr mich umstrittene Sache ist die <strong>Unterst\u00fctzung f\u00fcr Lua<\/strong>, als Templating-Engine zum 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 zwingend sein. Daher kann jeder, der m\u00f6chte, Lua verwenden, und diejenigen, die Go m\u00f6gen \u2013 schlie\u00dfen Sie sich unserem gro\u00dfen Lager an und nutzen Sie go-tmpl daf\u00fcr.<\/p>\n<p>Endlich das, was mir eindeutig gefehlt hat \u2013 das <strong>Erscheinen von Schemata und die Validierung von Datentypen<\/strong>. Es wird keine Probleme mehr mit int oder string geben, es wird nicht notwendig sein, null in doppelte Anf\u00fchrungszeichen zu setzen. Es wird ein JSON-Schema geben, das es erm\u00f6glicht, dies ausdr\u00fccklich f\u00fcr Werte zu beschreiben.<\/p>\n<p>Das <strong>ereignisgesteuerte Modell<\/strong>wird stark \u00fcberarbeitet. Es wurde bereits konzeptionell beschrieben. Schauen Sie sich den Branch Helm 3 an, und Sie werden sehen, wie viele Ereignisse, Hooks und anderes hinzugef\u00fcgt wurden, was die Prozesse des Deployments stark vereinfachen und gleichzeitig mehr Kontrolle dar\u00fcber geben wird.<\/p>\n<p>Helm 3 wird einfacher, sicherer und interessanter sein, nicht weil wir Helm 2 nicht m\u00f6gen, sondern weil Kubernetes fortschrittlicher wird. Dementsprechend kann Helm die Entwicklungen von Kubernetes nutzen und gro\u00dfartige Manager f\u00fcr Kubernetes schaffen.<\/p>\n<blockquote><p>Eine weitere gute Nachricht ist, dass <noindex><a rel=\"nofollow\" href=\"https:\/\/devopsconf.io\/moscow\/2019\">DevOpsConf<\/a><\/noindex> Alexander Khayev wird erz\u00e4hlen, <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 Produktionsprozessen 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 \u00fcber seine Erfahrungen bei der L\u00f6sung <noindex><a rel=\"nofollow\" href=\"https:\/\/devopsconf.io\/moscow\/2019\/articles\/917\">einer von vielen<\/a><\/noindex> Herausforderungen des DevOps-Ansatzes berichten.<\/p>\n<p>Halten Sie sich \u00fcber die Checkpoints der Konferenz und Neuigkeiten auf dem Laufenden 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 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0421\u0443\u0442\u044c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430 \u043e \u0441\u0430\u043c\u043e\u043c \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u043c \u043f\u0430\u043a\u0435\u0442\u043d\u043e\u043c \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0435 \u0434\u043b\u044f Kubernetes \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0438\u0437\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u044d\u043c\u043e\u0434\u0436\u0438: \u043a\u043e\u0440\u043e\u0431\u043a\u0430 \u2014 \u044d\u0442\u043e Helm (\u044d\u0442\u043e \u0441\u0430\u043c\u043e\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0435\u0435, \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u043c \u0440\u0435\u043b\u0438\u0437\u0435 Emoji);.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/bezopasnost-helm\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"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);.\" \/>\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\udd47Helm-Sicherheit | ProHoster","description":"Die Essenz des Berichts \u00fcber den beliebtesten Paketmanager f\u00fcr Kubernetes k\u00f6nnte man mit einem Emoji veranschaulichen: eine Box \u2013 das ist Helm (das passendste in der letzten Emoji-Version);","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);.","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","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"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}]}}