{"id":6778,"date":"2020-12-03T10:02:26","date_gmt":"2020-12-03T10:02:26","guid":{"rendered":"https:\/\/bluetab.net\/?p=6597"},"modified":"2020-12-03T10:02:26","modified_gmt":"2020-12-03T10:02:26","slug":"hashicorp-boundary","status":"publish","type":"post","link":"https:\/\/bluetab.es\/en\/2020\/12\/hashicorp-boundary\/","title":{"rendered":"Hashicorp Boundary"},"content":{"rendered":"<h1>Hashicorp Series Boundary<\/h1>\n<p>Share on twitter<br \/>\nShare on linkedin<\/p>\n<figure><a href=\"https:\/\/www.linkedin.com\/in\/jperez-7a0734112\/\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" src=\"https:\/\/bluetab.net\/wp-content\/uploads\/2020\/12\/Javier-Perez.jpg\" title=\"\" alt=\"\"><\/a><\/figure>\n<h4><a href=\"https:\/\/www.linkedin.com\/in\/jperez-7a0734112\/\" target=\"_blank\" rel=\"noopener\">Javier P\u00e9rez<\/a><\/h4>\n<p>DevOps Engineer<\/p>\n<figure><a href=\"https:\/\/www.linkedin.com\/in\/javier-rodriguez-87541a32\/\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" src=\"https:\/\/bluetab.net\/wp-content\/uploads\/2020\/12\/Javieer-Rodriguez.jpg\" title=\"\" alt=\"\"><\/a><\/figure>\n<h4><a href=\"https:\/\/www.linkedin.com\/in\/javier-rodriguez-87541a32\/\" target=\"_blank\" rel=\"noopener\">Javier Rodriguez<\/a><\/h4>\n<p>Cloud DevOps<\/p>\n<figure><a href=\"https:\/\/www.linkedin.com\/in\/jorge-de-diego\/\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" width=\"150\" height=\"150\" src=\"https:\/\/bluetab.net\/wp-content\/uploads\/2020\/08\/Jorge-Diego-150x150.jpg\" alt=\"\" loading=\"lazy\" srcset=\"https:\/\/bluetab.net\/wp-content\/uploads\/2020\/08\/Jorge-Diego-150x150.jpg 150w, https:\/\/bluetab.net\/wp-content\/uploads\/2020\/08\/Jorge-Diego-75x75.jpg 75w, https:\/\/bluetab.net\/wp-content\/uploads\/2020\/08\/Jorge-Diego.jpg 200w\" sizes=\"(max-width: 150px) 100vw, 150px\"><\/a><\/figure>\n<h4><a href=\"https:\/\/www.linkedin.com\/in\/jorge-de-diego\/\" target=\"_blank\" rel=\"noopener\"> Jorge de Diego<\/a><\/h4>\n<p>Cloud DevOps Engineer<\/p>\n<p>Despu\u00e9s de la \u00faltima HashiConf Digital, desde la Pr\u00e1ctica Cloud os queremos ense\u00f1ar una de las principales novedades que fueron presentadas: Boundary. En este post vamos a comentar qu\u00e9 es esta nueva herramienta, por qu\u00e9 es interesante, qu\u00e9 nos ha parecido y c\u00f3mo lo hemos probado.<\/p>\n<h2>\u00bfQu\u00e9 es Hashicorp Boundary?<\/h2>\n<p dir=\"auto\" data-sourcepos=\"10:1-17:80\">Hashicorp Boundary es, como ellos mismos declaran, una herramienta que permite acceder a cualquier sistema utilizando la identidad como pieza fundamental. \u00bfEsto qu\u00e9 significa? Tradicionalmente, cuando un usuario adquiere el permiso de acceder a un servicio remoto, tambi\u00e9n obtiene el permiso expl\u00edcito a la red donde se encuentra ubicado. Sin embargo, Boundary nos proporcionar\u00e1 un sistema basado en el m\u00ednimo privilegio posible cuando los usuarios necesitan acceder a aplicaciones o m\u00e1quinas. Por ejemplo, es una forma de acceder mediante SSH a un \u00fanico servidor utilizando como m\u00e9todo de autenticaci\u00f3n unas claves ef\u00edmeras.<\/p>\n<p dir=\"auto\" data-sourcepos=\"19:1-20:81\">Esto quiere decir que Boundary limita a qu\u00e9 recursos te puedes conectar y adem\u00e1s gestiona los diferentes permisos y accesos a los recursos con una autenticaci\u00f3n.<\/p>\n<p dir=\"auto\" data-sourcepos=\"22:1-25:10\">Es especialmente interesante porque en el futuro va a estar marcado por la fuerte integraci\u00f3n que tendr\u00e1 con otras herramientas de Hashicorp, especialmente con Vault para la gesti\u00f3n de credenciales, as\u00ed como con sus funciones de auditoria.<\/p>\n<p dir=\"auto\" data-sourcepos=\"27:1-30:51\">Por si ten\u00e9is curiosidad, Hashicorp ha liberado el c\u00f3digo fuente de <a href=\"https:\/\/github.com\/hashicorp\/boundary\" target=\"_blank\" rel=\"nofollow noreferrer noopener\">Boundary<\/a> el cual ten\u00e9is disponible en Github y la documentaci\u00f3n oficial la podr\u00e9is leer en su pagina web: <a href=\"https:\/\/www.boundaryproject.io\/\" target=\"_blank\" rel=\"nofollow noreferrer noopener\">boundaryproject<\/a>.<\/p>\n<h2>\u00bfC\u00f3mo hemos puesto a prueba Boundary?<\/h2>\n<p dir=\"auto\" data-sourcepos=\"34:1-40:9\">Partiendo de un proyecto de Hashicorp de <a href=\"https:\/\/github.com\/hashicorp\/boundary-reference-architecture\" target=\"_blank\" rel=\"nofollow noreferrer noopener\">ejemplo<\/a>, se ha desarrollado una peque\u00f1a prueba de concepto que despliega Boundary en un escenario <em>hybrid-cloud<\/em> en AWS y GCP. Aunque la arquitectura de referencia no dec\u00eda nada con respecto a este dise\u00f1o, nosotros hemos querido darle una vuelta y montar un peque\u00f1o escenario <em>multi-cloud<\/em> para ver c\u00f3mo se comporta este nuevo producto.<\/p>\n<p dir=\"auto\" data-sourcepos=\"42:1-42:42\">La arquitectura final a grandes rasgos es:<\/p>\n<p>\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"1024\" height=\"832\" src=\"https:\/\/bluetab.net\/wp-content\/uploads\/2020\/12\/functional-arch-1024x832.png\" alt=\"\" loading=\"lazy\" srcset=\"https:\/\/bluetab.net\/wp-content\/uploads\/2020\/12\/functional-arch-1024x832.png 1024w, https:\/\/bluetab.net\/wp-content\/uploads\/2020\/12\/functional-arch-300x244.png 300w, https:\/\/bluetab.net\/wp-content\/uploads\/2020\/12\/functional-arch-768x624.png 768w, https:\/\/bluetab.net\/wp-content\/uploads\/2020\/12\/functional-arch.png 1479w\" sizes=\"(max-width: 1024px) 100vw, 1024px\"><\/p>\n<p dir=\"auto\" data-sourcepos=\"46:1-51:65\">Una vez desplegada la infraestructura y configurada la aplicaci\u00f3n hemos probado a conectarnos a las instancias mediante SSH. Todo el c\u00f3digo fuente se basa en terraform 0.13 y lo podr\u00e9is encontrar en <a href=\"https:\/\/github.com\/Bluetab\/boundary-hybrid-architecture\" target=\"_blank\" rel=\"nofollow noreferrer noopener\">Bluetab-boundary-hybrid-architecture<\/a>, en donde tambi\u00e9n encontrar\u00e9is un README detallado que especifica las acciones que ten\u00e9is que seguir para reproducir el entorno, en particular:<\/p>\n<ol dir=\"auto\" data-sourcepos=\"53:1-60:0\">\n<li data-sourcepos=\"53:1-56:0\">\n<p data-sourcepos=\"53:4-55:55\">Autenticaci\u00f3n con vuestro usuario (previamente configurado) en Boundary. Para ello apuntamos al <em>endpoint<\/em> correspondiente a los controladores de Boundary y ejecutamos el comando <code>boundary authenticate<\/code>.<\/p>\n<\/li>\n<li data-sourcepos=\"57:1-60:0\">\n<p data-sourcepos=\"57:4-59:16\">Ejecutar el comando <code>boundary connect ssh<\/code> con los argumentos necesarios para apuntar a nuestro <em>target<\/em> (El <em>target<\/em> representa una o m\u00e1s m\u00e1quinas o <em>endpoints<\/em>).<\/p>\n<\/li>\n<\/ol>\n<p dir=\"auto\" data-sourcepos=\"61:1-66:63\">En este escenario particualr, el <em>target<\/em> se compone de dos m\u00e1quinas diferentes: una en AWS y otra en GCP. Si a Boundary no se le indica a qu\u00e9 m\u00e1quina en concreto se quiere acceder de ese <em>target<\/em>, Boundary proporcionar\u00e1 acceso de forma aleatoria a una de ellas. De manera autom\u00e1tica una vez seleccionada la m\u00e1quina a la que se quiere acceder, Boundary enrutar\u00e1 la petici\u00f3n hacia el <em>worker<\/em> adecuado, que es el que tiene acceso a dicha m\u00e1quina.<\/p>\n<h2>\u00bfQu\u00e9 nos ha gustado?<\/h2>\n<ul>\n<li data-sourcepos=\"70:1-75:0\">\n<p data-sourcepos=\"70:3-74:61\">La facilidad de configuraci\u00f3n. Boundary sabe perfectamente a qu\u00e9 <em>worker<\/em> tiene que dirigir la petici\u00f3n teniendo en cuenta a qu\u00e9 servicio o m\u00e1quina se est\u00e1 solicitando el acceso. Como todo el despliegue (tanto infraestructura como aplicaci\u00f3n) se ha hecho desde terraform, la salida de un despliegue sirve como entrada del otro y est\u00e1 todo perfectamente integrado.<\/p>\n<\/li>\n<li data-sourcepos=\"76:1-82:0\">\n<p data-sourcepos=\"76:3-81:31\">Ofrece tanto interfaz gr\u00e1fica como acceso CLI. Aunque a\u00fan est\u00e1 en una fase muy temprana del desarrollo, el mismo binario de Boundary ofrece (cuando es configurado como <em>controller<\/em>) una interfaz gr\u00e1fica muy limpia, con el mismo estilo que las diferents herramientas de Hashicorp. Sin embargo, no todas las funcionalidades se pueden realizar actualmente desde la interfaz, por lo que es necesario utilizar la CLI.<\/p>\n<\/li>\n<\/ul>\n<h2>\u00bfQu\u00e9 hemos echado en falta?<\/h2>\n<ul>\n<li data-sourcepos=\"85:1-87:0\">\n<p data-sourcepos=\"85:3-86:72\">La integraci\u00f3n con Vault y los <em>indentity providers<\/em> (<em>IdPs<\/em>) todav\u00eda esta en el <em>roadmap<\/em> y hasta siguientes versiones no es seguro que se incluya.<\/p>\n<\/li>\n<li data-sourcepos=\"88:1-91:0\">\n<p data-sourcepos=\"88:3-90:11\">La gesti\u00f3n actual del JWT token del cliente de Boundary hacia el <em>control-plane<\/em> que implica instalar una herramienta para la gesti\u00f3n de secretos.<\/p>\n<\/li>\n<\/ul>\n<h2>\u00bfQu\u00e9 nos falta por probar?<\/h2>\n<p dir=\"auto\" data-sourcepos=\"94:1-95:37\">Teniendo en cuenta el nivel de avance del desarrollo del producto actual, nos faltar\u00eda por entender y probar para:<\/p>\n<ul dir=\"auto\" data-sourcepos=\"97:1-101:0\">\n<li data-sourcepos=\"97:1-98:0\">\n<p data-sourcepos=\"97:3-97:67\">Gesti\u00f3n de accesos modificando pol\u00edticas a diferentes usuarios.<\/p>\n<\/li>\n<li data-sourcepos=\"99:1-101:0\">\n<p data-sourcepos=\"99:3-100:71\">Realizar una investigaci\u00f3n m\u00e1s profunda en los componentes que sirven para gestionar los recursos (<em>scopes<\/em>, <em>organizations<\/em>, <em>host sets<\/em>, etc.)<\/p>\n<\/li>\n<\/ul>\n<h2>\u00bfPor qu\u00e9 creemos que este producto tiene potencial?<\/h2>\n<p dir=\"auto\" data-sourcepos=\"104:1-108:79\">Una vez que el producto vaya cumpliendo fases en el <em>roadmap<\/em> que Hashicorp ha declarado, simplificar\u00e1 much\u00edsimo la gesti\u00f3n de accesos a m\u00e1quinas a trav\u00e9s de bastiones en las organizaciones. Se podr\u00e1 gestionar el acceso a una m\u00e1quina simplemente a\u00f1adiendo o modificando los permisos que un usuario posee, sin tener que distribuir claves ssh, realizar operaciones manuales en las m\u00e1quinas, etc.<\/p>\n<p dir=\"auto\" data-sourcepos=\"110:1-117:19\">En resumen, este producto nos brinda una nueva forma de gestionar accesos a diferentes recursos. No solamente mediante SSH, sino que ser\u00e1 una forma de gestionar accesos mediante roles a m\u00e1quinas, bases de datos, portales, etc. minimizando el posible vector de ataque cuando se dan permisos a contratistas. Adem\u00e1s se presenta como una herramienta gratuita y <em>opensource<\/em>, que se integrar\u00e1 muy eficazmente si se tiene el ecosistema de Hashicorp desplegado, pero tambi\u00e9n servir\u00e1 en caso contrario sin necesidad del resto de herramientas de esta compa\u00f1\u00eda.<\/p>\n<h2>Y una cosa m\u00e1s&#8230;<\/h2>\n<p>Nos surgi\u00f3 un problema causado por la forma en la que se persist\u00eda la informaci\u00f3n sobre las direcciones de red de los <em>controllers<\/em> y los <em>workers<\/em> para su posterior comunicaci\u00f3n. Despu\u00e9s de hacer funcionar la prueba de concepto mediante un <em>workaround<\/em> basado en iptables decidimos abrir una <a href=\"\/cloud-practice\/hashicorp-series\/hashicorp-series-boundary\/-\/blob\/master\/issue\">https:\/\/github.com\/hashicorp\/boundary\/issues\/758<\/a> en Github. En literalmente un d\u00eda, nos resolvieron la incidencia actualizando su c\u00f3digo. Nos descargamos la nueva versi\u00f3n del c\u00f3digo, lo probamos y funcion\u00f3 a la perfecci\u00f3n. Punto a favor para Hashicorp por la rapidez de respuesta y la eficiencia que demostraron. Adem\u00e1s, recientemente ha sido liberada la nueva release de Boundary, la cual incluye entre muchas otras cosas, el <em>fix<\/em> a esta <em>issue<\/em> <a href=\"https:\/\/github.com\/hashicorp\/boundary\/compare\/v0.1.1...v0.1.2\" target=\"_blank\" rel=\"nofollow noreferrer noopener\">Boundary v0.1.2<\/a>.<\/p>\n<h5>\u00bfQuieres saber m\u00e1s de lo que ofrecemos y ver otros casos de \u00e9xito?<\/h5>\n<p><a href=\"\/\" role=\"button\"><br \/>\nDESCUBRE BLUETAB<br \/>\n<\/a><br \/>\nShare on twitter<br \/>\nShare on linkedin<\/p>\n<p><b>SOLUCIONES, <\/b>SOMOS EXPERTOS<\/p>\n<p><a href=\"\/soluciones\/data-strategy\/\"><\/a><\/p>\n<p><a href=\"\/soluciones\/data-strategy\/\"><\/p>\n<h5>\n\t\t\t\t\t\tDATA STRATEGY<\/h5>\n<p><\/a><a href=\"\/soluciones\/data-strategy\/\">\t\t\t\t\t\t<\/a><br \/>\n<a href=\"\/soluciones\/data-fabric\/\"><\/a><\/p>\n<p><a href=\"\/soluciones\/data-fabric\/\"><\/p>\n<h5>\n\t\t\t\t\t\tDATA FABRIC<\/h5>\n<p><\/a><a href=\"\/soluciones\/data-fabric\/\">\t\t\t\t\t\t<\/a><br \/>\n<a href=\"\/soluciones\/augmented-analytics\/\"><\/a><\/p>\n<p><a href=\"\/soluciones\/augmented-analytics\/\"><\/p>\n<h5>\n\t\t\t\t\t\tAUGMENTED ANALYTICS<\/h5>\n<p><\/a><a href=\"\/soluciones\/augmented-analytics\/\">\t\t\t\t\t\t<\/a><\/p>\n<p>Te puede interesar<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hashicorp Series Boundary Share on twitter Share on linkedin Javier P\u00e9rez DevOps Engineer Javier Rodriguez Cloud DevOps Jorge de Diego Cloud DevOps Engineer Despu\u00e9s de la \u00faltima HashiConf Digital, desde la Pr\u00e1ctica Cloud os queremos ense\u00f1ar una de las principales novedades que fueron presentadas: Boundary. En este post vamos a comentar qu\u00e9 es esta nueva [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":20778,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"elementor_header_footer","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[7,29,30],"tags":[],"class_list":["post-6778","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog-es","category-practices-en","category-tech-en"],"acf":[],"jetpack_featured_media_url":"https:\/\/bluetab.es\/wp-content\/uploads\/2020\/12\/14.png","_links":{"self":[{"href":"https:\/\/bluetab.es\/en\/wp-json\/wp\/v2\/posts\/6778","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bluetab.es\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bluetab.es\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bluetab.es\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/bluetab.es\/en\/wp-json\/wp\/v2\/comments?post=6778"}],"version-history":[{"count":0,"href":"https:\/\/bluetab.es\/en\/wp-json\/wp\/v2\/posts\/6778\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/bluetab.es\/en\/wp-json\/wp\/v2\/media\/20778"}],"wp:attachment":[{"href":"https:\/\/bluetab.es\/en\/wp-json\/wp\/v2\/media?parent=6778"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bluetab.es\/en\/wp-json\/wp\/v2\/categories?post=6778"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bluetab.es\/en\/wp-json\/wp\/v2\/tags?post=6778"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}