World Map
Java Service Wrapper is the easiest way to make your product more reliable.
  • Free Trial
  • Buy Now
Modelo de Seguridad

Como hacer uso del Modelo de Seguridad Java y el Java Service Wrapper

El Java Service Wrapper implementa una serie de permisos que pueden utilizarse para controlar completamente el acceso al API del Wrapper utilizando el Modelo estándar de Seguridad Java.

Controlar otro servicio desde la misma Aplicación Java.

El Wrapper permite iniciar, detener, interrogar y realizar otras operaciones en cualquier otro servicio en un sistema mediante el envío de los códigos de control adecuados. Esto puede ser de gran ayuda, pero si se usa incorrectamente también pueden surgir graves problemas de seguridad en un servidor. Por esta razón, el acceso al método WrapperManager.sendServiceControlCode(...) esta desabilitado por defecto. Para hacer uso de esta opción se requiere que el Administrador de Seguridad sea instalado en la máquina JVM y que permisos específicos sean concedidos.

Tenga en cuenta que el hecho de establecer un controlador de seguridad probablemente hará que muchas cosas en la aplicación empiecen a fallar con errores de seguridad. Hay que entrar y conceder los permisos adecuados para su aplicación. Vea el siguiente tutorial de ORACLE para obtener más información sobre los administradores de seguridad: http://java.sun.com/docs/books/tutorial/security/tour2/index.html

Configuración de un Administrador de Seguridad:

La manera más simple de configurar un administrador de seguridad en la máquina JVM es agregar las siguientes propiedades a su archivo: wrapper.conf

Ejemplo de Configuración:
wrapper.java.additional.1=-Djava.security.manager
wrapper.java.additional.2=-Djava.security.policy=../conf/java.policy

java.security.manager:

La primer propiedad del sistema java.security.manager (J2SE 5.0) (JavaSE6), le notifica a Java que el administrador de seguridad debe crearse cuando la máquina JVM también sea creada.

java.security.policy:

La segunda propiedad del sistema java.security.policy (J2SE 5.0) (JavaSE6), entonces le informa la ubicación de un archivo el cual describe los permisos que deben ser concedidos dentro de la aplicación.

El archivo de permisos es un simple archivo de texto.

Ejemplo del archivo de permisos:
// Give Wrapper classes full permissions
grant codeBase "file:../lib/wrapper.jar" {
        permission java.security.AllPermission;
};

// Grant various permissions to a specific service.
grant codeBase "file:../lib/-" {
        permission org.tanukisoftware.wrapper.security.WrapperServicePermission
"myservice", "interrogate,start,stop";
};

El primer bloque permite a las clases wrapper.jar tener todos los permisos para hacer lo que deseen. Esto se recomienda puesto que el Wrapper debe ser capaz de poner en marcha la aplicación completa esto significa que cualquier cosa que su aplicación haga se origina desde el Wrapper.

El segundo bloque significa que cualquier otra clase en jars en su directorio lib son capaces de hacer llamadas para interrogar, iniciar y detener el servicio (my service) a través del Wrapper. Si no se encuentran ahí entonces como resultado las llamadas serán lanzadas como Excepciones de Seguridad.

WrapperManager.fireUserEvent API

En la versión del Wrapper 3.5.8 la posibilidad de llamar a los eventos definidos del usuario a través del API llamado WrapperManager ha sido agregado. Si bien esta es una característica de gran alcance para facilitar el uso de eventos del usuario para los desarrolladores, también puede causar problemas de seguridad si se le permite a un programa llamar a todos los eventos desde sí mismo.

Para proporcionar una solución a esto el API hace uso de la clase WrapperUserEventPermission el cual puede ser establecido en el archivo de permisos del Administrador de Seguridad.

Ejemplo del Archivo de Permisos:
grant codeBase "file:../lib/some.jar" {
        permission org.tanukisoftware.wrapper.security.WrapperUserEventPermission "fireUserEvent", "-10, 50, 100-200, 555-";
}

El ejemplo anterior suministra a la biblioteca "../lib/some.jar" con el permiso para llamar a los siguientes Eventos del Usuario:

  • "-10" : si el número de inicio de un intervalo no se especifica, significa que la secuencia inicia con su primer valor, por ejemplo "1"

  • "50" : números se pueden definir individualmente

  • "100-200" : todos los números entre 100 y 200 (incluye 100 y 200)

  • "555-" : todos los números entre 555 en adelante hasta un límite alto de eventos disponibles, por ejemplo 32767.

NOTA

Para mantener una consistencia los números deben ser ordenados, esto significa que lo siguiente no sería válido: "5, -4", "1, 8-10, 7", "9-, 7", etc. Los errores de configuración provocará un error de acceso denegado.