Esta conferencia fue dictada originalmente durante la 4ta Campus Party en Bogotá (2011). Se introduce Drools como motor de inferencia, detallando su funcionamiento y utilidad para el desarrollo de aplicaciones web empresariales bajo la plataforma Seam, haciendo énfasis en el uso de reglas como una herramienta de seguridad que facilita la implementación de políticas de autorización y control de acceso.
1. OLAP-2011 All Rights Reserved
AUTORIZACIÓN BASADA
EN REGLAS CON DROOLS
Por: Óscar López, M.Sc. Twitter: @oscar_lopez
2. Agenda
¨ Conceptos de Seguridad
¨ Reglas de Inferencia
¨ Drools + Seam =
Autorización Basada en Reglas
¨ Mucho Más que Autorización
¨ Bibliografía
¨ Preguntas
OLAP-2011 All Rights Reserved
4. Definiciones
¨ Autenticación: Afirmación de identidad, permite o niega el
acceso a un sistema de información
¨ Autorización: Mecanismo y política de especificación de permisos
¨ Credenciales: Combinación de usuario y contraseña de un usuario
¨ Permiso: Derecho de acceso a un recurso, y a las operaciones
sobre éste. "Fino”
¨ Principal: nombre de usuario o login
¨ Regla: Función de autorización, recibe condiciones y ejecuta
acciones que conceden o revocan un permiso
¨ Rol: Perfil de usuario en el sistema, agrupación de permisos.
"Grueso"
OLAP-2011 All Rights Reserved
5. Mecanismos de Autorización
Autorización
Roles Permisos
Tabla de Grupos Tabla de Reglas
Roles LDAP Permisos
OLAP-2011 All Rights Reserved
6. ¿Cuándo Usar Autorización por Reglas?
¨ Se desea separar la lógica de autorización de los objetos sobre los
que aplica, centralizando las reglas de acceso y facilitando su
mantenibilidad Las condiciones de autorización son muy
dinámicas y podrían estar cambiando constantemente en el tiempo
¨ Se desea evitar una explosión de roles en el sistema La adición
de una restricción de acceso implica tener que crear un nuevo rol
sólo para ella y sería más sencillo decidir si se permite o no el
acceso en función del contexto
¨ Se desea evitar tener que agregarle roles adicionales a un usuario
Existen restricciones de acceso globales y no corresponden
claramente a un rol
¨ Se desea evitar tener lógica compleja de autorización en EL
(rendered), que puede impactar negativamente el desempeño de la
aplicación Existe código de autorización complejo (más de 3
condiciones) y depende de condiciones adicionales del contexto
OLAP-2011 All Rights Reserved
8. Reglas de Inferencia
¨ Campo de estudio de la inteligencia artificial: Sistemas
Expertos, Sistema de Reglas de Producción
¨ Lógica proposicional, lógica de predicados de primer orden
¨ Una regla es una estructura lógica que razona sobre una
representación del conocimiento
¨ Tiene la forma: condición-acción (premisas conclusiones)
¨ Un motor de inferencia hace match de datos contra reglas,
y deduce conclusiones que resultan en acciones
¨ Forward-chaining o Backward-chaining
¨ Una buena implementación de un motor de inferencia
generalmente usa alguna variante del algoritmo Rete
OLAP-2011 All Rights Reserved
13. Drools + Seam =
Autorización Basada en Reglas
OLAP-2011 All Rights Reserved
14. Drools
¨ Motor de inferencia basado en reglas, soporta forward
y backward-chaining, procesamiento de eventos
¨ Implementa el algoritmo ReteOO, optimizado para
operar sobre objetos
¨ Plataforma de integración de lógica del negocio
¨ Anteriormente conocido como JBoss Rules
¨ Drools Expert
¨ Versión estable más reciente: 5.2
¨ Licencia: Apache v2.0
OLAP-2011 All Rights Reserved
15. Seam Framework, MVEL
¨ Seam
¤ Framework web JEE5/6 que combina tecnologías AJAX, JSF,
EJB3, JPA
¤ Biyección, Contextos, Manejador de Persistencia,
Componentes
¤ Versiones estables más recientes: 2.2.2.Final y 3.0.0.Final
¤ Licencias: LGPL (2.x) y Apache v2.0 (3.x)
¨ MVEL
¤ Lenguaje de Expresiones embebible en Java
¤ Estático o dinámico, interpretado o compilado, ¡muy rápido!
¤ Licencia: Apache v2.0
¤ Versión estable más reciente: 2.0.19 Final
OLAP-2011 All Rights Reserved
28. Bibliografía
1. Drools JBoss Rules 5.0 Developer's Guide.
Packt Publishing, 2009
2. Seam in Action. Manning, 2009
3. Seam Framework: Experience the
Evolution of Java EE, 2nd Edition. Prentice
Hall, 2009
4. Seam Security (http://docs.jboss.org/
seam/latest/reference/en-US/html/
security.html - consultado en junio de
2011)
OLAP-2011 All Rights Reserved
29. Bibliografía (cont.)
5. Drools Documentation (http://
www.jboss.org/drools/documentation -
consultado en junio de 2011)
6. Charles Forgy. Rete: A fast algorithm
for the many pattern/many object
pattern match problem. Artificial
Intelligence, 19(1):17–37, 1982.
7. Código de ejemplo:
http://bit.ly/drools-authorization
OLAP-2011 All Rights Reserved