Configuración del archivo was.policy para la seguridad de Java 2

Debe actualizar el archivo was.policy si la aplicación tiene recursos específicos a los que acceder.

Antes de empezar

La seguridad de Java™ 2 utiliza varios archivos de política para determinar qué permisos se han otorgado a cada programa Java. El archivo was.policy es un archivo de políticas específico de aplicaciones para las aplicaciones de empresa de WebSphere Application Server. Este archivo está incorporado en el archivo EAR (Enterprise Archive) META-INF/was.policy. El archivo was.policy está ubicado en:
raíz_perfil/config/cells/nombre_célula/applications/
nombre_archivo_ear/deployments/nombre_aplicación/META-INF/was.policy

Consulte los archivos de política de seguridad de Java 2 para obtener la lista de archivos de política disponibles que están soportados en WebSphere Application Server versión 6.1.

La unión de los permisos contenidos en los siguientes archivos se aplica a la aplicación de empresa 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 duplicación 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.

Tabla 1. Símbolos definidos para asociar listas de permisos a un tipo de recurso específico. Se definen varios símbolos reservados del producto para asociar las listas de permisos a un tipo específico de recurso.
Símbolo Definición
file:${application} Los permisos se aplican a todos los recursos utilizados en 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 los recursos de conector de la aplicación
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 no se especifican los permisos de hebra, la aplicación no puede manipular las hebras y WebSphere Application Server crea una excepción java.security.AccessControlException. Si añade los permisos al archivo was.policy de una aplicación determinada, no es necesario reiniciar 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";
};
Un administrador puede añadir los permisos de hebra al archivo app.policy, pero el cambio de permiso requiere reiniciar WebSphere Application Server.
Importante: En el archivo was.policy no se admiten las palabras clave Signed By (Firmado por) ni Principal de JAAS (Java Authentication and Authorization Service). Se admite la palabra clave Signed By en los archivos de política java.policy, server.policy y clientSpolicy. Se admite la palabra clave principal de JAAS en un archivo de políticas JAAS cuando se especifica mediante la propiedad del sistema de JVM (Java Virtual Machine) java.security.auth.policy. Puede establecer estáticamente los archivos de políticas de autorización en el archivo java.security.auth.policy con auth.policy.url.n=URL, donde URL es la ubicación de la política de autorización.
Excepto en estos bloques, el nombre de módulo puede especificarse para valores granulares. Por ejemplo,
grant codeBase "file:DefaultWebApplication.war" {
  permission java.security.SecurityPermission "printIdentity";
};

