Zona HTML Zona Java Zona PHP Zona ASP Zona Bases de datos
Inicio > Tutoriales > Lenguajes orientados a objeto > Java > J2SE > Seguridad en la Plataforma Java 2 JDK 1.2
-Tutoriales

Seguridad en la Plataforma Java 2 JDK 1.2


Guía Rápida para Controlar Aplicaciones

. Observar la Libertad de las Aplicaciones

Cuando se ejecuta una aplicación no se instala automáticamente un controlador de seguridad. En el siguiente paso, veremos como aplicar las mismas políticaa de seguridad a una aplicación encontrada en el sistema local de ficheros que a un applet de la red. Primero, demostraremos que no se instala ningún controlador de seguridad para las aplicaciones, y así las aplicaciones tienen acceso total a los recursos, como fue siempre en el caso del JDK 1.1.

Creamos un fichero llamado GetProps.java copiando o descargando el código fuente GetProps.java.

Los ejemplos de esta lección asumen que lo hemos puesto en el directorio C:\Test si estamos usando un sistema Windows o en el directorio ~/test para UNIX.

Como podrás ver si examinas el código fuente, este programa trata de leer valores de varias propiedades cuyos nombres son: "os.name" , "java.version", "user.home", y "java.home".

Ahora compila y ejecuta GetProps.java. Deberías ver una salida como esta.

C:\TEST>java 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: 1.2.2
    About to get user.home property value
      Your user home directory is: C:\WINDOWS
    About to get java.home property value
      Your JRE installation directory is: C:\JDK1.2.2\JRE

Como se puede ver, las aplicaciones tienen acceso total a los valores de las propiedades, como se ve en la siguiente figura.

. 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 política 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 política 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 acceso y reporta una AccessControlException. Esta excepción indica que la política actualmente activo, que consiste en entradas de uno o más ficheros de política, no conceden permiso para leer la propiedad."user.home".

. El Fichero de Política del Sistema

El fichero de política 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 política 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 política del sistema.

. Configurar el Fichero de Política para Conceder los Permisos Requeridos

Podríamos usar Policy Tool para abrir el fichero de política lllamado mypolicy creado en "Visión Rápida para Controlar Applets. Añadiremos una nueva entrada de política concediendo permiso para el código del directorio donde se almacena GetProps.class para leer los valores de las propiedades "user.home" y "java.home", como se muestra en la siguiente figura.

Nota para usuarios de UNIX:  Las instrucciones ilustran la creacción del fichero de política para un sistema Windows. Los pasos son exactamente iguales si trabajas sobre un sistema UNIX, con las siguientes diferencias.

  • Se recupera el fichero mypolicy desde el directorio test en el directorio home.
  • Para el CodeBase URL en el paso para conceder los permisos requeridos, se puede sustituir file:${user.home}/test/ por file:/C:/Test/. De forma alternativa se puede especificar directamente el directorio home en vez de referirse a la propiedad "user.home", como file:/home/susanj/test/.

. Abrir el Fichero de Política

Arrancamos Policy Tool tecleando lo siguiente en la línea de comandos.

policytool

Esto trae la ventana de Policy Tool. Para abrir el fichero de política, usamos el comando Open en el menú File. Esto nos presentará un diálogo Open, que podemos usar para navegar por la estructura de directorios hasta obtener el dicheros que contiene el fichero de política (es decir, el directorio C:\Test\).

Elegimos el fichero mypolicy en ese directorio y pulsamos el botón Open.

Esto rellenerá la ventana de Policy Tool con la información del fichero de política mypolicy, incluyendo el nombre del fichero de política y la parte CodeBase de la entrada de política creada en la lección "Visión Rápida para Controlar Applets".

. Conceder los Permisos Requeridos

Para conceder a la aplicación GetProps permiso para leer los valores de las propiedades "user.home" y "java.home", debemos crear una entrada de política que conceda esos permisos. Elegimos el botón Add Policy Entry en la ventana principal de Policy Tool. Esto nos muestra la caja de diálogo Policy Entry, como se muestra en la siguiente figura.

Tecleamos la siguiente URL de fichero dentro de la caja de texto CodeBase para indicar que vamos a conceder permiso al código que venga del directorio especificado, que es el directorio en el que se encuentra GetProps.class.

file:/C:/Test/

(Nota, esto es una URL y siempre se deben poner barras inclinidas, no barras inclinadas invertidas.)

Dejamos en blanco la caja de texto SignedBy, ya que no necesitamos que el código esté firmado.

Para añadir el permiso para leer el valor de la propiedad "user.home", elegimos el botón Add Permission. Esto nos trae la caja de diálogo Permissions.

Hacemos los siguiente.

  1. Elegimos Property Permission en la lista desplegable Permission. El nombre completo del tipo de permiso (java.util.PropertyPermission) aparecerá en la caja de texto que hay a la derecha de la lista desplegable.
  2. Teclamos el siguiente texto en la caja de texto que hay a la derecha de la lista etiquetada Target Name para especificar la propiedad "user.home".
    user.home
    
  3. Especificamos el permiso para leer esta propiedad seleccionando la opción read en la lista desplegable Actions.

Ahora la caja de diálogo Permissions se parecerá a esto.

