Permisos de archivo app.policy
La seguridad de Java™ 2 utiliza varios archivos de política para determinar qué permisos se han otorgado a cada programa Java. La unión de los permisos contenidos en los siguientes archivos se aplica a la aplicación empresarial de WebSphere Application Server. Esta unión determina los permisos otorgados.
- Todo archivo de políticas que esté especificado en las propiedades policy.url.* del archivo java.security.
- Los archivos app.policy, gestionados por la configuración y los servicios de réplica de archivos.
- El archivo server.policy.
- El archivo java.policy.
- El archivo was.policy de la aplicación.
- La especificación de permiso del archivo ra.xml.
- La biblioteca compartida, que es el archivo library.policy.
Los cambios realizados en estos archivos se duplican en otros nodos de la célula de WebSphere Application Server, Network Deployment.
grant codeBase "file:${application}" {
permission java.lang.RuntimePermission "stopThread";
permission java.lang.RuntimePermission "modifyThread";
permission java.lang.RuntimePermission "modifyThreadGroup";
};
Para extraer el archivo de política, utilice un indicador de mandatos para especificar el siguiente mandato en una línea utilizando los valores de variables adecuados para el entorno:
![[Windows]](../images/windows.gif)
wsadmin> set obj [$AdminConfig extract
cells/nombre_célula/node/nombre_nodo/app.policy c:\temp\test\app.policy]
![[IBM i]](../images/iseries.gif)
![[z/OS]](../images/ngzos.gif)
wsadmin> set obj [$AdminConfig extract
cells/nombre_nodo/node/nombre_nodo/app.policy /temp/test/app.policy]
Edite el archivo app.policy extraído con la herramienta Policy Tool. Para obtener más información, consulte el apartado Utilización de PolicyTool para editar archivos de política para la seguridad de Java 2. Los cambios realizados en el archivo app.policy son locales para el nodo.
Para incorporar el archivo de política, utilice un indicador de mandatos para especificar el siguiente mandato en una línea utilizando los valores de variables adecuados para el entorno:
![[Windows]](../images/windows.gif)
wsadmin> $AdminConfig checkin
cells/nombre_célula/nodes/nombre_nodo/app.policy c:\temp\test\app.policy $obj
![[IBM i]](../images/iseries.gif)
![[z/OS]](../images/ngzos.gif)
wsadmin> $AdminConfig checkin
cells/nombre_célula/nodes/nombre_nodo/app.policy temp/test/app.policy $obj
Símbolo | Significado |
---|---|
file:${application} | Los permisos se aplican a todos los recursos de la aplicación |
file:${jars} | Los permisos se aplican a todos los archivos JAR (Java Archive) de programa de utilidad de la aplicación |
file:${ejbComponent} | Los permisos se aplican a los recursos de enterprise bean de la aplicación |
file:${webComponent} | Los permisos se aplican a los recursos web de la aplicación |
file:${connectorComponent} | Los permisos se aplican a todos los recursos de conector, tanto a los de la aplicación como a los autónomos. |
Símbolo | Significado |
---|---|
${app.installed.path} | Vía de acceso donde se instala la aplicación |
${was.module.path} | Vía de acceso donde se instala el módulo |
${current.cell.name} | Nombre de célula actual |
${current.node.name} | Nombre de nodo actual |
${current.server.name} | Nombre de servidor actual |
El archivo app.policy que proporciona WebSphere Application Server
está ubicado en el directorio raíz_perfil/config/cells/cell_name/nodes/node_name/app.policy, que contiene los permisos predeterminados siguientes:
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";
};
grant codeBase "file:${jars}" {
permission java.net.SocketPermission "*", "connect";
permission java.util.PropertyPermission "*", "read";
};
grant codeBase "file:${connectorComponent}" {
permission java.net.SocketPermission "*", "connect";
permission java.util.PropertyPermission "*", "read";
};
grant codeBase "file:${webComponent}" {
permission java.io.FilePermission "${was.module.path}", "read";
permission java.io.FilePermission "${was.module.path}${/}-", "read, write"
permission java.lang.RuntimePermission "loadLibrary.*";
permission java.lang.RuntimePermission "queuePrintJob";
permission java.net.SocketPermission "*", "connect";
permission java.util.PropertyPermission "*", "read";
};
grant codeBase "file:${ejbComponent}" {
permission java.lang.RuntimePermission "queuePrintJob";
permission java.lang.RuntimePermission "loadLibrary.*";
permission java.net.SocketPermission "*", "connect";
permission java.util.PropertyPermission "*", "read";
permission java.io.FilePermission "*", "read,write";
};
![[Windows]](../images/windows.gif)
java.security.AccessControlException: Acceso denegado
(java.io.FilePermission
C:\WebSphere\AppServer\java\jre\lib\ext\mail.jar read)
Cuando un programa Java recibe esta excepción y está justificado añadir este permiso, añada un permiso al archivo server.policy, por ejemplo:
![[Windows]](../images/windows.gif)
grant codeBase "file:ubicación_instalación_cliente_usuario" {
permission java.io.FilePermission
"C:\WebSphere\AppServer\java\jre\lib\ext\mail.jar", "read";
};
![[IBM i]](../images/iseries.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.
Para decidir si añade un permiso, consulte el tema AccessControlException.
Reinicie todas las aplicaciones empresariales de WebSphere Application Server para asegurarse de que el archivo app.policy ha entrado en vigor.