grant codeBase "file:IncCMP11.jar" {
  permission java.io.FilePermission 
      "${user.install.root}${/}bin${/}DefaultDB${/}-", 
      "read,write,delete";
};
Tabla 2. Símbolos incorporados 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 la especificación flexible de permisos. La vía de acceso absoluta del archivo después de instalar la aplicación.
Símbolo Definición
${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

Acerca de esta tarea

Si los permisos por omisión de la aplicación de empresa son suficientes, no es necesario efectuar ninguna acción. Los permisos por omisión son una combinación de permisos definidos en los archivos java.policy, server.policy y app.policy. Si una aplicación posee recursos específicos para acceder, actualice el archivo was.policy. En los dos primeros pasos se da por supuesto que está creando un nuevo archivo de política.
Consejo: Los errores de sintaxis de los archivos de política harán que el servidor de aplicaciones no se pueda iniciar. Preste atención cuando edite estos archivos de política.

Procedimiento

  1. Cree o edite un nuevo archivo was.policy con PolicyTool. Para obtener más información, consulte Utilización de PolicyTool para editar archivos de política para la seguridad de Java 2.
  2. Empaquete el archivo was.policy en el archivo EAR (Enterprise Archive).

    Para obtener más información, consulte Adición del archivo was.policy a las aplicaciones para la seguridad de Java 2.

    En las instrucciones siguientes se describe cómo importar archivos was.policy.
    1. Importe el archivo EAR a una herramienta de ensamblaje.
    2. Abra la vista Project Navigator (Navegador de proyectos).
    3. Expanda el archivo EAR y pulse META-INF. Podría encontrarse un archivo was.policy en el directorio META-INF. Si desea suprimir el archivo, pulse el botón derecho del ratón en su nombre y seleccione Delete (Suprimir).
    4. En la vista Navegador de proyectos, pulse Jerarquía J2EE.
    5. Importe el archivo was.policy pulsando el botón derecho del ratón en el directorio Módulos en el descriptor de despliegue y pulsando Importar > Importar > Sistema de archivos.
    6. Pulse Next (Siguiente).
    7. Especifique el nombre de vía de acceso al archivo was.policy en el campo From directory (De directorio) o pulse Browse (Examinar) para localizar el archivo.
    8. Verifique que el directorio de la vía de acceso enumerado en el campo Into directory (A directorio) enumera el directorio META-INF correcto.
    9. Pulse Finalizar.
    10. Para validar el archivo EAR, pulse el botón derecho en el archivo EAR, que contiene el directorio Modules (Módulos) y pulse Run Validation (Ejecutar validación).
    11. Para guardar el nuevo archivo EAR, pulse el botón derecho del ratón en el archivo EAR y pulse Exportar > Exportar archivo EAR. Si no guarda el archivo EAR revisado, el archivo EAR contendrá el archivo was.policy nuevo. No obstante, si se corrompe el espacio de trabajo, podría perder el archivo EAR revisado.
    12. Para generar el código de despliegue, pulse el botón derecho del ratón en el archivo EAR y pulse Generate Deployment Code (Generar código de despliegue).
  3. Actualice una aplicación existente instalada, si ya existe una. Modifique el archivowas.policy con la herramienta Policy Tool. Para obtener más información, consulte Utilización de PolicyTool para editar archivos de política para la seguridad de Java 2.[z/OS]
    1. Extraiga el archivo de política. Especifique el siguiente mandato desde un indicador de mandatos:
      wsadmin> set obj [$AdminConfig extract profiles/nombre_perfil/cells/nombre_célula
      /application/nombre_archivo_ear/deployments/nombre_aplicación
      /META_INF/was.policy c:/temp/test/was.policy]

      Escriba las tres líneas anteriores como una línea continua. Se muestran aquí sólo con fines ilustrativos.

    2. Edite el archivo was.policy que ha extraído con Policy Tool. Para obtener más información, consulte Utilización de PolicyTool para editar archivos de política para la seguridad de Java 2.
    3. Incorpore el archivo de política. Especifique lo siguiente en un indicador de mandatos:
      wsadmin> $AdminConfig checkin
      profiles/nombre_perfil/cells/nombre_célula/application/
      nombre_archivo_ear/deployments/nombre_aplicación/META_INF/was.policy 
      c:/temp/test/was.policy $obj

      Escriba las tres líneas anteriores como una línea continua. Se muestran aquí sólo con fines ilustrativos.

Resultados

El archivo was.policy actualizado se aplicará a la aplicación después de reiniciar la aplicación.

Ejemplo

[IBM i][z/OS]
java.security.AccessControlException: access denied (java.io.FilePermission 
${was.install.root}/java/ext/mail.jar read)
[z/OS][IBM i]Si una aplicación debe acceder a un recurso específico que no está definido como valor por omisión en los archivos java.policy, server.policy y app.policy, suprima el archivo was.policy de esa aplicación. Si falta un permiso, se genera la excepción java.security.AccessControlException. El permiso que falta se indica en los datos de excepción:
Nota: Los ejemplos siguientes están divididos en varias líneas sólo con fines ilustrativos. En realidad se entran los permisos en una línea.
[IBM i][z/OS]
java.security.AccessControlException: access denied (java.io.FilePermission 
${was.install.root}/java/ext/mail.jar read)

Cuando un programa Java recibe esta excepción y está justificado añadir este permiso, añada el siguiente permiso al archivo was.policy:

[IBM i][z/OS]
grant codeBase "file:ubicación_instalada_cliente_usuario" {
  permission java.io.FilePermission 
"${was.install.root}$(/)java$(/)jre$(/)lib$(/)ext$(/)mail.jar", "read";
};

Para determinar si se debe añadir un permiso, consulte Excepción de control de acceso de la seguridad de Java 2.

Qué hacer a continuación

Reinicie todas las aplicaciones para que el archivo app.policy actualizado entre en vigor.

Icon that indicates the type of topic Task topic



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