Ver cómo Restringir las Aplicaciones

Como hemos visto en el paso anterior, cuando se ejecuta una aplicación no se instala automáticamente un controlador de seguridad. Para aplicar la misma política de seguridad a una aplciación encontrada en el sistema local de ficheros que a los applets descargados de la red, llamamos al intérprete con el nuevo argumento de la línea de comandos -Djava.security.manager.

Para ejecutar la aplicación GetProps con el controlador de seguridad por defecto, tecleamos lo siguiente:

java -Djava.security.manager GetProps
Aquí podemos ver la salida del programa:
C:\TEST>java -Djava.security.manager GetProps
    About to get os.name property value
      The name of your operating system is: Windows 95
    About to get java.version property value
      The version of the JVM you are running is: JDK 1.2.2
    About to get user.home property value
    Caught exception java.security.AccessControlException:
    access denied (java.util.PropertyPermission user.home read)
El proceso se puede ver la siguiente figura.

Propiedades Sensibles a la Seguridad

El fichero de policía del sistema, cargado por defecto, concede a todo código permiso para acceder a algunas de las propiedades más comunes como "os.name" y "java.version". Estas propiedades no son sensibles a la seguridad, por eso la concesión de dichos permisos no supone un problema.

Las otras propiedades a las que GetProps intenta acceder, "user.home" y "java.home", no están en la lista de propiedades para las que el fichero de policía del sistemas concede permiso de lectura. Así, tan pronto como GetProps intenta acceder a la primera de estas propiedades ("user.home"), el controlador de seguridad evita el accesso y reporta una AccessControlException. Esta excepción indica que el policía actualmente activo, que consiste en entradas de uno o más ficheros de policía, no conceden permiso para leer la propiedad."user.home".

El Fichero de Policía del Sistema

El fichero de policía del sistema se encuentra por defecto en:
  Windows:
    java.home\lib\security\java.policy  
  UNIX:
    java.home/lib/security/java.policy  
Observa que java.home representa el valor de la propiedad "java.home", que es una propiedad del sistema que especifica el directorio en que se instaló el JRE. Así si el JRE fue instalado en el directorio llamado C:\jdk1.2.2\jre sobre Windows y /jdk1.2.2/jre sobre UNIX, el fichero de policía del sistema estará en
  Windows:
    C:\jdk1.2.2\jre\lib\security\java.policy  
  UNIX:
    /jdk1.2.2/jre/lib/security/java.policy  

Aquí hay una copia del fichero de policía del sistema.


Ozito