El concepto de separación de responsabilidades/asignaciones en una idea que revolotea casi de cajón en libros de texto de SegInfo, en textos de las llamadas "buenas prácticas" y hasta en conferencias. Pero si vamos un poco más allá del texto, realmente cómo podemos contar con una "separation of duties" en TI?
La separación de tareas significa evitar que una sola persona tenga control de una transacción de inicio a fin; significa también que más de una persona es requerida para completar una tarea. En TI, exactamente cómo funciona? ¿Funciona?
Por ejemplo, tenemos al administrador del directorio activo (DA), una persona muy poderosa en la infraestructura de TI tomando en cuenta que todos los equipos estuvieran conectados a este DA. Si esta persona crea una cuenta de usuario en una PC VIP para tener acceso no autorizado, dónde entra la separación de actividades? ¿Cómo le hacemos para que no la pueda crear sin la intervención de otra persona? Si bien podemos tener dos administradores de este DA, si la propia herramienta no te da la posibilidad de una "separation of duties", tendremos a un administrador que podrá hacer y deshacer a su antojo cuentas y contraseñas; podrá tener accesos por aquí y por allá. Se tendría que tener una bitácora para en dado caso revisar estas actividades en el DA, pero eso no es una separación de actividades.
Vayamos a una consola de antivirus donde se administran los mata-bichos perimetrales y/o locales en cada equipo. ¿Cómo podemos implementar el concepto de "que un cheque tenga dos firmas para que sea válido"? Si la herramienta permite al administrador (y de hecho lo hace) tener un control total, pues puede completar cualquier tarea sin necesidad de que alguien más lo valide.
Me podrán decir que la segregación de tareas es un control administrativo, en papel: un administrador lista cambios y otro más agrega su firma para dar su VoBo. Pues es totalmente irreal porque simplemente el cambio ilícito que se desea hacer no se escribe en esta hoja y listo. También me podrían decir que la segregación se puede hacer mediante bitácoras del sistema, sin embargo hacerlo de esta manera no es segregar y además el administrador podría alterarlas.
Lo que finalmente quiero expresar es que la segregación/separación de tareas en muchas situaciones de TI es una mera ilusión ya que no se puede llevar a cabo porque la propia herramienta no lo permite. En el ejemplo del cheque con dos firmas, el que va a canjear dicho cheque verifica que las dos personas hayan firmado. El problema es que la mayoría de las herramientas me permiten como administrador hacer toda una actividad de principio a fin sin necesidad de intermediarios o verificadores, porque para eso se es administrador del sistema, de un directorio activo o de una consola de antivirus.
En ambientes de desarrollo de software se puede llevar a cabo esta segregación por ejemplo entre los que diseñan, los que codifican y los que dan mantenimiento al software en producción. Pero esta segregación se logra porque estos ambientes son sufrientemente diferentes para tener una separación de tareas; son actividades/procesos independientes. A diferencia de un administrador de ruteadores, donde es un solo proceso y el administrador puede enrutar a voluntad y depende de él avisar/informar de los cambios y pedir autorización.
En conclusión, la separación o segregación de actividades es una buena idea y que muchos libros escupen, pero en la vida real de TI no siempre se puede llevar a cabo en cualquier situación. Los roles de muchas herramientas no están pensados para tener "verificadores" o "autorizadores" que sean necesarios para completar una actividad dada. La segregación se tiene que hacer en procesos y las herramientas tener la funcionalidad de segregación.