-
-
-
-
URL copied!
Un producto de software no es una aplicación aislada, sino que convive en un universo altamente conectado: se comunica, se integra, se relaciona y expande en busca de cumplir sus propósitos. Este hecho recrudece en ambientes distribuidos con alto grado de conexión y exposición como lo es de la las arquitecturas SOA, donde múltiples servicios son combinados, uniendo diferentes tecnologías y plataformas.
En estos contextos, las cuestiones de seguridad se vuelven decisivas. Dejan de ser un simple requerimiento no funcional para convertirse en una de las prioridades para el éxito del producto. La seguridad debe atacarse desde el inicio mismo del proyecto, y mantenerse activamente presente en todo el resto de las etapas.
En primera instancia, cada servicio debe cumplir con exigencias mínimas de seguridad. Entre ellas podemos nombrar integridad y confidencialidad de los datos, responder con precisión ante accesos no autorizados y considerar ataques clásicos como denial of service o non-repudation. Pero por encima de estas cuestiones, cualquier plan de seguridad en SOA debe analizar desde el momento cero la seguridad en los canales de comunicación. De nada sirve tener dos componentes invulnerables si el canal que los comunica es inseguro.
Se puede considerar la seguridad desde dos perspectivas: seguridad a nivel de la capa de transporte, y seguridad a nivel de mensajes. A nivel transporte tiene menores costos, y se basa en conceptos de seguridad ya desarrollados ya sea sobre TSL, SSL, O VPN. La segunda tiene la ventaja de poder adaptarse más a las necesidades particulares de un sistema. Las estrategias están enfocadas en la encriptación o firmado de mensajes, ya sea de manera total o parcial. Por ejemplo, los mensajes Request y Response del protocolo SOAP Envelope utiliza como algoritmos de encriptación y firma a: 3DES y Sha1WithRSA.
Entre los ataques más comunes a SOA se puede nombrar a SQL Injection. En este caso se inyecta código SQL en datos XML para obtener respuestas fraudulentas, o causar errores que revelen información sensible sobre la base de datos. Para que este ataque tenga efecto se requiere que los datos recibidos por un servicio SOA se inserten directamente en una sentencia SQL, y que la misma corra con los permisos suficientes.
Para combatir este ejemplo es importante evitar que datos de origen desconocido se anexen a sentencias SQL. Esto se logra con validación de contenidos y reglas de detección de amenazas. También el ataque “replay” es conocido, donde se busca ganar acceso respondiendo mensajes firmados y válidos. Para evitar esta modalidad es común la utilización de timestamps. Finalmente, otro punto a controlar adjuntos dañinos dentro de los mensajes SOAP. Los mismos pueden directamente bloquearse, o servirse de los servicios de un antivirus.
Un error común al intentar abordar cuestiones de seguridad es incluirla solamente al finalizar el proyecto siguiendo un esquema que prioriza la velocidad antes que la seguridad. Esto es grave porque recién con el proyecto terminado se pueden detectar amenazas serias que impiden culminarlo con éxito. Alcanza con imaginar una arquitectura compleja ya finalizada donde llevar a cabo las tareas de seguridad implica realizar cambios drásticos de funcionamiento.
Si en cambio el concepto de seguridad es tratado desde etapas tempranas, esto permitirá tener en cuenta posibles restricciones y limitaciones entre los componentes. Para tener esto en cuenta es fundamental que se incluyan el diseño de casos y pruebas de penetración al diseñar todo el esquema general de testing de la aplicación o producto.
Top Insights
Escribiendo User Stories en Agile
AutomotiveCommunicationsConsumer and RetailFinancial ServicesHealthcareManufacturing and IndustrialMediaTechnologyWhat is TM Forum Frameworx and how to...
UncategorizedAutomotiveCommunicationsConsumer and RetailFinancial ServicesHealthcareManufacturing and IndustrialMediaTechnologyImpact Mapping en Metodologías ágiles
AutomotiveCommunicationsConsumer and RetailFinancial ServicesHealthcareManufacturing and IndustrialMediaTechnologyTop Authors
Blog Categories
Trabajemos juntos
Contenido Relacionado
5 razones por las que tu proyecto necesita un Business Analyst
Contar con un Business Analyst (BA) en tu equipo no solo te ayudará a delegar tareas más operativas, sino que también potenciará al equipo de desarrollo y contribuirá significativamente al éxito de tu proyecto de desarrollo de software.
Conocer más
7 claves para ser un miembro de un equipo efectivo
Un gran desarrollador necesita trabajar tanto en sus habilidades técnicas como en sus habilidades blandas, ya que estas forman la base para cualquier profesional que quiera ser una pieza efectiva e inspirar un cambio positivo en su equipo y organización. He recopilado una serie de recomendaciones que considero básicas y de vital importancia para trabajar … Continue reading Cuestiones de seguridad en SOA →
Conocer más
Share this page:
-
-
-
-
URL copied!