Gestionar permisos sin estrés

¿Es administrador de Salesforce y recibe un volumen ingente de solicitudes de permisos? Le presentamos nuestro experimento con el filtrado colaborativo para mostrarle cómo logramos un equilibrio entre la seguridad y la sencillez.
Gestionar permisos sin estrés

Como administrador de Salesforce para una organización de gran tamaño, parte del trabajo es asignar y retirar permisos a un flujo constante de empleados que vienen y van o que cambian de puesto. No es tarea fácil (ni eficiente) gestionar cientos o miles de permisos potenciales en toda la organización para lograr que todos los empleados puedan hacer su trabajo sin descuidar por ello la seguridad de la empresa.

Puede asignar todos los permisos a todos los usuarios, pero no parece sensato ni seguro que un becario y un director ejecutivo tengan los mismos permisos de escritura y eliminación sobre los mismos elementos. Otra opción es no asignar apenas privilegios (siguiendo el principio de mínimos privilegios) a todos los usuarios salvo el director ejecutivo. Es una opción segura, pero dudo que le resultara agradable recibir una avalancha de solicitudes de permisos para que todo el mundo pueda hacer su trabajo. 

Cómo administrador, ¿dónde está el equilibrio entre ofrecer seguridad permitiendo disponer a la vez de funciones básicas? Ojalá hubiera una forma de saber qué harán los demás en el futuro para poder configurar los respectivos permisos y listo. 

Entendemos que, como administrador, le gustaría trabajar con cierto nivel de relajación. 

Con este objetivo, el equipo de Ciencia de datos de Detección y respuesta (DnR) de Salesforce se puso manos a la obra para definir un método que permitiera prever el futuro y predecir y recomendar solo el conjunto de permisos adecuado (y mínimo) a los empleados para que estos pudieran hacer su trabajo de manera productiva, al tiempo que se mejorara la seguridad de su organización. Para ello, supervisamos los permisos que usan y disfrutan todos los usuarios de una organización, y luego usamos esos datos para predecir o recomendar subconjuntos de permisos que puede necesitar un nuevo usuario o un usuario cualquiera en función de su actividad. 

¿Le suena? Podríamos compararlo con ver y ordenar sus series favoritas en un servicio de streaming. Cuantas más series vea o clasifique, mejor podrá el servicio determinar sus preferencias y ofrecerle recomendaciones más acertadas. En nuestro caso, en lugar de series, tenemos permisos y conjuntos de permisos, y en lugar de clasificar películas de forma explícita, supervisamos la actividad de uso. Y todo ello de forma automática. Así, en lugar de decidir y asignar permisos y conjuntos de permisos a los usuarios manualmente, el administrador puede disfrutar dándose un atracón de la última temporada de Stranger Things. No en sus horas de trabajo, obviamente.

Echemos un vistazo en profundidad para ver cómo funciona. 

En primer lugar, el principio fundamental que empleamos para asignar permisos se conoce como principio de "privilegios mínimos". Seguir este principio puede aumentar la seguridad de su organización. Si un ciberdelincuente se apropiara de una cuenta, la onda expansiva quedaría limitada a los privilegios o permisos de acceso asociados a esa cuenta en particular. 

En segundo lugar, empleamos una técnica denominada filtrado colaborativo, que usan principalmente los sistemas de recomendación para aprender de comportamientos de anteriores usuarios y recomendar artefactos a los usuarios nuevos o existentes. La idea es filtrar colaborativamente los permisos y conjuntos de permisos que puede necesitar un usuario basándonos en las actividades que requieren permisos desempeñadas por usuarios de perfiles similares.

¿Todo listo para seguir aprendiendo? 

Teniendo en cuenta los datos de uso de permisos de todos los usuarios de una organización del mes pasado, por ejemplo, representamos esta actividad usando una matriz A de dimensiones M × N. En este caso, M es el número de usuarios de la organización y N es el número de permisos o conjuntos de permisos distintos. Las entradas de esta matriz adoptan el valor del número de veces que un usuario particular utilizó un permiso concreto. 

Después, esta matriz A se divide en dos matrices más pequeñas que recopilan información esencial presente en la matriz A. Este proceso de subdivisión se llama también factorización, y hay varias técnicas que permiten llevarlo a cabo: ALS (mínimos cuadrados alternativos), NMF (factorización de matrices no negativas), etc. Así, obtenemos dos matrices, F (M×k) y G (k×N), que se pueden combinar para formar una nueva matriz A_recon.

Figura 1: Factorización de matrices para obtener dos matrices que representen usuarios y permisos

A partir de esta matriz A_recon, obtenemos una lista ordenada de permisos a los que es probable que acceda cada usuario (representados por filas). Lo que distingue a la estrategia del filtrado colaborativo de las demás estrategias es que tiene en cuenta tanto los patrones de actividad del usuario como los patrones de sus homólogos: actividades de usuarios con perfiles similares. De este modo, no es necesario asignar manualmente a los usuarios a grupos de usuarios o funciones y otorgar permisos basados en las funciones de los usuarios, ya que la factorización de matrices se ocupa de ello.

