Permisos avanzados de role en Tomcat

Tenemos un problema (esto sirve para delegar funciones en otro departamento :P) de gran dependencia del equipo de sistemas para iniciar o parar servicios. Como el usuario del manager de administracion del tomcat debe de ser confidencial, no todo el mundo puede parar o reiniciar una aplicacion, vamos a permitir a la parte de desarrollo parar o iniciar una aplicacion.

La propuesta es modificar las politicas de usuarios y roles en tomcat, aplicandolos desde el manager. En este ejemplo lo pongo en Windows, pero seria igual de valido en Unix siempre teniendo cargado el modulo manager de tomcat.

1.- Crear un role y usuario y password asignado (en este caso “desarrollo_role” en C:\Archivos de programa\Apache Software Foundation\Tomcat 5.5\conf\tomcat-users.xml

<?xml version='1.0' encoding='utf-8'?>

<tomcat-users>

  <role rolename="tomcat"/>

  <role rolename="role1"/>

  <role rolename="manager"/>

  <role rolename="desarrollo_role" description=""/>

  <role rolename="admin"/>

  <user username="tomcat" password="tomcat" roles="tomcat"/>

  <user username="role1" password="tomcat" roles="role1"/>

  <user username="both" password="tomcat" roles="tomcat,role1"/>

  <user username="desarrollo" password="desarrollo" fullName="" roles="desarrollo_role"/>

  <user username="admin" password="admin" roles="admin,manager"/>

</tomcat-users>

2.- Dar permisos de ese role en el manager, le daremos start y stop: En C:\Archivos de programa\Apache Software Foundation\Tomcat 5.5\server\webapps\manager\WEB-INF\web.xml al final del archivo:

<security-constraint>

    <web-resource-collection>

      <web-resource-name>HTMLManger and Manager command</web-resource-name>

      <url-pattern>/start</url-pattern>

      <url-pattern>/stop</url-pattern>

    </web-resource-collection>

    <auth-constraint>

       <!-- NOTE:  This role is not present in the default users file -->

       <role-name>desarrollo_role</role-name>

    </auth-constraint>

  </security-constraint>

3.- Reiniciar el tomcat y acceder desde un navegador a la url correspondiente parando/arrancando la aplicacion, en este caso la aplicacion desplegada “admin” que se inclute en algunas instalaciones por defecto:

Parar:

http://localhost:8080/manager/stop?path=/admin

Iniciar:

http://localhost:8080/manager/start?path=/admin

Como podreis ver en el xml existen otras acciones a permitir o denegar.

Para tratar de que el usuario solo pueda parar su aplicacion concreta y no darle acceso al resto de aplicaciones no he conseguido hacerlo funcionar por mas que he probado y buscado.

Lo cierto es que las buenas practicas son aplicables si solo permitimos parar una determinada aplicacion ya que en una empresa puede haber varios grupos de desarrollo con aplicaciones en un servidor de aplicaciones comun.

Etiquetas: , ,

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s


A %d blogueros les gusta esto: