{"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\/es\/blog\/administrirovanie\/bezopasnost-helm","title":{"rendered":"Seguridad de Helm","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>La esencia de la historia sobre el gestor de paquetes m\u00e1s popular para Kubernetes podr\u00eda representarse con emojis:<\/p>\n<ul>\n<li>caja \u2014 esto es Helm (es lo m\u00e1s adecuado que hay en la \u00faltima versi\u00f3n de Emoji);<\/li>\n<li>candado \u2014 seguridad;<\/li>\n<li>mu\u00f1eco \u2014 soluci\u00f3n del problema.<\/li>\n<\/ul>\n<p>\n<img decoding=\"async\" alt=\"Seguridad de Helm\" src=\"\/wp-content\/uploads\/2019\/08\/91099b372fd73bce94268563c3ee2c50.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSin embargo, en realidad, todo ser\u00e1 un poco m\u00e1s complicado, y la historia est\u00e1 llena de detalles t\u00e9cnicos sobre c\u00f3mo <b>hacer Helm seguro<\/b>.<\/p>\n<ul>\n<li>En resumen, qu\u00e9 es Helm, si no lo sab\u00edas o lo olvidaste. Qu\u00e9 problemas resuelve y d\u00f3nde se encuentra en el ecosistema.<\/li>\n<li>Veamos la arquitectura de Helm. Ninguna conversaci\u00f3n sobre seguridad y c\u00f3mo hacer una herramienta o soluci\u00f3n m\u00e1s segura puede hacerse sin comprender la arquitectura del componente.<\/li>\n<li>Discutiremos los componentes de Helm.<\/li>\n<li>La cuesti\u00f3n m\u00e1s apremiante \u2014 el futuro \u2014 la nueva versi\u00f3n Helm 3.\u00a0<\/li>\n<\/ul>\n<p>\nTodo en este art\u00edculo se refiere a Helm 2. Esta versi\u00f3n actualmente se encuentra en producci\u00f3n y, lo m\u00e1s probable, es la que est\u00e1s utilizando ahora, y en la que existen amenazas de seguridad.<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=\"Reproducir video\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><br \/>\n<strong>Sobre el ponente:<\/strong> Alexander Khayorov (<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/allexx\/\" class=\"user_link\">allexx<\/a><\/noindex>) tiene 10 a\u00f1os de experiencia en desarrollo, ayuda a mejorar el contenido <noindex><a rel=\"nofollow\" href=\"https:\/\/conf.python.ru\/2019\">Moscow Python Conf++<\/a><\/noindex> y se uni\u00f3 al comit\u00e9 <noindex><a rel=\"nofollow\" href=\"https:\/\/events.linuxfoundation.org\/events\/helm-summit-2019\/\">Helm Summit<\/a><\/noindex>. Actualmente trabaja en Chainstack como l\u00edder de desarrollo \u2014 es un h\u00edbrido entre un jefe de desarrollo y una persona responsable de la entrega de versiones finales. Es decir, est\u00e1 en el campo de batalla, donde ocurre todo, desde la creaci\u00f3n del producto hasta su operaci\u00f3n.<\/p>\n<p>Chainstack \u2014 una peque\u00f1a startup en r\u00e1pido crecimiento, cuyo objetivo es permitir a los clientes olvidar la infraestructura y las complejidades de operar aplicaciones descentralizadas, el equipo de desarrollo se encuentra en Singapur. No pidas a Chainstack que venda o compre criptomonedas, pero sugiere hablar sobre marcos empresariales de blockchain, y te responder\u00e1n con gusto.<\/p>\n<h2>Helm<\/h2>\n<p>\nEs un gestor de paquetes (charts) para Kubernetes. La forma m\u00e1s clara y universal de llevar aplicaciones al cl\u00faster de Kubernetes.<\/p>\n<p><img decoding=\"async\" alt=\"Seguridad de Helm\" src=\"\/wp-content\/uploads\/2019\/08\/30c0fc1cc1c6ebde97c6e8ec1886ce9f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPor supuesto, se trata de un enfoque m\u00e1s estructurado e industrial que crear tus propios manifiestos YAML y escribir peque\u00f1as utilidades.<\/p>\n<blockquote><p>Helm es lo mejor que hay disponible y popular en este momento.<\/p><\/blockquote>\n<p>\n\u00bfPor qu\u00e9 Helm? Primero que nada, porque es respaldado por la CNCF. Cloud Native es una gran organizaci\u00f3n que es la empresa matriz de proyectos como Kubernetes, etcd, Fluentd y otros.<\/p>\n<p>Otro hecho importante es que Helm es un proyecto muy popular. Cuando en enero de 2019 empec\u00e9 a pensar en c\u00f3mo hacer que Helm sea seguro, el proyecto contaba con mil estrellas en GitHub. Para mayo, ya ten\u00eda 12,000.<\/p>\n<p>Muchos est\u00e1n interesados en Helm, as\u00ed que incluso si a\u00fan no lo usas, te ser\u00e1 \u00fatil aprender sobre su seguridad. <strong>La seguridad es importante.<\/strong><\/p>\n<p>El equipo principal de Helm es respaldado por Microsoft Azure, lo que lo convierte en un proyecto bastante estable en comparaci\u00f3n con muchos otros. El lanzamiento de Helm 3 Alpha 2 a mediados de julio es un indicador de que hay muchas personas trabajando en el proyecto, y tienen el deseo y la capacidad de desarrollar y mejorar Helm.<\/p>\n<p><img decoding=\"async\" alt=\"Seguridad de Helm\" src=\"\/wp-content\/uploads\/2019\/08\/e53c8e64c3cf5eea3fbd9b0095b0f81e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHelm aborda varios problemas fundamentales en la gesti\u00f3n de aplicaciones en Kubernetes.<\/p>\n<ul>\n<li>El empaquetado de aplicaciones. Incluso una aplicaci\u00f3n simple como \"Hello, World\" en WordPress ya consta de varios servicios, y es deseable empaquetarlos juntos.<\/li>\n<li>La gesti\u00f3n de la complejidad que surge con la administraci\u00f3n de estas aplicaciones.<\/li>\n<li>El ciclo de vida, que no termina despu\u00e9s de la instalaci\u00f3n o despliegue de la aplicaci\u00f3n. Sigue viviendo, necesita ser actualizado, y Helm ayuda a esto, intentando aportar las medidas y pol\u00edticas adecuadas.<\/li>\n<\/ul>\n<p>\n<strong>Empaquetado<\/strong> est\u00e1 dise\u00f1ado de manera comprensible: hay metadatos en plena conformidad con el funcionamiento de un gestor de paquetes t\u00edpico para Linux, Windows o MacOS. Es decir, repositorios, dependencias de varios paquetes, metainformaci\u00f3n para aplicaciones, configuraciones, caracter\u00edsticas de configuraci\u00f3n, indexaci\u00f3n de informaci\u00f3n, etc. Todo esto Helm permite obtener y utilizar para las aplicaciones.<\/p>\n<p><strong>Gesti\u00f3n de la complejidad<\/strong>. Si tienes muchas aplicaciones similares, necesitas parametrizaci\u00f3n. De esto surgen las plantillas, pero para no inventar tu propia forma de crear plantillas, puedes utilizar lo que Helm ofrece de forma nativa.<\/p>\n<p><strong>Gesti\u00f3n del ciclo de vida de la aplicaci\u00f3n<\/strong> \u2014 en mi opini\u00f3n, esta es la cuesti\u00f3n m\u00e1s interesante y no resuelta. Es la raz\u00f3n por la que en su momento llegu\u00e9 a Helm. Necesit\u00e1bamos supervisar el ciclo de vida de la aplicaci\u00f3n, quer\u00edamos trasladar nuestro CI\/CD y los ciclos de las aplicaciones a esta nueva paradigma.<\/p>\n<p>Helm permite:<\/p>\n<ul>\n<li>gestionar despliegues, introduce la noci\u00f3n de configuraci\u00f3n y revisi\u00f3n;<\/li>\n<li>realizar rollback con \u00e9xito;<\/li>\n<li>utilizar hooks en diferentes eventos;<\/li>\n<li>agregar verificaciones adicionales de aplicaciones y reaccionar a sus resultados.<\/li>\n<\/ul>\n<p>\nAdem\u00e1s <strong>Helm tiene \u00abbater\u00edas\u00bb<\/strong> \u2014 una gran cantidad de cosas \u00fatiles que se pueden incluir como complementos, simplificando tu vida. Los complementos se pueden escribir por uno mismo, son bastante aislados y no requieren una arquitectura estructurada. Si deseas implementar algo, te recomiendo hacerlo como un complemento, y luego quiz\u00e1s incluirlo en upstream.<\/p>\n<p>Helm se basa en tres conceptos fundamentales:<\/p>\n<ul>\n<li><strong>Chart Repo<\/strong> \u2014 descripci\u00f3n y un conjunto de par\u00e1metros posibles para tu manifiesto.\u00a0<\/li>\n<li><strong>Configuraci\u00f3n<\/strong> \u2014 es decir, los valores que ser\u00e1n aplicados (texto, valores num\u00e9ricos, etc.).<\/li>\n<li><strong>Release<\/strong> consolida los dos componentes superiores, y juntos se convierten en un Release. Las versiones de releases se pueden versionar, lo que permite organizar el ciclo de vida: peque\u00f1o en el momento de la instalaci\u00f3n y grande en el momento de upgrade, downgrade o rollback.<\/li>\n<\/ul>\n<p><\/p>\n<h2>Arquitectura de Helm<\/h2>\n<p>\nEn el diagrama se refleja conceptualmente la arquitectura de alto nivel de Helm.<\/p>\n<p><img decoding=\"async\" alt=\"Seguridad de Helm\" src=\"\/wp-content\/uploads\/2019\/08\/c5cf54890682a3d6ca7a45021b5006a1.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nRecuerda que Helm est\u00e1 relacionado con Kubernetes. Por lo tanto, no podemos prescindir de un cl\u00faster de Kubernetes (rect\u00e1ngulo). El componente kube-apiserver se encuentra en el maestro. Sin Helm, tenemos Kubeconfig. Helm trae una peque\u00f1a utilidad binaria, por as\u00ed decirlo, Helm CLI, que se instala en un ordenador, port\u00e1til, mainframe, en cualquier cosa.<\/p>\n<p>Pero esto no es suficiente. Helm tiene un componente servidor llamado Tiller. Este representa los intereses de Helm dentro del cl\u00faster, es una aplicaci\u00f3n dentro del cl\u00faster de Kubernetes, como cualquier otra.<\/p>\n<p>El siguiente componente Chart Repo es un repositorio de charts. Hay un repositorio oficial, y puede haber un repositorio privado de la empresa o del proyecto.<\/p>\n<h3>Interacci\u00f3n<\/h3>\n<p>\nVeamos c\u00f3mo interact\u00faan los componentes de la arquitectura cuando queremos instalar una aplicaci\u00f3n usando Helm.<\/p>\n<ul>\n<li>Decimos <code>Helm install<\/code>, llamamos al repositorio (Chart Repo) y obtenemos el chart de Helm.<\/li>\n<\/ul>\n<p><\/p>\n<ul>\n<li>La herramienta Helm (Helm CLI) interact\u00faa con Kubeconfig para averiguar a qu\u00e9 cl\u00faster dirigirse.\u00a0<\/li>\n<li>Con esta informaci\u00f3n, la herramienta se comunica con Tiller, que se encuentra en nuestro cl\u00faster, como una aplicaci\u00f3n.\u00a0<\/li>\n<li>Tiller se comunica con Kube-apiserver para realizar acciones en Kubernetes, crear ciertos objetos (servicios, pods, r\u00e9plicas, secretos, etc.).<\/li>\n<\/ul>\n<p>\nA continuaci\u00f3n, complicaremos el esquema para ver el vector de ataques al que puede estar expuesta toda la arquitectura de Helm en general. Luego intentaremos protegerlo.<\/p>\n<h3>Vector de ataques<\/h3>\n<p>\nEl primer punto potencialmente d\u00e9bil es <strong>el API privilegiado<\/strong>\u2014<strong>usuario<\/strong>Dentro del esquema, este es un hacker que ha obtenido acceso de administrador al Helm CLI.<\/p>\n<p><strong>Un usuario API no privilegiado<\/strong> tambi\u00e9n puede representar un peligro si est\u00e1 cerca. Este usuario tendr\u00e1 un contexto diferente; por ejemplo, puede estar registrado en un namespace del cl\u00faster en la configuraci\u00f3n de Kubeconfig.<\/p>\n<p>El vector de ataque m\u00e1s interesante puede ser un proceso que se encuentra dentro del cl\u00faster cerca de Tiller y puede interactuar con \u00e9l. Esto puede ser un servidor web o un microservicio que ve el entorno de red del cl\u00faster.<\/p>\n<p>Una opci\u00f3n ex\u00f3tica, pero en aumento, de ataque est\u00e1 relacionada con Chart Repo. Un chart creado por un autor malintencionado puede contener recursos inseguros y usted lo ejecutar\u00e1 confiando en \u00e9l. O puede reemplazar el chart que descarga del repositorio oficial y, por ejemplo, crear recursos en forma de pol\u00edticas y escalar su acceso.<\/p>\n<p><img decoding=\"async\" alt=\"Seguridad de Helm\" src=\"\/wp-content\/uploads\/2019\/08\/2828046feb9ba8413a1b0e8741b4c354.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIntentaremos defendernos de ataques desde estos cuatro frentes y analizar d\u00f3nde est\u00e1n los problemas en la arquitectura de Helm y d\u00f3nde, tal vez, no los hay.<\/p>\n<p>Simplifiquemos el esquema, a\u00f1adamos m\u00e1s elementos, pero conservemos todos los componentes b\u00e1sicos.<\/p>\n<p><img decoding=\"async\" alt=\"Seguridad de Helm\" src=\"\/wp-content\/uploads\/2019\/08\/4110898e79619b8546408c668c48da0d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHelm CLI se comunica con Chart Repo, interact\u00faa con Kubeconfig, y la operaci\u00f3n se env\u00eda al cl\u00faster en el componente Tiller.<\/p>\n<p>Tiller se presenta en dos objetos:<\/p>\n<ul>\n<li>Tiller-deploy svc, que expone un servicio;<\/li>\n<li>Tiller-deploy pod (en el esquema, un \u00fanico ejemplar en una r\u00e9plica), donde se ejecuta toda la carga de trabajo y que se comunica con el cl\u00faster.<\/li>\n<\/ul>\n<p>\nSe utilizan diferentes protocolos y esquemas para la interacci\u00f3n. Desde el punto de vista de la seguridad, los m\u00e1s interesantes son:<\/p>\n<ul>\n<li>El mecanismo mediante el cual Helm CLI se conecta al chart repo: qu\u00e9 protocolo se utiliza, si hay autenticaci\u00f3n y qu\u00e9 se puede hacer al respecto.<\/li>\n<li>El protocolo por el cual Helm CLI, usando kubectl, se comunica con Tiller. Este es un servidor RPC instalado dentro del cl\u00faster.<\/li>\n<li>El mismo Tiller est\u00e1 disponible para los microservicios que se encuentran en el cl\u00faster y interact\u00faa con Kube-apiserver.<\/li>\n<\/ul>\n<p>\n<img decoding=\"async\" alt=\"Seguridad de Helm\" src=\"\/wp-content\/uploads\/2019\/08\/19e7e085567f3bbb49746e6402926bd6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDiscutamos todas estas direcciones por orden.<\/p>\n<h2>RBAC<\/h2>\n<p><\/p>\n<blockquote><p>Es in\u00fatil hablar de seguridad en Helm o cualquier otro servicio dentro del cl\u00faster si RBAC no est\u00e1 habilitado.<\/p><\/blockquote>\n<p>\nParece que esta no es la recomendaci\u00f3n m\u00e1s reciente, pero estoy seguro de que todav\u00eda muchos no han habilitado RBAC ni siquiera en producci\u00f3n, porque implica mucho trabajo y se necesita configurar muchas cosas. Sin embargo, insto a hacerlo.<\/p>\n<p><img decoding=\"async\" alt=\"Seguridad de 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 abogado del sitio para RBAC. All\u00ed se re\u00fane una gran cantidad de materiales interesantes que ayudar\u00e1n a configurar RBAC, mostrar\u00e1n por qu\u00e9 es bueno y c\u00f3mo se puede vivir con \u00e9l en producci\u00f3n.<\/p>\n<p>Intentar\u00e9 explicar c\u00f3mo funciona Tiller y RBAC. Tiller opera dentro del cl\u00faster bajo alguna cuenta de servicio. Como regla general, si RBAC no est\u00e1 configurado, ser\u00e1 un superusuario. En la configuraci\u00f3n b\u00e1sica, Tiller ser\u00e1 el administrador. Por eso se dice a menudo que Tiller es un t\u00fanel SSH a su cl\u00faster. En realidad, es as\u00ed, por lo que se puede usar una cuenta de servicio especializada en lugar de la Cuenta de Servicio Predeterminada en el esquema anterior.<\/p>\n<p>Cuando inicializa Helm, al instalarlo por primera vez en el servidor, puede especificar la cuenta de servicio mediante <code>--service-account<\/code>. Esto permitir\u00e1 usar un usuario con el conjunto m\u00ednimo de permisos necesarios. Sin embargo, tendr\u00e1s que crear un \"collar\" as\u00ed: Role y RoleBinding.<\/p>\n<p><img decoding=\"async\" alt=\"Seguridad de Helm\" src=\"\/wp-content\/uploads\/2019\/08\/ec805cde756495cfd5c480ac40739c43.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDesafortunadamente, Helm no har\u00e1 esto por usted. Usted o su administrador del cl\u00faster de Kubernetes deben preparar de antemano un conjunto de Role y RoleBinding para la cuenta de servicio para pasar a Helm.<\/p>\n<p>Surge la pregunta: \u00bfcu\u00e1l es la diferencia entre Role y ClusterRole? La diferencia es que ClusterRole act\u00faa para todos los namespaces, a diferencia de las Role y RoleBinding normales, que solo funcionan para un namespace espec\u00edfico. Se pueden configurar pol\u00edticas tanto para todo el cl\u00faster y todos los namespaces, como de manera personalizada para cada namespace individualmente.<\/p>\n<p>Cabe mencionar que RBAC tambi\u00e9n permite resolver otro gran problema. Muchos se quejan de que Helm, desafortunadamente, no es multitenancy (no soporta multiarrendamiento). Si varios equipos utilizan el cl\u00faster y usan Helm, en principio no es posible configurar pol\u00edticas y restringir su acceso dentro de este cl\u00faster, porque hay una cuenta de servicio bajo la cual Helm opera, y crea todos los recursos en el cl\u00faster desde ah\u00ed, lo que a veces es muy inconveniente. Esto es cierto: tanto el archivo binario como el proceso, <strong>Helm Tiller no tiene concepto de multitenancy<\/strong>.<\/p>\n<p>Sin embargo, hay una excelente manera de ejecutar Tiller en el cl\u00faster varias veces. No hay ning\u00fan problema con esto, Tiller se puede ejecutar en cada namespace. De esta forma, puede aprovechar RBAC, Kubeconfig como contexto y restringir el acceso a un Helm especial.<\/p>\n<p>Esto se ver\u00e1 de la siguiente manera.<\/p>\n<p><img decoding=\"async\" alt=\"Seguridad de Helm\" src=\"\/wp-content\/uploads\/2019\/08\/eae922c7b5e1422fb51667364ed79e0a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPor ejemplo, hay dos Kubeconfig con contexto para diferentes equipos (dos namespaces): el equipo X para el equipo de desarrollo y un cl\u00faster de administraci\u00f3n. El cl\u00faster de administraci\u00f3n tiene su propio Tiller amplio, que se encuentra en el espacio de nombres Kube-system, por lo tanto, una cuenta de servicio avanzada. Y un namespace separado para el equipo de desarrollo, que podr\u00e1 desplegar sus servicios en un namespace espec\u00edfico.<\/p>\n<p>Este es un enfoque pr\u00e1ctico, Tiller no es tan voraz como para que esto afecte seriamente su presupuesto. Esta es una de las soluciones r\u00e1pidas.<\/p>\n<blockquote><p>No dude en configurar Tiller por separado y proporcionar Kubeconfig con contexto para el equipo, para un desarrollador espec\u00edfico o para entornos: Dev, Staging, Production (aunque es poco probable que todo est\u00e9 en un solo cl\u00faster, sin embargo, se puede hacer).<\/p><\/blockquote>\n<p>\nContinuando con nuestra historia, cambiemos de RBAC y hablemos sobre ConfigMaps.<\/p>\n<h3>ConfigMaps<\/h3>\n<p>\nHelm utiliza ConfigMaps como almac\u00e9n de datos. Cuando hablamos de la arquitectura, no hab\u00eda ninguna base de datos donde se almacenara informaci\u00f3n sobre lanzamientos, configuraciones, retrocesos, etc. Para esto se utilizan ConfigMaps.<\/p>\n<p>El principal problema con los ConfigMaps es conocido: no son seguros en principio, en ellos <strong>no se pueden almacenar datos sensibles<\/strong>. Se trata de todo lo que no deber\u00eda salir del servicio, como contrase\u00f1as. El m\u00e9todo m\u00e1s nativo para Helm actualmente es pasar del uso de ConfigMaps a secretos.<\/p>\n<p>Esto se hace de manera muy sencilla. Sobrescribe la configuraci\u00f3n de Tiller y especifica que el almac\u00e9n ser\u00e1n secretos. Entonces, en cada despliegue recibir\u00e1s no un ConfigMap, sino un secreto.<\/p>\n<p><img decoding=\"async\" alt=\"Seguridad de Helm\" src=\"\/wp-content\/uploads\/2019\/08\/7fd12bfbed5c6c8111a5126c2ab9f853.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPuede objetar que los secretos en s\u00ed son un concepto extra\u00f1o y que no es muy seguro. Sin embargo, hay que entender que esto lo manejan los mismos desarrolladores de Kubernetes. Desde la versi\u00f3n 1.10, es posible, al menos en nubes p\u00fablicas, conectar un almacenamiento adecuado para almacenar secretos. Ahora, el equipo est\u00e1 trabajando para otorgar a\u00fan mejor acceso a secretos, a pods individuales u otras entidades.<\/p>\n<blockquote><p>Es mejor que el almacenamiento de Helm pase a ser secretos, y estos, a su vez, se aseguren de forma centralizada.<\/p><\/blockquote>\n<p>\nPor supuesto, quedar\u00e1 <strong>un l\u00edmite de almacenamiento de datos de 1 MB<\/strong>. Helm utiliza etcd aqu\u00ed como un almac\u00e9n distribuido para ConfigMaps. All\u00ed se consider\u00f3 que este era un fragmento de datos adecuado para replicaciones, etc. Hay una discusi\u00f3n interesante al respecto en Reddit; recomiendo encontrar esta lectura divertida para el fin de semana o leer un resumen. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/helm\/helm\/issues\/1413\">aqu\u00ed<\/a><\/noindex>.<\/p>\n<h3>Repositorios de Chart<\/h3>\n<p>\nLos charts son los m\u00e1s vulnerables socialmente y pueden convertirse en una fuente de \"Man in the middle\", especialmente si se utiliza una soluci\u00f3n est\u00e1ndar. Esto se refiere principalmente a los repositorios que est\u00e1n expuestos a trav\u00e9s de HTTP.<\/p>\n<blockquote><p>Definitivamente, es necesario exponer el Helm Repo a trav\u00e9s de HTTPS; es la mejor opci\u00f3n y no es costosa.<\/p><\/blockquote>\n<p>\nPresta atenci\u00f3n a <strong>mecanismo de firmas de charts<\/strong>. La tecnolog\u00eda es incre\u00edblemente simple. Es lo mismo que usas en GitHub, una m\u00e1quina PGP ordinaria con claves p\u00fablicas y privadas. Config\u00faralo y estar\u00e1s seguro, siempre que tengas las claves necesarias y firmes todo, asegur\u00e1ndote de que realmente sea tu chart.<\/p>\n<p>Adem\u00e1s, <strong>El cliente de Helm soporta TLS<\/strong> (no en el sentido de HTTP desde el servidor, sino TLS mutuo). Puedes usar claves del servidor y del cliente para comunicarte. Debo decir honestamente que no utilizo este mecanismo debido a mi desagrado por los certificados mutuos. En principio, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/helm\/chartmuseum\">chartmuseum<\/a><\/noindex> \u2014 la herramienta principal para exponer Helm Repo para Helm 2, tambi\u00e9n soporta autenticaci\u00f3n b\u00e1sica. Se puede usar autenticaci\u00f3n b\u00e1sica si eso es m\u00e1s conveniente y tranquilizador.<\/p>\n<p>Tambi\u00e9n hay un plugin <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/hayorov\/helm-gcs\">helm-gcs<\/a><\/noindex>, que permite alojar Chart Repos en Google Cloud Storage. Esto es bastante conveniente, funciona perfectamente y es bastante seguro, ya que se utilizan todos los mecanismos descritos.<\/p>\n<p><img decoding=\"async\" alt=\"Seguridad de Helm\" src=\"\/wp-content\/uploads\/2019\/08\/6a72bfd96c7eb0e2fdd7bcbf128e6433.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSi habilitas HTTPS o TLS, usas mTLS, y conectas autenticaci\u00f3n b\u00e1sica para reducir a\u00fan m\u00e1s los riesgos, se obtiene un canal de comunicaci\u00f3n seguro entre Helm CLI y Chart Repo.<\/p>\n<h3>API gRPC<\/h3>\n<p>\nEl siguiente paso es muy responsable: asegurar Tiller, que se encuentra en el cl\u00faster y que, por un lado, es el servidor, y por otro, se comunica con otros componentes y trata de hacerse pasar por otro.<\/p>\n<p>Como ya mencion\u00e9, Tiller es un servicio que expone gRPC; el cliente de Helm se conecta a \u00e9l a trav\u00e9s de gRPC. Por defecto, por supuesto, TLS est\u00e1 desactivado. La raz\u00f3n de esto es un tema debatible; creo que se hizo para simplificar la configuraci\u00f3n al principio.<\/p>\n<blockquote><p>Para producci\u00f3n e incluso para staging, recomiendo habilitar TLS en gRPC.<\/p><\/blockquote>\n<p>\nEn mi opini\u00f3n, a diferencia de mTLS para charts, aqu\u00ed es apropiado y se hace muy f\u00e1cilmente: se genera infraestructura PQI, se crea un certificado, se inicia Tiller, y se pasa el certificado durante la inicializaci\u00f3n. Despu\u00e9s de esto, se pueden ejecutar todos los comandos de Helm, present\u00e1ndose con el certificado generado y la clave privada.<\/p>\n<p><img decoding=\"async\" alt=\"Seguridad de Helm\" src=\"\/wp-content\/uploads\/2019\/08\/ed55b9a465ed1278b272c52c90b2b345.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDe esta manera, te proteger\u00e1s de todas las solicitudes a Tiller desde fuera del cl\u00faster.<\/p>\n<p>As\u00ed que hemos asegurado el canal de conexi\u00f3n a Tiller, ya hemos discutido RBAC y ajustado los permisos del apiserver de Kubernetes, y hemos reducido el dominio con el que puede interactuar.<\/p>\n<h2>Helm Seguro<\/h2>\n<p>\nVeamos el esquema final. Es la misma arquitectura con las mismas flechas.<\/p>\n<p><img decoding=\"async\" alt=\"Seguridad de Helm\" src=\"\/wp-content\/uploads\/2019\/08\/6672e254ad93b917f57794e1619a572e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTodas las conexiones ahora se pueden dibujar con confianza en verde:<\/p>\n<ul>\n<li>para Chart Repo usamos TLS o mTLS y autenticaci\u00f3n b\u00e1sica;<\/li>\n<li>mTLS para Tiller, que se presenta como un servicio gRPC con TLS, usando certificados;<\/li>\n<li>en el cl\u00faster se utiliza una cuenta de servicio especial con Role y RoleBinding.\u00a0<\/li>\n<\/ul>\n<p>\nHemos asegurado notablemente el cl\u00faster, pero alguien inteligente dijo:<\/p>\n<blockquote><p>\u00abLa \u00fanica soluci\u00f3n absolutamente segura puede ser una \u2014 un ordenador apagado, que se encuentra en una caja de concreto y es custodiado por soldados\u00bb.<\/p><\/blockquote>\n<p>\nExisten diferentes formas de manipular datos y encontrar nuevos vectores de ataque. Sin embargo, estoy seguro de que estas recomendaciones permitir\u00e1n implementar un est\u00e1ndar de seguridad industrial b\u00e1sico.<\/p>\n<h2>Bono<\/h2>\n<p>\nEsta parte no se relaciona directamente con la seguridad, pero tambi\u00e9n ser\u00e1 \u00fatil. Mostrar\u00e9 algunas cosas interesantes que pocos conocen. Por ejemplo, c\u00f3mo buscar charts \u2014 oficiales y no oficiales.<\/p>\n<p>En el repositorio <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/helm\/charts\">github.com\/helm\/charts<\/a><\/noindex> en este momento hay alrededor de 300 charts y dos flujos: stable e incubator. Quien contribuye sabe lo dif\u00edcil que es pasar de incubator a stable, y lo f\u00e1cil que es salir de stable. Sin embargo, no es la mejor herramienta para buscar charts para Prometheus y todo lo que te guste, por una simple raz\u00f3n: no es un portal donde sea conveniente buscar paquetes.<\/p>\n<p>Pero hay un servicio <noindex><a rel=\"nofollow\" href=\"https:\/\/hub.helm.sh\/\">hub.helm.sh<\/a><\/noindex>, con el que encontrar charts es mucho m\u00e1s conveniente. Lo m\u00e1s importante es que hay muchos m\u00e1s repositorios externos y est\u00e1n disponibles casi 800 charts. Adem\u00e1s, puedes conectar tu propio repositorio si, por alguna raz\u00f3n, no quieres enviar tus charts a stable.<\/p>\n<p>Intenta hub.helm.sh y desarrollemos juntos. Este servicio est\u00e1 bajo el proyecto Helm, y puedes contribuir incluso en su UI, si eres frontend y solo quieres mejorar la apariencia.<\/p>\n<p>Tambi\u00e9n quiero llamar su atenci\u00f3n sobre <strong>la integraci\u00f3n de Open Service Broker API<\/strong>. Suena complicado y confuso, pero resuelve problemas con los que todos se enfrentan. Perm\u00edtanme explicarlo con un ejemplo simple.<\/p>\n<p><img decoding=\"async\" alt=\"Seguridad de Helm\" src=\"\/wp-content\/uploads\/2019\/08\/3aeb7e0781e50a79b518f1056873f73a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHay un cl\u00faster de Kubernetes en el que queremos ejecutar una aplicaci\u00f3n cl\u00e1sica: WordPress. Por lo general, para el funcionamiento completo se necesita una base de datos. Hay muchas soluciones diferentes, por ejemplo, se puede ejecutar su servicio stateful. Esto no es muy conveniente, pero muchos lo hacen.<\/p>\n<p>Otros, como nosotros en Chainstack, utilizan bases de datos gestionadas, como MySQL o PostgreSQL, para servidores. Por lo tanto, nuestra base de datos se encuentra en la nube.<\/p>\n<p>Pero surge un problema: es necesario vincular nuestro servicio con la base de datos, crear un sabor de base de datos, pasar las credenciales y gestionarlas de alguna manera. Todo esto se suele hacer manualmente por un administrador del sistema o un desarrollador. No hay problema cuando hay pocas aplicaciones. Cuando hay muchas, se necesita un combinado. Ese combinado existe: es el Service Broker. Permite utilizar un complemento especial para el cl\u00faster de la nube p\u00fablica y solicitar recursos al proveedor a trav\u00e9s del Broker, como si fuera una API. Para ello se pueden utilizar los medios nativos de Kubernetes.<\/p>\n<p>Es muy simple. Se puede solicitar, por ejemplo, Managed MySQL en Azure con un nivel b\u00e1sico (esto se puede configurar). Utilizando la API de Azure, la base de datos ser\u00e1 creada y preparada para su uso. No necesitar\u00e1 intervenir en esto, el complemento se encargar\u00e1. Por ejemplo, OSBA (el complemento de Azure) devolver\u00e1 las credenciales al servicio y se las pasar\u00e1 a Helm. Podr\u00e1 utilizar WordPress con MySQL en la nube, sin preocuparse por las bases de datos gestionadas ni por los servicios stateful internos.<\/p>\n<blockquote><p>Se puede decir que Helm act\u00faa como el pegamento que, por un lado, permite desplegar servicios y, por otro, consumir recursos de los proveedores de la nube.<\/p><\/blockquote>\n<p>\nSe puede escribir su propio complemento y utilizar toda esta historia on-premise. Entonces simplemente tendr\u00e1 su propio complemento para el proveedor de nube corporativa. Recomiendo probar este enfoque, especialmente si tiene un gran volumen y desea desplegar r\u00e1pidamente dev, staging o toda la infraestructura para una funci\u00f3n. Esto facilitar\u00e1 la vida a sus operaciones o DevOps.<\/p>\n<p>Otro hallazgo que ya mencion\u00e9 es <strong>el complemento helm-gcs<\/strong>, que permite utilizar Google-buckets (almacenamiento de objetos) para almacenar gr\u00e1ficos de Helm.<\/p>\n<p><img decoding=\"async\" alt=\"Seguridad de Helm\" src=\"\/wp-content\/uploads\/2019\/08\/30888c4f9b5dba14b87ba1e29e0ebed7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSe necesitan solo cuatro comandos para empezar a usarlo:<\/p>\n<ol>\n<li>instalar el complemento;<\/li>\n<li>inicializarlo;<\/li>\n<li>establecer la ruta al bucket que se encuentra en gcp;<\/li>\n<li>publicar los gr\u00e1ficos de la manera est\u00e1ndar.<\/li>\n<\/ol>\n<p>\nLa belleza es que se utilizar\u00e1 el m\u00e9todo nativo de gcp para la autorizaci\u00f3n. Puede usar una cuenta de servicio, una cuenta de desarrollador, lo que sea. Esto es muy conveniente y no tiene costo en la operaci\u00f3n. Si usted, al igual que yo, promueve la filosof\u00eda opsless, esto ser\u00e1 muy \u00fatil, especialmente para equipos peque\u00f1os.<\/p>\n<h2>Alternativas<\/h2>\n<p>\nHelm no es la \u00fanica soluci\u00f3n para la gesti\u00f3n de servicios. Tiene muchas preguntas, probablemente por eso r\u00e1pidamente apareci\u00f3 la tercera versi\u00f3n. Claro, hay alternativas.<\/p>\n<p>Pueden ser soluciones especializadas, como Ksonnet o Metaparticle. Tambi\u00e9n puede utilizar sus herramientas cl\u00e1sicas de gesti\u00f3n de infraestructura (Ansible, Terraform, Chef, etc.) para los mismos fines de los que habl\u00e9.<\/p>\n<p>Finalmente, hay una soluci\u00f3n <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/operator-framework\">Exactamente, con el advenimiento de OpenShift 4, ya no es necesario conectarse a hosts separados e instalar el motor de contenedor, configurar almacenamiento, ajustar servidores para b\u00fasqueda o configurar la red. La plataforma OpenShift 4 ha sido completamente redise\u00f1ada para utilizar el<\/a><\/noindex>, cuya popularidad est\u00e1 creciendo.<\/p>\n<blockquote><p>Operator Framework es la principal alternativa a Helm, a la que se debe prestar atenci\u00f3n.<\/p><\/blockquote>\n<p>\nEs m\u00e1s nativa para CNCF y Kubernetes, <strong>pero la barrera de entrada es mucho m\u00e1s alta<\/strong>, se necesita programar m\u00e1s y describir menos manifiestos.<\/p>\n<p>Hay varios complementos, como Draft, Scaffold. Facilitan enormemente la vida, por ejemplo, simplificando el ciclo de env\u00edo y ejecuci\u00f3n de Helm para desplegar entornos de prueba. Los llamar\u00eda potenciadores.<\/p>\n<p>Aqu\u00ed hay un gr\u00e1fico ilustrativo sobre d\u00f3nde se encuentra cada cosa.<\/p>\n<p><img decoding=\"async\" alt=\"Seguridad de Helm\" src=\"\/wp-content\/uploads\/2019\/08\/81a8236c975d5e1649acaaa7989c27ba.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEn el eje x, el nivel de su control personal sobre lo que sucede, en el eje y, el nivel de natividad de Kubernetes. Helm versi\u00f3n 2 se encuentra en alg\u00fan lugar a medio camino. En la versi\u00f3n 3, aunque no es colosal, se han mejorado tanto el control como el nivel de natividad. Las soluciones de Ksonnet a\u00fan quedan atr\u00e1s incluso de Helm 2. Sin embargo, vale la pena echarles un vistazo para saber qu\u00e9 m\u00e1s hay en este mundo. Claro, su gestor de configuraciones estar\u00e1 bajo control, pero no es absolutamente nativo para Kubernetes.<\/p>\n<p>Operator Framework es absolutamente nativo para Kubernetes y permite gestionarlo de manera mucho m\u00e1s elegante y meticulosa (pero recordemos el nivel de entrada). M\u00e1s bien, esto se adapta a aplicaciones especializadas y a la creaci\u00f3n de su gesti\u00f3n, en lugar de ser una planta de uso masivo para empaquetar una gran cantidad de aplicaciones con Helm.<\/p>\n<p>Los potenciadores simplemente mejoran un poco el control, complementan el flujo de trabajo o acortan los \u00e1ngulos de los pipelines de CI\/CD.<\/p>\n<h2>El futuro de Helm<\/h2>\n<p>\nLa buena noticia es que Helm 3 ya est\u00e1 aqu\u00ed. Se ha lanzado la versi\u00f3n alpha 3.0.0-alpha.2 de Helm, y ya se puede probar. Es bastante estable, pero la funcionalidad todav\u00eda est\u00e1 limitada.<\/p>\n<p>\u00bfPara qu\u00e9 se necesita Helm 3? En primer lugar, se trata de <strong>la desaparici\u00f3n de Tiller<\/strong>, como componente. Esto, como ya pueden entender, es un gran avance, ya que desde el punto de vista de la seguridad de la arquitectura, todo se simplifica.<\/p>\n<p>Cuando se cre\u00f3 Helm 2, que fue en los tiempos de Kubernetes 1.8 o incluso antes, muchas de las concepciones eran inmaduras. Por ejemplo, la concepci\u00f3n de CRD se est\u00e1 implementando activamente ahora, y Helm va a <strong>usar CRD<\/strong>, para almacenar estructuras. Ser\u00e1 posible usar solo el cliente y no tener la parte del servidor. Por lo tanto, se podr\u00e1n utilizar comandos nativos de Kubernetes para trabajar con las estructuras y recursos. Esto es un gran avance.<\/p>\n<p>Habr\u00e1 <strong>soporte nativo para repositorios OCI<\/strong> (Open Container Initiative). Esta es una gran iniciativa, y Helm le interesa principalmente para alojar sus charts. Llega al punto de que, por ejemplo, Docker Hub soporta muchos est\u00e1ndares OCI. No quiero adelantarme, pero es posible que los proveedores cl\u00e1sicos de repositorios Docker comiencen a permitirte alojar tus Helm charts.<\/p>\n<p>Una historia controvertida para m\u00ed es <strong>el soporte para Lua<\/strong>, como motor de plantillas para escribir scripts. No soy un gran fan de Lua, pero ser\u00e1 una opci\u00f3n completamente opcional. Lo he verificado tres veces: el uso de Lua no ser\u00e1 obligatorio. As\u00ed que aquellos que quieran usar Lua, bienvenidos; quienes prefieren Go, \u00fananse a nuestro gran grupo y usen go-tmpl para eso.<\/p>\n<p>Finalmente, lo que definitivamente me hac\u00eda falta es <strong>la aparici\u00f3n de esquemas y la validaci\u00f3n de tipos de datos<\/strong>. Ya no habr\u00e1 problemas con int o string, no ser\u00e1 necesario envolver cero entre comillas dobles. Habr\u00e1 un esquema JSON que permitir\u00e1 describirlo claramente para los values.<\/p>\n<p>Se revisar\u00e1 por completo el <strong>modelo basado en eventos<\/strong>. Ya est\u00e1 descrito conceptualmente. Miren la rama Helm 3, y ver\u00e1n cu\u00e1ntos eventos, hooks y otras cosas se han a\u00f1adido, lo que simplificar\u00e1 y, por otro lado, proporcionar\u00e1 m\u00e1s control sobre los procesos de despliegue y sus reacciones.<\/p>\n<p>Helm 3 ser\u00e1 m\u00e1s simple, seguro e interesante no porque no nos guste Helm 2, sino porque Kubernetes se est\u00e1 volviendo m\u00e1s avanzado. Por lo tanto, Helm podr\u00e1 aprovechar los avances de Kubernetes y crear excelentes gestores para Kubernetes.<\/p>\n<blockquote><p>Otra buena noticia es que en <noindex><a rel=\"nofollow\" href=\"https:\/\/devopsconf.io\/moscow\/2019\">DevOpsConf<\/a><\/noindex> Alexandr Ha\u00ebrov explicar\u00e1, <noindex><a rel=\"nofollow\" href=\"https:\/\/devopsconf.io\/moscow\/2019\/abstracts\/5564\">\u00bfpueden ser seguros los contenedores?<\/a><\/noindex> Cabe recordar que la conferencia sobre la integraci\u00f3n de procesos de desarrollo, prueba y operaci\u00f3n se llevar\u00e1 a cabo en Mosc\u00fa <strong>el 30 de septiembre y 1 de octubre<\/strong>. Hasta el 20 de agosto a\u00fan puedes <noindex><a rel=\"nofollow\" href=\"https:\/\/conf.ontico.ru\/lectures\/propose\/?conference=dc2019-moscow\">presentar una ponencia.<\/a><\/noindex> y compartir tu experiencia en la resoluci\u00f3n de <noindex><a rel=\"nofollow\" href=\"https:\/\/devopsconf.io\/moscow\/2019\/articles\/917\">uno de los muchos<\/a><\/noindex> retos del enfoque DevOps.<\/p>\n<p>Sigue los puntos clave de la conferencia y las noticias en <noindex><a rel=\"nofollow\" href=\"http:\/\/eepurl.com\/bN_0E1\">el bolet\u00edn<\/a><\/noindex> y <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/DevOpsConfChannel\">el canal de telegram<\/a><\/noindex>.<\/p><\/blockquote>\n<p>Fuente: <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.2 - 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\/es\/blog\/administrirovanie\/bezopasnost-helm\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"es_ES\" \/>\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\/es\/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\udd47Seguridad de Helm | ProHoster","description":"El mensaje esencial sobre el gestor de paquetes m\u00e1s popular para Kubernetes podr\u00eda representarse con un emoji: la caja es Helm (es lo m\u00e1s apropiado en la \u00faltima versi\u00f3n de Emoji);","canonical_url":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/bezopasnost-helm","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"es_ES","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\/es\/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\/es\/wp-json\/wp\/v2\/posts\/36918","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/comments?post=36918"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/36918\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media\/27661"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media?parent=36918"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/categories?post=36918"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/tags?post=36918"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}