Pulsamos el botón OK. El nuevo permiso aparecerá en una lista en la ventana de policy entry.

Para añadir permiso para leer el valor de la propiedad "java.home", elegimos de nuevo el botón Add Permission. Y en la caja de diálogo Permissions hacemos lo siguiente.

  1. Elegimos Property Permission en la lista desplegable Permission. El nombre completo del tipo de permiso (java.util.PropertyPermission) aparecerá en la caja de texto que hay a la derecha de la lista desplegable.
  2. Teclamos el siguiente texto en la caja de texto que hay a la derecha de la lista etiquetada Target Name para especificar la propiedad "java.home".
    java.home
    
  3. Especificamos el permiso para leer esta propiedad seleccionando la opción read en la lista desplegable Actions.

Ahora la caja de diálogo Permisión se parecerá a esto:.

Pulsamos de buevo el botón OK. Los nuevos permisos aparecerán en líneas en la ventana de policy entry, como se muestra en la siguiente figura.

Ya hemos especificado las entrada de política, por eso elegimos el botón Done en la caja de diálogo Policy Entry. Ahora la ventana Policy Tool incluye una línea representando la nueva entrada de política, mostrando el valor CodeBase.

. Grabar el Fichero de Política

Para grabar el fichero de política, simplemente elegimos el comando Save en el menú File.

Luego salimos de Polcy Tool eligiendo el comando Exit en el menú File.

. Ver los Efectos del Fichero de Política

Ahora que hemos creado el fichero de política mypolicy deberíamos poder ejecutar con éxito la aplicación GetProps para leer las propiedades especificadas con un controlador de seguridad, como se ve en la siguiente figura..

Como se mencionó al final de la lección Visión Rápida para Controlar Applets, siempre que ejecutemos un applet o una aplicación con un controlador se seguridad, los ficheros de política que son cargados y usados por defecto son los especificados en el "security properties file", que está localizado en uno de los siguientes directorios.

  Windows.
    java.home\lib\security\java.security 
  UNIX.
    java.home/lib/security/java.security

Observa que java.home indica el directorio en el que se instaló el JRE.

Tenemos dos posibles formas de hacer que el fichero mypolicy sea considerado como parte de la política general, además de los ficheros de política especificados en el fichero de propiedades de seguridad. Podemos especificar el fichero de política adicional en una propiedad pasada al sistema de ejecución, como se describe en Aproximación 1, o añadir una nueva línea al fichero de propiedades de seguridad, como se describe en Aproximación 2.

. Aproximación 1

Podemos usar un argumento de la línea de comandos para el intérprete, -J-Djava.security.policy, para especificar un fichero de política que debería ser usado además de los especificados en el fichero de propiedades de seguridad.

Debemos asegurarnos de que estamos en el directorio que contiene GetProps.class y mypolicy.Luego podemos ejecutar la aplicación GetProps y pasarle el fichero de política mypolicy al intérprete tecleando lo siguiente en la línea de comandos.

java -Djava.security.manager
     -Djava.security.policy=mypolicy GetProps

(Recuerda que -Djava.security.manager es necesario para poder ejecutar una aplicación con un controlador de seguridad, como se vió en el paso "Ver Cómo Restringir las Aplicaciones".)

El programa debería reportar los valores de las propiedades "user.home" y "java.home".

Si la aplicación todavía reporta un error, es que hay algo erróneo en el fichero de política. Debemos usar de nuevo la herramienta Policy Tool para corregir los posibles errores.

. Aproximación 2

Podemos especificar un número de URLs en las propiedades policy.url.n en el fichero de propiedades de seguridad y se cargarán todos los ficheros de política designados. Por eso una forma de hacer que el fichero mypolicy se aconsiderado por el intérprete Java es añadir una entrada especificando este fichero de política en el fichero de propiedades de seguridad.

Ya hemos creado una entrada en el última parte de la lección Visión Rápida para Controlar Applets. Si nuestro fichero de propiedades de seguridad todavía tiene esta entrada, estamos listos para ejecutar la aplicación. De otra forma necesitamos añadir la entrada. Para hacerlo, abrimos el fichero de propiedades de seguridad en un editor que soporte ficheros de texto ASCII. Luego añade la siguiente línea después de la línea que empieza con policy.url.2.

  Windows.
    policy.url.3=file:/C:/Test/mypolicy
  UNIX.
    policy.url.3=file:${user.home}/test/mypolicy

En un sistema UNIX también puedes especificar tu directorio home como

policy.url.3=file:/home/susanj/test/mypolicy

. Ejecutar la Aplicación

Ahora deberíamos poder ejecutar la aplicación con éxito.

java -Djava.security.manager GetProps

Al igual que con la aproximación 1, si todavía obtenemos una excepción de seguridad, es que hay algo erróneo en el fichero de política.

Importante: Antes de continuar probablemente querrás borrar la línea que acabamos de añadir al fichero de propiedades de seguridad, ya que no querrás que el fichero mypolicy sea incluido cuando no estás ejecutando las lecciones del tutor.

 
Patrocinados
 

Copyright © 1999-2006 Programación en castellano. Todos los derechos reservados.
Formulario de Contacto - Datos legales - Publicidad

Hospedaje web y servidores dedicados linux por Ferca Network