{"id":30194,"date":"2024-01-16T08:23:04","date_gmt":"2024-01-16T07:23:04","guid":{"rendered":"https:\/\/www.metafrase.com\/blog\/?p=30194"},"modified":"2024-01-10T15:45:10","modified_gmt":"2024-01-10T14:45:10","slug":"arquitecturas-serverless","status":"publish","type":"post","link":"https:\/\/www.metafrase.com\/blog\/arquitecturas-serverless\/","title":{"rendered":"Seguridad y Auditor\u00edas en Arquitecturas Serverless"},"content":{"rendered":"<p>En el contexto din\u00e1mico de la evoluci\u00f3n tecnol\u00f3gica, las arquitecturas serverless han surgido como una soluci\u00f3n \u00e1gil y eficiente para el desarrollo y despliegue de aplicaciones. Este nuevo paradigma de computaci\u00f3n elimina la gesti\u00f3n tradicional de servidores, permitiendo a los desarrolladores centrarse en la l\u00f3gica de la aplicaci\u00f3n sin preocuparse por la infraestructura subyacente. Sin embargo, a medida que las organizaciones adoptan estas arquitecturas sin servidores, la seguridad emerge como un componente cr\u00edtico que demanda atenci\u00f3n especial.<\/p>\n<p>La seguridad en arquitecturas serverless no solo implica la protecci\u00f3n de datos y sistemas, sino tambi\u00e9n la comprensi\u00f3n de la nueva superficie de ataque y la gesti\u00f3n eficiente de la identidad y el acceso. Adem\u00e1s, la naturaleza ef\u00edmera de las funciones serverless y la gesti\u00f3n descentralizada de recursos presentan desaf\u00edos \u00fanicos que requieren estrategias de seguridad espec\u00edficas.<\/p>\n<h2>Introducci\u00f3n a las arquitecturas serverless<\/h2>\n<p>Las arquitecturas serverless representan un enfoque revolucionario en el dise\u00f1o de sistemas inform\u00e1ticos, eliminando la necesidad de gestionar y mantener servidores de manera directa. Este paradigma se centra en permitir a los desarrolladores centrarse exclusivamente en el c\u00f3digo y la l\u00f3gica de la aplicaci\u00f3n, mientras la infraestructura subyacente es gestionada de manera autom\u00e1tica por el proveedor de servicios en la <a href=\"https:\/\/www.metafrase.com\/blog\/software-nube-ciberseguridad\/\">nube<\/a>.<\/p>\n<p>A diferencia de los modelos tradicionales, donde las aplicaciones se ejecutan en servidores que deben ser provisionados y escalados manualmente, las arquitecturas serverless permiten a los desarrolladores escribir funciones o piezas individuales de c\u00f3digo que son ejecutadas en respuesta a eventos espec\u00edficos. Estos eventos pueden ser desencadenados por diversas fuentes, como peticiones HTTP, cambios en bases de datos, subida de archivos, entre otros. Las caracter\u00edsticas clave de las arquitecturas serverless incluyen:<\/p>\n<ul>\n<li><b>Escalabilidad autom\u00e1tica. <\/b>Como cualquier servicio en la nube, tenemos esa flexibilidad para escalar de acuerdo a la demanda. Con arquitecturas serverless, la aplicaci\u00f3n escala de forma autom\u00e1tica y mantiene un equilibrio en cuanto al uso de recursos, lo cual indica que se adapta r\u00e1pidamente a las necesidades de los usuarios.<\/li>\n<li><b>Pago por uso. <\/b>Los usuarios pagan \u00fanicamente por el tiempo de ejecuci\u00f3n de las funciones y los recursos consumidos durante ese tiempo. No hay costos asociados con la infraestructura subyacente inactiva.<\/li>\n<li><b>Sin mantenimiento de servidores. <\/b>La gesti\u00f3n de servidores, incluyendo el aprovisionamiento, escalado y mantenimiento, es responsabilidad del proveedor de servicios en la nube. Esto permite a los desarrolladores centrarse en la l\u00f3gica de la aplicaci\u00f3n y acelerar el ciclo de desarrollo.<\/li>\n<li><b>Alta disponibilidad y tolerancia a fallos. <\/b>Los proveedores serverless ofrecen alta disponibilidad y tolerancia a fallas de forma predeterminada.<\/li>\n<li><b>Arquitectura dirigidas por eventos (Event-Driven)<\/b>. Este modelo puede ser utilizado para aplicaciones orientadas a la gesti\u00f3n de eventos de bases de datos, servicios de colas de mensajes, alertas y notificaciones, eventos programados o aquellas funcionalidades que se ejecutan de forma peri\u00f3dica.<\/li>\n<li><b>Funciones como servicio: <\/b>Este tipo de arquitecturas lo que hacen es ejecutar Funciones como servicio utilizando los principales proveedores cloud y es ideal para aquellas cargas de trabajo que facturan \u00fanicamente por el tiempo de ejecuci\u00f3n de la funci\u00f3n.<\/li>\n<li><b>Microservicios:<\/b> Las arquitecturas serverless favorecen la construcci\u00f3n de aplicaciones basadas en microservicios, donde cada funci\u00f3n puede representar un servicio independiente que realiza una tarea espec\u00edfica.<\/li>\n<\/ul>\n<p>Ejemplos de servicios serverless incluyen <a href=\"https:\/\/aws.amazon.com\/lambda\" target=\"_blank\" rel=\"noopener\">AWS Lambda<\/a> [1], <a href=\"https:\/\/azure.microsoft.com\/en-us\/services\/functions\" target=\"_blank\" rel=\"noopener\">Azure Functions<\/a> [2], <a href=\"https:\/\/cloud.google.com\/functions\" target=\"_blank\" rel=\"noopener\">Google Cloud Functions<\/a> [3], <a href=\"https:\/\/workers.cloudflare.com\/\" target=\"_blank\" rel=\"noopener\">CloudFlare workers<\/a>[4], entre otros. Estos servicios permiten a los desarrolladores aprovechar la flexibilidad y la eficiencia de las arquitecturas serverless para construir aplicaciones escalables y rentables. En el caso de Cloudflare Workers, se trata de una plataforma de computaci\u00f3n en la nube que se ejecuta en la red global de Cloudflare. Una de la ventajas de este servicio es que los workers se despliegan y ejecutan desde la red de Cloudflare, y son una buena opci\u00f3n para aplicaciones que requieren una alta velocidad y escalabilidad.<\/p>\n<p>A continuaci\u00f3n, analizamos las consideraciones de seguridad, monitorizaci\u00f3n y gesti\u00f3n de recursos asociadas con este enfoque para aprovechar al m\u00e1ximo sus beneficios.<\/p>\n<h2>Seguridad en arquitecturas serverless<\/h2>\n<p>La principal gu\u00eda que pretende clasificar los principales riesgos y vectores de ataque en arquitecturas serverless es el <a href=\"https:\/\/owasp.org\/www-pdf-archive\/OWASP-Top-10-Serverless-Interpretation-en.pdf\" target=\"_blank\" rel=\"noopener\"><b>OWASP Serverless Top 10<\/b><\/a> [5]. La mayor\u00eda de los riesgos y vectores de ataque de la clasificaci\u00f3n <b>Serverless Architectures Security (SAS) <\/b>son diferentes de los que se encuentran en las aplicaciones tradicionales en la nube [6,7]. Entre los nuevos vectores de <a href=\"https:\/\/www.metafrase.com\/blog\/crecen-los-ataques-a-los-servicios-en-la-nube\/\">ataque<\/a> introducidos en las arquitecturas serverless podemos destacar:<\/p>\n<ul>\n<li><b>Inyecci\u00f3n de datos de eventos. <\/b>Los atacantes pueden inyectar c\u00f3digo malicioso en las funciones serverless, lo que podr\u00eda provocar la ejecuci\u00f3n de c\u00f3digo arbitrario o la exfiltraci\u00f3n de datos.<\/li>\n<li><b>Mayor superficie de ataque. <\/b>El aumento y la complejidad de la superficie de ataque est\u00e1n relacionados con que las funciones serverless consumen datos de m\u00faltiples fuentes de eventos, como API HTTP, colas de mensajes, almacenamiento en la nube y comunicaciones de dispositivos <a href=\"https:\/\/doi.org\/10.1007\/978-3-031-21333-5_39\" target=\"_blank\" rel=\"noopener\">IoT<\/a> [8].<\/li>\n<li><b>Manipulaci\u00f3n de la ejecuci\u00f3n del flujo de funciones serverless. <\/b>Se refiere a la capacidad de influir y controlar el camino que sigue la ejecuci\u00f3n de las funciones serverless.<\/li>\n<li><b>Denegaci\u00f3n de servicio y agotamiento de recursos financieros. <\/b>Los atacantes pueden atacar la infraestructura subyacente que ejecuta las funciones serverless, lo que podr\u00eda provocar la interrupci\u00f3n del servicio o el agotamiento de los recursos financieros. Por ejemplo, los ataques <b>Denial of Wallet<\/b>, tienen como objetivo las finanzas de la organizaci\u00f3n que despliega la aplicaci\u00f3n, en lugar de la disponibilidad de la aplicaci\u00f3n (DoS). Estos ataques aprovechan las caracter\u00edsticas de disponibilidad y escalabilidad automatizadas inherentes de las arquitecturas serverless para consumir grandes cantidades de recursos, lo que puede resultar en el aumento de la factura de los servicios que se est\u00e1n consumiendo en el proveedor.<\/li>\n<li><b>Manejo inadecuado de excepciones y mensajes de error. <\/b>Cuando no se gestiona adecuadamente el manejo de errores, los detalles internos del sistema pueden exponerse, proporcionando informaci\u00f3n sensible a posibles atacantes.<\/li>\n<\/ul>\n<p><img fetchpriority=\"high\" decoding=\"async\" class=\"wp-image-30197 aligncenter lazyload\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" alt=\"\" width=\"543\" height=\"268\" sizes=\"(max-width: 543px) 100vw, 543px\" data-src=\"http:\/\/www.metafrase.com\/blog\/wp-content\/uploads\/sites\/4\/2024\/01\/imagen_serverless1-300x148.png\" data-srcset=\"https:\/\/www.metafrase.com\/blog\/wp-content\/uploads\/sites\/4\/2024\/01\/imagen_serverless1-300x148.png 300w, https:\/\/www.metafrase.com\/blog\/wp-content\/uploads\/sites\/4\/2024\/01\/imagen_serverless1.png 552w\"><\/p>\n<p>Como vemos en la imagen anterior, la seguridad en arquitecturas serverless no s\u00f3lo implica la protecci\u00f3n de datos y sistemas, sino tambi\u00e9n la comprensi\u00f3n de la nueva superficie de ataque y la gesti\u00f3n eficiente de la identidad y el acceso. Adem\u00e1s, la naturaleza ef\u00edmera de las funciones serverless y la gesti\u00f3n descentralizada de recursos presentan desaf\u00edos \u00fanicos que requieren estrategias de seguridad espec\u00edficas.<\/p>\n<h2>Auditor\u00edas en arquitecturas serverless<\/h2>\n<p>Las auditor\u00edas en arquitecturas serverless son fundamentales para evaluar la seguridad, el rendimiento y el cumplimiento normativo de las aplicaciones y servicios desplegados en entornos serverless. Estas auditor\u00edas permiten identificar posibles vulnerabilidades, validar la correcta implementaci\u00f3n de pol\u00edticas de seguridad y garantizar que la infraestructura y las aplicaciones cumplan con los est\u00e1ndares establecidos. Entre los principales puntos a considerar al realizar auditor\u00edas en arquitecturas serverless podemos destacar:<\/p>\n<ul>\n<li><b>Pol\u00edticas de identidad y acceso<\/b>: Es importante revisar las pol\u00edticas de gesti\u00f3n de identidad y acceso (IAM) para garantizar que las funciones serverless tengan los permisos m\u00ednimos necesarios y su implementaci\u00f3n siga el principio de m\u00ednimo privilegio.<\/li>\n<li><b>Monitorizaci\u00f3n<\/b>: Examinar los registros y las m\u00e9tricas generadas por las funciones serverless para identificar patrones de comportamiento an\u00f3malos.<\/li>\n<li><b>Seguridad de los datos<\/b>: Adem\u00e1s de comprobar la correcta configuraci\u00f3n de pol\u00edticas de gesti\u00f3n de claves y certificados, es importante evaluar las medidas de cifrado utilizadas para datos en reposo y en tr\u00e1nsito.<\/li>\n<li><b>Pruebas de pentesting:<\/b> Nuestro equipo de desarrollo deber\u00eda realizar pruebas de penetraci\u00f3n para identificar y corregir posibles vulnerabilidades en las funciones serverless y sus dependencias. Adem\u00e1s, es importante evaluar la resistencia de las funciones a ataques comunes, como inyecciones de c\u00f3digo.<\/li>\n<li><b>Gesti\u00f3n de configuraci\u00f3n: <\/b>En este punto es importante verificar la configuraci\u00f3n de las funciones y servicios serverless para asegurar que est\u00e9n alineados con las mejores pr\u00e1cticas de seguridad.<\/li>\n<\/ul>\n<p>Al abordar estas \u00e1reas durante las auditor\u00edas en arquitecturas serverless, las organizaciones pueden mejorar la seguridad y la confiabilidad de sus aplicaciones, garantizando que est\u00e9n alineadas con las mejores pr\u00e1cticas y los est\u00e1ndares de seguridad.<\/p>\n<h2>Conclusiones<\/h2>\n<p>Tras analizar los riesgos y vectores de ataque que tenemos en las arquitecturas en la nube, podemos concluir que la mayor\u00eda de los riesgos siguen presentes en las arquitecturas serverless, solo que algunos se presentan de forma diferente. Las aplicaciones serverless podr\u00edan aumentar en complejidad principalmente porque implica la creaci\u00f3n de flujos de trabajo mediante la combinaci\u00f3n de m\u00faltiples servicios en la nube, funciones, disparadores y eventos.<\/p>\n<p>Las arquitecturas serverless tambi\u00e9n tienen la capacidad de reducir el impacto de los ataques de denegaci\u00f3n de servicio (DoS) porque las funciones son ap\u00e1tridas, ef\u00edmeras y no persistentes. M\u00e1s peligroso y con mayor impacto es el ataque de <b>denegaci\u00f3n de cartera (DoW) <\/b>en el que el atacante no intenta interrumpir el servicio, sino aumentar la factura.<\/p>\n<p><img decoding=\"async\" class=\" wp-image-30198 aligncenter\" src=\"http:\/\/www.metafrase.com\/blog\/wp-content\/uploads\/sites\/4\/2024\/01\/imagen_serverless2-300x188.png\" alt=\"\" width=\"408\" height=\"256\" srcset=\"https:\/\/www.metafrase.com\/blog\/wp-content\/uploads\/sites\/4\/2024\/01\/imagen_serverless2-300x188.png 300w, https:\/\/www.metafrase.com\/blog\/wp-content\/uploads\/sites\/4\/2024\/01\/imagen_serverless2.png 408w\" sizes=\"(max-width: 408px) 100vw, 408px\" \/><\/p>\n<p>Tras realizar este an\u00e1lisis de seguridad y sus implicaciones que puede tener en una aplicaci\u00f3n desplegada en un entorno serverless, podr\u00edamos concluir que ciertas amenazas como DoW cobran mayor relevancia al conectar aplicaciones serverless con dispositivos IoT debido a la cantidad de eventos procedentes de diferentes fuentes que podr\u00edan llevar a la ejecuci\u00f3n de funciones de forma descontrolada. Dadas las peculiaridades de las arquitecturas serverless y el n\u00famero de eventos que deben manejar, en ocasiones podr\u00edamos perder el control de la generaci\u00f3n de eventos por peticiones realizadas desde dispositivos IoT y en consecuencia tener un ataque DOW.<\/p>\n<p>En este sentido, dentro de las arquitecturas serverless se est\u00e1 observando una evoluci\u00f3n en cuanto a ataques. Aunque parte de la seguridad es gestionada por la propia plataforma cloud, tambi\u00e9n ser\u00eda importante asegurar la parte correspondiente a la aplicaci\u00f3n donde la generaci\u00f3n de eventos de distinta naturaleza podr\u00eda provocar otros riesgos de seguridad. Desde el punto de vista del desarrollador, se hace m\u00e1s importante seguir las mejores pr\u00e1cticas de dise\u00f1o y desarrollo de software seguro. En este punto, hacer un buen dise\u00f1o de la arquitectura y las funciones se vuelve m\u00e1s <a href=\"https:\/\/12factor.net\/es\" target=\"_blank\" rel=\"noopener\">relevante<\/a> [9].<\/p>\n<h3><b>Referencias:<\/b><\/h3>\n<p>[1] <a href=\"https:\/\/aws.amazon.com\/lambda\" target=\"_blank\" rel=\"noopener\">https:\/\/aws.amazon.com\/lambda<\/a><\/p>\n<p>[2] <a href=\"https:\/\/azure.microsoft.com\/en-us\/services\/functions\" target=\"_blank\" rel=\"noopener\">https:\/\/azure.microsoft.com\/en-us\/services\/functions<\/a><\/p>\n<p>[3] <a href=\"https:\/\/cloud.google.com\/functions\" target=\"_blank\" rel=\"noopener\">https:\/\/cloud.google.com\/functions<\/a><\/p>\n<p>[4] <a href=\"https:\/\/workers.cloudflare.com\" target=\"_blank\" rel=\"noopener\">https:\/\/workers.cloudflare.com<\/a><\/p>\n<p>[5] <a href=\"https:\/\/owasp.org\/www-pdf-archive\/OWASP-Top-10-Serverless-Interpretation-en.pdf\" target=\"_blank\" rel=\"noopener\">https:\/\/owasp.org\/www-pdf-archive\/OWASP-Top-10-Serverless-Interpretation-en.pdf<\/a><\/p>\n<p>[6] <a href=\"https:\/\/github.com\/puresec\/sas-top-10\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/puresec\/sas-top-10<\/a><\/p>\n<p>[7] Candel, J.M.O., Elouali, A., Gimeno, F.J.M., Mora, H. (2023). Cloud vs Serverless Computing: A Security Point of View. In: Bravo, J., Ochoa, S., Favela, J. (eds) Proceedings of the International Conference on Ubiquitous Computing &amp; Ambient Intelligence (UCAmI 2022). UCAmI 2022. Lecture Notes in Networks and Systems, vol 594. Springer, Cham. <a href=\"https:\/\/doi.org\/10.1007\/978-3-031-21333-5_109\" target=\"_blank\" rel=\"noopener\">https:\/\/doi.org\/10.1007\/978-3-031-21333-5_109<\/a><\/p>\n<p>[8] Candel, J.M.O., Gimeno, F.J.M., Mora Mora, H. (2023). Serverless Security Analysis for IoT Applications. In: Bravo, J., Ochoa, S., Favela, J. (eds) Proceedings of the International Conference on Ubiquitous Computing &amp; Ambient Intelligence (UCAmI 2022). UCAmI 2022. Lecture Notes in Networks and Systems, vol 594. Springer, Cham. <a href=\"https:\/\/doi.org\/10.1007\/978-3-031-21333-5_39\" target=\"_blank\" rel=\"noopener\">https:\/\/doi.org\/10.1007\/978-3-031-21333-5_39<\/a><\/p>\n<p>[9] <a href=\"https:\/\/12factor.net\/es\" target=\"_blank\" rel=\"noopener\">https:\/\/12factor.net\/es<\/a><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>En el contexto din\u00e1mico de la evoluci\u00f3n tecnol\u00f3gica, las arquitecturas serverless han surgido como una soluci\u00f3n \u00e1gil y eficiente para el desarrollo y despliegue de aplicaciones. Este nuevo paradigma de computaci\u00f3n elimina la gesti\u00f3n tradicional de servidores, permitiendo a los desarrolladores centrarse en la l\u00f3gica de la aplicaci\u00f3n sin preocuparse por la infraestructura subyacente. Sin [&hellip;]<\/p>\n","protected":false},"author":20,"featured_media":30204,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[1],"tags":[136,137],"class_list":["post-30194","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-sin-categoria","tag-arquitectura","tag-serverless"],"_links":{"self":[{"href":"https:\/\/www.metafrase.com\/blog\/wp-json\/wp\/v2\/posts\/30194","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.metafrase.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.metafrase.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.metafrase.com\/blog\/wp-json\/wp\/v2\/users\/20"}],"replies":[{"embeddable":true,"href":"https:\/\/www.metafrase.com\/blog\/wp-json\/wp\/v2\/comments?post=30194"}],"version-history":[{"count":9,"href":"https:\/\/www.metafrase.com\/blog\/wp-json\/wp\/v2\/posts\/30194\/revisions"}],"predecessor-version":[{"id":30208,"href":"https:\/\/www.metafrase.com\/blog\/wp-json\/wp\/v2\/posts\/30194\/revisions\/30208"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.metafrase.com\/blog\/wp-json\/wp\/v2\/media\/30204"}],"wp:attachment":[{"href":"https:\/\/www.metafrase.com\/blog\/wp-json\/wp\/v2\/media?parent=30194"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.metafrase.com\/blog\/wp-json\/wp\/v2\/categories?post=30194"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.metafrase.com\/blog\/wp-json\/wp\/v2\/tags?post=30194"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}