Adición del archivo was.policy a las aplicaciones para la seguridad de Java 2
Es posible que una aplicación necesite un archivo was.policy si accede a recursos que requieren más permisos de los concedidos en el archivo app.policy por omisión.
Acerca de esta tarea
El archivo de políticas por omisión de todas las aplicaciones se especifica en app.policy. Este archivo es proporcionado por la seguridad del producto, es común a todas las aplicaciones y no debe modificarse. Añada cualquier permiso nuevo que sea necesario para una aplicación al archivo was.policy.
El archivo app.policy proporcionado por WebSphere Application Server reside en raíz_servidor_apl/config/cells/profile/profile_name/config/nombre_célula/nodes/nombre_nodo/app.policy. Los contenidos del archivo app.policy se muestran en el ejemplo siguiente:
// Los siguientes permisos se aplican a todos los componentes bajo la aplicación.
grant codeBase "file:${application}" {
// JavaMail necesita los siguientes
permission java.io.FilePermission "
${was.install.root}${/}lib${/}activation-impl.jar",
"read";
permission java.io.FilePermission "
${was.install.root}${/}lib${/}mail-impl.jar","read";
};
// Los siguientes permisos se aplican a todos los archivos .jar (excepto
// los archivos JAR de enterprise beans) de la aplicación.
grant codeBase "file:${jars}" {
permission java.net.SocketPermission "*", "connect";
permission java.util.PropertyPermission "*", "read";
};
// Los siguientes permisos se aplican a los recursos de conector de la aplicación
grant codeBase "file:${connectorComponent}" {
permission java.net.SocketPermission "*", "connect";
permission java.util.PropertyPermission "*", "read";
};
// Los siguientes permisos se aplican a todos los módulos web (archivos .war)
// de la aplicación.
grant codeBase "file:${webComponent}" {
permission java.io.FilePermission "${was.module.path}${/}-", "read, write";
// donde "was.module.path" es la vía de acceso el módulo web
// está instalado. Para obtener los demás símbolos, consulte el concepto de política dinámica.
permission java.lang.RuntimePermission "loadLibrary.*";
permission java.lang.RuntimePermission "queuePrintJob";
permission java.net.SocketPermission "*", "connect";
permission java.util.PropertyPermission "*", "read";
};
// Los siguientes permisos se aplican a todos los módulos EJB de la aplicación.
grant codeBase "file:${ejbComponent}" {
permission java.lang.RuntimePermission "queuePrintJob";
permission java.net.SocketPermission "*", "connect";
permission java.util.PropertyPermission "*", "read";
};
Si se requieren más permisos para una aplicación o uno o varios módulos de una aplicación, utilice el archivo was.policy de dicha aplicación. Por ejemplo, para otorgar permisos adicionales a toda la aplicación, utilice codeBase de ${aplicación} y añada los permisos necesarios. De forma similar, utilice codeBase de ${webComponent} y ${ejbComponent} para otorgar permisos adicionales a todos los módulos web y todos los módulos de enterprise bean de la aplicación. Puede asignar permisos adicionales a cada módulo (el archivo .war o el archivo .jar), tal como se muestra en el siguiente ejemplo.
En este ejemplo siguiente se ilustra cómo añadir permisos adicionales para una aplicación al archivo was.policy:
// otorgar permisos adicionales a un módulo web
grant codeBase " file:aWebModule.war" {
permission java.security.SecurityPermission "printIdentity";
};
// otorgar permiso adicional a un módulo EJB
grant codeBase "file:aEJBModule.jar" {
permission java.io.FilePermission "
${user.install.root}${/}bin${/}DefaultDB${/}-", "read,write,delete";
// donde, ${user.install.root} es la propiedad del sistema cuyo valor está
// situado en el directorio raíz_servidor_apl.
};
Para utilizar un archivo was.policy de la aplicación, realice los pasos siguientes:
Procedimiento
Resultados
Ejemplo
Este paso es necesario para que las aplicaciones se ejecuten correctamente cuando la seguridad de Java 2 esté habilitada. Si no se ha creado el archivo was.policy y no contiene los permisos necesarios, es posible que la aplicación no pueda acceder a los recursos del sistema.
Si falta un permiso, se genera la excepción java.security.AccessControlException. El permiso que falta se indica en los datos de excepción, por ejemplo,
![[IBM i]](../images/iseries.gif)
![[z/OS]](../images/ngzos.gif)
java.security.AccessControlException: access denied (java.io.FilePermission
${was.install.root}/java/ext/mail.jar read)
![[IBM i]](../images/iseries.gif)
![[z/OS]](../images/ngzos.gif)
grant codeBase
"file:ubicación_instalación_cliente_usuario" {
permission java.io.FilePermission
"${was.install.root}$(/)java$(/)jre$(/)lib$(/)ext$(/)mail.jar", "read";
};
Las líneas de información sobre permisos anteriores se han dividido para la ilustración. Escriba el permiso en una línea.