Liferay Security Manager con PACL


¡Muy buenas!

Hace unas semanas tuvimos la necesidad de añadir una lista de control de acceso al portal o Portal Access Control List (PACL) a uno de nuestros portlets. La razón es que algunos portales Liferay pueden tener activado el Security Manager. Básicamente lo que hace es controlar todas las acciones que hacen los portlets i que no ejecuten código malicioso. El Security Manager distinguirá un código malicioso (no tiene porqué ser malicioso per se) si éste hace un acceso no registrado en la lista PACL.

Una vez sabido ésto, vamos a explicar como generar el listado para tu portlet. Primero deberemos activar tu portal en desarrollo en modo security, se ha de añadir la siguiente línea en el portal-ext.properties i reiniciar el tomcat:

portal.security.manager.strategy=liferay

Modificamos el archivo liferay-plugin-package.properties del portlet y añadimos la siguiente línea:

security-manager-enabled=generate

Compilamos y hacemos deploy en el portal, entonces podremos ver cómo se genera una carpeta a la altura del tomcat y contendrá los accesos que haga nuestro portlet:

[liferay.home]/pacl-policy/[servletContextName].policy

Para éste punto es importante, ejecutar todas las funcionalidades que tenga tu portlet para registrar todos los accesos que haga. Los accesos pueden ser des de llamadas a Local Services de Liferay, llamadas a apis externas o accesos a carpetas en el mismo servidor.

Una vez hecho esto, tendremos que copiar el contenido generado en el archivo .policy y añadirlo a el liferay-plugin-package.properties.

Para comprobar que hemos hecho bien el procedimiento, modificamos la propiedad security-manager-enabled a true en el liferay-plugin-package.properties:

security-manager-enabled=true

#Reglas generadas PACL

security-manager-get-bean-property[portal]=\
           com.liferay.portal.kernel.exception.SystemException,\
           com.liferay.portal.kernel.language.LanguageUtil,\
           com.liferay.portal.kernel.util.PrefsPropsUtil,\
           jodd.util.ReflectUtil

    security-manager-hook-language-properties-locales=\
           ca,\
           en,\
           es

#etc

Y, ejecutamos las funcionalidades a falta para ver si el Security Manager encuentra algo no especificado en el PACL.

Con esto tenemos que para tener un control de seguridad podemos activarlo en nuestro portal (recomendable si tienes portlets de terceros) y gracias a la lista PACL podremos comprobar a qué accede el portlet.
¡Un saludo!


Leave a Reply

Your email address will not be published. Required fields are marked *