Entonces, ¿qué implica esto para el aprovisionamiento de permisos en sí mismo? 

Pongamos que tenemos un usuario "u". Supongamos que {Puh} representa el conjunto de permisos que ha empleado el usuario "u" en su historial. Asimismo, {Pur} representa el conjunto de permisos recomendados que el modelo de filtrado colaborativo prevé que empleará el usuario, aunque aún no los ha utilizado. La unión de estos dos conjuntos {Puh} U {Pur} es el conjunto completo de permisos que probablemente resulten suficientes para el usuario. Este conjunto se compara con el conjunto de permisos otorgados al usuario, {Pg}. La diferencia de conjuntos entre {Pg} y {{Puh} U {Pur}} determinará el conjunto de permisos que el usuario probablemente no necesita. Nos referimos a este conjunto como {Pbloqueo}, y podemos desactivar estos permisos para el usuario, siguiendo el principio de privilegios mínimos. 

También podemos extraer otro conjunto de permisos recomendados a los que el usuario aún no tiene acceso. El modelo predice que estos permisos probablemente serían útiles para el usuario y que podemos recomendar al administrador que otorgue estos permisos adicionales {Potorgar}. Por ejemplo, si un nuevo usuario se incorpora a la organización, el administrador ya cuenta automáticamente con un conjunto de permisos para él. Este método se puede aplicar de forma periódica para adaptarlo a los cambios en las funciones o el ámbito de responsabilidad de los distintos usuarios.

La idea suena bien, pero ¿qué resultado da en el mundo real? 

Evaluamos este método con datos de uso de permisos recopilados de una organización de Salesforce durante un periodo de dos semanas. Esta organización concreta tiene 6128 usuarios y 286 permisos distintos. 

Averiguamos que la mayoría de los permisos concedidos a los usuarios rara vez se usan, en algunos casos no se usan ni una sola vez. Por tanto, la matriz que formamos era muy escasa (montones de ceros, lo cual es bueno). También apreciamos que recomendar aquellos permisos por encima del percentil 20 para todos los usuarios bastaba para abarcar el 98,60 % de la actividad de los usuarios observada. Es decir, el modelo de recomendación puede anticipar los permisos que necesitarán los usuarios en el futuro en el 98,60 % de las veces. Hemos logrado reducir significativamente el conjunto de permisos que asignamos a los distintos usuarios, reforzando además la seguridad de esta organización. 

En Salesforce, incorporamos la confianza y la seguridad en nuestros productos y plataformas, y lo mismo se aplica a la exploración de nuevas formas de lograr que sean aún más seguros. Manténgase al tanto mientras seguimos experimentando con este método para abarcar permisos personalizados y organizaciones de mayor tamaño y exploramos las herramientas y recursos más actuales diseñados para capacitarle como un #AdministradorFabuloso.

Esta entrada ha sido redactada por los siguientes miembros del Equipo de ciencia de datos de Detección y respuesta (DnR) de Salesforce:

Regunathan (Regu) Raadhakrishnan, responsable de ciencia de datos en el equipo de ciencias aplicadas dedicado a IA conversacional para Service Cloud Einstein. Antes de ocupar este puesto, formó parte del equipo de Ciencia de datos de Detección y respuesta (DnR) a cargo de modelos no supervisados para la detección de amenazas malintencionadas. Es doctor en Ingeniería eléctrica por la Universidad de Nueva York y autor de un libro sobre creación de resúmenes de vídeos. Ha escrito varios capítulos de libros, artículos en revistas y conferencias, y posee más de 34 patentes concedidas.

Vijay Erramilli, responsable de ciencia de datos en el equipo de Ciencia de datos de DnR, donde ha dedicado los últimos cuatro años a trabajar en soluciones basadas en datos que emplean estadística avanzada, aprendizaje automático y aprendizaje profundo para abordar diversos problemas de seguridad. Ha publicado artículos galardonados (con más de 2900 citas) en conferencias y revistas de primer nivel, ha ofrecido charlas en eventos de todo el mundo y posee varias patentes. Es doctor en Ingeniería informática por la Universidad de Boston.

Ping Yan, directora de Ciencia de datos. Lleva una década investigando sobre modos innovadores de interpretar los datos en diversos ámbitos, desde el modelado de comportamiento de los consumidores hasta la detección de amenazas de seguridad con algoritmos. Ha publicado sus trabajos en diversos formatos, como artículos de revistas, monografías y libros. Es doctora en Sistemas de información de gestión por la Universidad de Arizona. Ping ha sido ponente en diversas conferencias sobre ciencia de datos y seguridad de la información, tales como WITS, CanSecWest, OWASP AppSec y las Spark+AI Summits.

Historias recomendadas