Uso de código abierto para proyectos de identidad: 8 consideraciones

0
15

Ya que las organizaciones buscan reducir el tiempo de implementación y, con suerte, reducir los costos, el uso de código abierto está floreciendo en la industria. Un informe de Red Hat del 2019 sobre «El estado del código abierto empresarial” afirmó que el 95% de los encuestados considera que el código abierto es «estratégicamente importante».

Sin embargo, cuando se analizan las aplicaciones de código abierto en un ambiente empresarial, la gestión de identidades no siempre parece un hogar natural. Esto puede deberse a que los servicios relacionados con la identidad son, posiblemente, uno de los sistemas más complicados de diseñar y construir. ¿Se puede usar el código abierto de manera inteligente en un contexto de identidad y mantener la seguridad y la usabilidad?

8 consideraciones al elegir el código abierto para proyectos de identidad
Con frecuencia, los pensamientos sobre el uso de código abierto se convierten en miedo, incertidumbre y duda (FUD, por sus siglas en inglés). Esto no es sin razón. El robo de datos de Equifax en el 2018 es un buen ejemplo de por qué persiste el FUD en cuanto al uso de código abierto. El incidente involucró a delincuentes cibernéticos que usaban ataques de fuerza bruta contra Magento, la plataforma de código abierto.

Existen muy buenas razones para utilizar el código abierto. La elección significa que alguien más ha hecho el trabajo preliminar para que sus desarrolladores no tengan que hacerlo. En teoría, varias personas (la comunidad de código abierto) han examinado y verificado el código. Si bien esto puede significar que el código ha pasado las pruebas unitarias, no es lo mismo que las pruebas funcionales. Ahí radica el problema. Los servicios basados en identidad son a menudo sistemas multifuncionales. Las pruebas funcionales de estos sistemas, los innumerables viajes de los usuarios y las rutas alternativas pueden reducir el código con giros y vueltas que abrirán paso a los exploits.

El código de fuente abierta puede ofrecer un buen punto de partida para una funcionalidad específica dentro de un ecosistema de identidad más amplio, mientras su organización mantiene el control sobre la aplicación final.

Antes de embarcarse en un proyecto de identidad liderado por código abierto, evalúe varias consideraciones. Primero, y quizás lo más importante, ¿está su ciclo de vida de desarrollo de software (SDLC, por sus siglas en inglés) a la altura? El hecho de que utilice código de fuente abierta no significa que estará exento de los procesos habituales del SDLC. El código abierto no es un paso completo para una aplicación lista para usar. Requerirá los mismos niveles de prueba y mantenimiento que cualquier sistema desarrollado interna o externamente. Las áreas de consideración incluyen:

  1. Seguridad y código inflado: El software de código abierto es susceptible de ser código inflado. Una vez que esto sucede, puede resultar difícil controlar la seguridad, ya que el «efecto bloatware”se hace cargo. El bloatwarese da cuando se agregan cada vez más funcionalidades a las bibliotecas de código, lo que resulta en una mayor dificultad para analizar el software. Mientras más inflado esté el código, más fácil es ocultar el malware en él. Un ejemplo reciente es el malware Octopus Scanner, que los investigadores encontraron en 26 repositorios de código fuente en GitHub.

Las bibliotecas de código abierto, especialmente las que se encuentran en el campo de la identidad, son objetivos perfectos para el malware. Los repositorios están configurados para tomar siempre la última versión del código de fuente abierta (una mejor práctica para garantizar que las actualizaciones estén integradas). Si alguien introduce malware, como en el caso de Octopus Scanner, la actualización incorpora dicho malware. Antes de que lo detecte, el malware está en su producto y el resto se convierte en una dolorosa historia.

