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.

Para obtener la lista de archivos de política soportados en WebSphere Application Server, consulte el tema sobre los archivos de política de seguridad de Java 2. El archivo app.policy es un archivo de política predeterminado compartido por todas las aplicaciones empresariales de WebSphere Application Server. La unión de los permisos contenidos en los siguientes archivos se aplica a la aplicación empresarial de WebSphere Application Server:
  • 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.

En WebSphere Application Server, las aplicaciones que manipulan las hebras deben tener los permisos de hebra correspondientes especificados en el archivo was.policy o app.policy. Si los permisos de hebra especificados, la aplicación no puede manipular las hebras y WebSphere Application Server crea una excepción java.security.AccessControlException. Si un administrador añade los permisos de hebra al archivo app.policy, el cambio de permiso necesita que se reinicie WebSphere Application Server. Un administrador debe añadir el siguiente código a un archivo was.policy o app.policy para que una aplicación pueda manipular las hebras:
grant codeBase "file:${application}" { 
  permission java.lang.RuntimePermission "stopThread"; 
  permission java.lang.RuntimePermission "modifyThread";
  permission java.lang.RuntimePermission "modifyThreadGroup"; 
}; 
Importante: No se admiten las palabras clave Signed By (Firmado por) y principal de JAAS (Java Authentication and Authorization Service) en el archivo app.policy. No obstante, se admiten las palabras clave Signed By (Firmado por) en los archivos siguientes: java.policy, server.policy, client.policy. La palabra clave principal de JAAS se admite en un archivo de política de JAAS cuando está especificada por la propiedad del sistema de la JVM (Java virtual machine) java.security.auth.policy. Puede establecer estáticamente los archivos de políticas de autorización en la propiedad java.security.auth.policy con auth.policy.url.n=URL donde URL es la ubicación de la política de autorización.
Si los permisos predeterminados de las aplicaciones empresariales (la combinación de permisos definidos en el archivo java.policy, server.policy y app.policy) son suficientes; no es necesario efectuar ninguna acción. El archivo app.policy predeterminado se utiliza automáticamente. Si es necesario efectuar un cambio específico en todas las aplicaciones empresariales de la célula, actualice el archivo app.policy. Los errores de sintaxis de los archivos de política harán que el servidor de aplicaciones no se pueda iniciar. Edite estos archivos de política con mucha precaución.
Nota: Las actualizaciones del archivo app.policy sólo se aplican a las aplicaciones empresariales que están en el nodo al que pertenece el archivo app.policy.

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]
wsadmin> set obj [$AdminConfig extract
cells/nombre_célula/node/nombre_nodo/app.policy c:\temp\test\app.policy]
[IBM i][z/OS]
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]
wsadmin> $AdminConfig checkin
cells/nombre_célula/nodes/nombre_nodo/app.policy c:\temp\test\app.policy $obj
[IBM i][z/OS]
wsadmin> $AdminConfig checkin
cells/nombre_célula/nodes/nombre_nodo/app.policy temp/test/app.policy $obj
Tabla 1. Símbolos utilizados para asociar listas de permisos con un tipo específico de recurso. Se definen varios símbolos reservados del producto para asociar las listas de permisos a un tipo específico de recurso.
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.
Tabla 2. Símbolos proporcionados para especificar la vía de acceso y el nombre del permiso java.io.FilePermission. Se proporcionan cinco símbolos para especificar la vía de acceso y el nombre del permiso java.io.FilePermission. Estos símbolos permiten especificar permisos de forma flexible. La vía de acceso absoluta del archivo se fija después de la instalación de la aplicación.
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
Consejo: No puede utilizar ${was.module.path} en la entrada${application}.

[IBM i][z/OS]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:

Atención: En el siguiente ejemplo de código, las dos primeras líneas relacionadas con permission java.io.FilePermission se han dividido en otras dos líneas cada una debido al ancho de la página impresa.
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";
};
Si todas las aplicaciones empresariales de WebSphere Application Server de una célula necesitan permisos que no se han definido como valores predeterminados en el archivo java.policy, server.policy y app.policy, actualice el archivo app.policy. Si falta un permiso, se genera la excepción java.security.AccessControlException.
Nota: Las actualizaciones del archivo app.policy sólo se aplican a las aplicaciones empresariales que están en el nodo al que pertenece el archivo app.policy.
[Windows] El permiso que falta se indica en los datos de excepción, por ejemplo,
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]
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]
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.


Icon that indicates the type of topic Reference topic



Timestamp icon Last updated: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rsec_apppolicy
File name: rsec_apppolicy.html