Página siguiente Página anterior Índice general

6.8 Ficheros de configuración

La política de seguridad se configura a través de al menos dos ficheros del sistema:

$JAVA_HOME/lib/security/java.policy
$JAVA_HOME/lib/security/java.security
donde $JAVA_HOME es el directorio raíz del jdk1.2.

A continuación describiremos el formato de los dos ficheros, comenzando por sus características comunes. Si se desea una discusión ampliada se puede consultar la sección de seguridad de la documentación del jdk1.2 en el URL http://java.sun.com/products/jdk/1.2/docs/guide/security/PolicyFiles.html o directamente consultando los ficheros instalados en su sistema.

Variables en los ficheros de configuración

Tanto el fichero java.policy como el fichero java.security pueden incorporar variables que les permiten hacer más dinámica la configuración de la política de seguridad. Las variables de extensión son similares a las variables del shell de Unix, por ejemplo la línea

permission java.io.FilePermission "${user.home}", "read"

permite que cualquier usuario disponga de permiso de lectura sobre su directorio home. La propiedad ${user.home} tomará el valor del directorio del usuario.

Otra variable muy útil es ${/}, cuyo valor será el carácter de separación de directorios propio del sistema operativo, es decir, en Unix equivale a / y en DOS a \.

Nota: No se pueden anidar propiedades, por ejemplo ${user.${foo}}, no funcionaría bien incluso si foo tuviera el valor home.

El fichero java.policy

La política de seguridad del sistema se configura a partir de uno o más ficheros de configuración. Estos ficheros indican que permisos se conceden a que código y para que recursos específicos.

El fichero de configuración de la política de seguridad esencialmente contiene una lista de entradas. Puede contener una entrada keystore y una o más entradas grant.

El keystore es la base de datos de claves privadas y sus certificados asociados. La entrada keystore sirve para indicar dónde consultar las claves públicas de las entidades firmantes especificadas en las entradas grant del fichero. La entrada keystore debe aparecer en el fichero si cualquier entrada grant especifica el alias de una entidad que firma.

El fichero sólo puede contener una entrada keystore en el fichero (cualquier otra después de la primera será ignorada), y de ubicarse independientemente de cualquier otra entrada. Su sintaxis es:

keystore "url_fichero_keystore"
donde url_fichero_keystore especifica la localización URL de la base de datos. El URL es relativo a la localización del fichero de configuración, es decir, si el fichero de configuración se encuentra en el URL http://case.iti.upv.es/seguridad/iti.policy y la entrada del keystore es keystore ".keystore" el keystore se encontrará en el URL http://case.iti.upv.es/seguridad/.keystore. También puede especificarse un URL absoluto.

Cada entrada grant consiste básicamente en un la especificación del origen de una clase y sus permisos. Cada entrada grant del fichero sigue el siguiente formato, donde la palabra reservada grant indica el comienzo de una nueva entrada. Dentro de cada entrada, la palabra reservada permission marca el comienzo de un nuevo permiso en la entrada.

grant [SignedBy "lista_alias_entidades_firmantes"] [, CodeBase "URL"] {
permission clase_permiso ["recurso"][, "acción"][, SignedBy "lista_alias"];
permission ...
...
};

Se permiten espacios en blanco inmediatamente antes o después de las comas. La clase_permiso debe ser el nombre de una clase de permisos, por ejemplo java.io.FilePermission y no puede abreviarse escribiendo únicamente FilePermission.

El campo acción es opcional y puede omitirse si la clase del permiso no lo necesita. El campo CodeBase también es opcional si se omite significa cualquier código.

El fichero java.security

En este fichero se almacena las propiedades necesarias para configurar la seguridad del sistema. En el se almacenan propiedades tan necesarias como los proveedores de seguridad instalados en el sistema, la ubicación de los ficheros de configuración, nombre de la clase que implementa la política de seguridad, etc.

Los proveedores instalados se registran añadiendo al fichero una línea con el formato:

security.provider.n=nombre_clase_provider
donde n indica el número de proveedor. Veremos como se usa en el apartado dedicado a la arquitectura criptográfica de Java.

La localización de los ficheros de configuración se especifica como valores de propiedades cuyos nombres son de la forma policy.url.n donde n es un número. Por defecto el sistema tiene definidas las siguientes ubicaciones:

policy.url.1=${java.home}${/}lib${/}security${/}java.policy
policy.url.2=${user.home}${/}.java.policy

El sistema establece la política de seguridad primero leyendo policy.url.1, e incrementa el número hasta que no encuentra otra entrada. La evaluación es incremental, es decir, el sistema configura su política en base a los tres ficheros de configuración.

Nota: Si se dispone de policy.url.1 y policy.url.3, el fichero 3 no se leerá, los números de ficheros han de ser correlativos.


Página siguiente Página anterior Índice general