La falta de control sobre el código también puede generar mayores vulnerabilidades en el sistema final. El conjunto requiere un análisis y una prueba cuidadosos. Esto puede anular el aspecto de ahorro de tiempo del uso de código abierto. Además, si se refactoriza el código de fuente abierta, puede romper su aplicación dentro de un sistema determinado.

  1. Crecimiento: Los servicios de identidad, especialmente los creados para los consumidores, a menudo requieren de mucha capacidad para aumentar su escala. Al elegir un proyecto de código abierto, la capacidad de crecimiento debe ocupar un lugar destacado en su lista de consideraciones.
  2. Interoperabilidad: Muchos proyectos de identidad tienen múltiples partes móviles. A menudo utilizan componentes de terceros para agregar funciones importantes. Por ejemplo, un sistema de identidad del consumidor puede utilizar una agencia de referencia crediticia (CRA, por sus siglas en inglés) para verificar los atributos del usuario. Es poco probable que el código abierto tenga la capacidad de interoperar con terceros de su elección, lo que le obligará a ampliar el código de fuente abierta.
  3. Flexibilidad:¿Qué tan fácil es para un servicio de identidad, basado en código abierto, extenderse a diferentes almacenes de bases de datos, incorporar diferentes atributos, usar diferentes opciones de autorización y autenticación, traducir protocolos, etc.? ¿Tendrá que esperar a que la comunidad de código abierto agregue soporte para nuevos estándares como OIDC CIBA, por ejemplo?
  4. Preparación para el futuro:¿Puede modificar la funcionalidad? ¿Es fácil cambiar y agregar funcionalidad a medida que cambian los requisitos? Los servicios de identidad son una preocupación constante. Las expectativas del cliente cambian con el tiempo, pero el servicio subyacente debe persistir. Si pone todos sus esfuerzos en utilizar una determinada biblioteca de código abierto, puede ser difícil pasar a una biblioteca mejorada que brinde una funcionalidad similar: puede terminar con una versión de código abierto que lo confina a un proveedor.
  5. Soporte y mantenimiento: Muchas soluciones de código abierto vienen con paquetes de soporte adicionales. De alguna manera, esto puede parecer negar el uso de código abierto. También puede causar problemas si su equipo interno desarrolla el código por caminos fuera del conocimiento o el alcance del paquete de soporte. Del mismo modo, el mantenimiento puede ser un problema.

Los servicios de identidad se encuentran en el centro de las interacciones digitales y deben estar adaptados para permanecer vigentes durante el constante cambio del panorama de la seguridad. A medida que surgen nuevas vulnerabilidades, los servicios de identidad deben poder modificar el comportamiento del sistema, permitir una sencilla actualización de software desactualizado y agregar nuevas capacidades a los sistemas existentes para cerrar nuevas brechas.

  1. Experiencia en identidad: Los servicios de identidad requieren experiencia multidisciplinaria. Esto incluye conocimientos de UI/UX, una comprensión profunda de la privacidad y el cumplimiento normativo, así como una amplia experiencia en seguridad. El uso de código de fuente abierta es solo un aspecto de la creación de un servicio relacionado con la identidad. Un sistema de identidad bien diseñado y desarrollado requiere un enfoque de 360 grados que construya las plataformas más adecuadas para una amplia demografía. El código debe seguir ese ajuste, no dictarlo. Comenzar con el código es empezar al revés. Sin embargo, si el código puede formar una línea de base desde la cual trabajar, esto puede evitar mucho trabajo.
  2. Dependencias: A veces, las bibliotecas de código abierto tienen dependencias. Es decir, cuando las instala, se instalan otras bibliotecas asociadas. Si esto sucede, puede terminar con muchas bibliotecas de código abierto, algunas que no son necesarias. Esto puede ser un problema, ya que algunas de las bibliotecas pueden quedar obsoletas. Cuando esto suceda, la comunidad de código abierto le indicará las alternativas. Esto puede significar un cambio a un nuevo conjunto de bibliotecas. Alternativamente, terminará viviendo con la biblioteca obsoleta, que bien puede contener vulnerabilidades que nunca se resolverán.

Utilice el código abierto con prudencia
Debido a su naturaleza, los servicios de identidad son muy dinámicos. A menudo, los servicios de identidad deben seguir los dictados del e-commerce y las expectativas del cliente. El panorama de la seguridad es tal que los sistemas de identidad y los atributos de los usuarios son un blanco. Esto significa que el sistema debe ser lo suficientemente flexible para manejar los cambios.

Si opta por utilizar el código abierto, hágalo con precaución y elija dónde desea aplicar las bibliotecas de código abierto. En última instancia, el diseño de los sistemas de identidad debe tomar la iniciativa. El código abierto puede mejorar un proyecto, especialmente si se elige sabiamente. Elija una biblioteca que solo ofrezca la funcionalidad que realmente desea.

Susan Morrow CSOonline.com – CIOperu.pe