Migración de la política de seguridad de Java 2

Utilice este tema para obtener instrucciones relacionadas con la migración de la política de seguridad de Java™ 2

Acerca de esta tarea

Releases anteriores de WebSphere Application Server

WebSphere Application Server utiliza el gestor de seguridad de Java 2 en el tiempo de ejecución del servidor para evitar que las aplicaciones de empresa llamen a los métodos System.exit y System.setSecurityManager. Si las aplicaciones de empresa llaman a estas dos API (interfaces de programación de aplicaciones) Java, dichas API tendrán consecuencias no deseadas. La API System.exit, por ejemplo, hace que la Java Virtual Machine (proceso de servidor de aplicaciones) salga de forma prematura, lo que no es una operación beneficiosa para un servidor de aplicaciones.

Para soportar correctamente la seguridad de Java 2, todo el tiempo de ejecución del servidor se debe marcar como con privilegios (con las llamadas de la API doPrivileged insertadas en los lugares correctos) e identificar los conjuntos de permisos o políticas por omisión. El código de aplicación no tiene privilegios y está sujeto a los permisos que se han definido en los archivos de políticas. La instrumentación doPrivileged es importante y necesaria para soportar la seguridad de Java 2. Sin ella, se debe otorgar al código de aplicación los permisos requeridos por el tiempo de ejecución del servidor. Esta situación se debe al diseño y al algoritmo que utiliza la seguridad de Java 2 para aplicar comprobaciones de permisos. Consulte el algoritmo de comprobación de permisos de seguridad de Java 2.

El gestor de seguridad (codificado) de Java 2 implementa los dos permisos siguientes para WebSphere Application Server:
  • java.lang.RuntimePermission(exitVM)
  • java.lang.RuntimePermission(setSecurityManager)

Se denegará el acceso a estos permisos al código de la aplicación independientemente de los datos incluidos en la política de seguridad de Java 2. No obstante, al tiempo de ejecución del servidor se le conceden estos permisos. No se aplicarán todas las demás comprobaciones de permisos.

Sólo se da soporte a dos permisos:
  • java.net.SocketPermission
  • java.net.NetPermission

Sin embargo, no toda la ejecución del servidor del producto está marcada como privilegiada. Debe conceder al código de la aplicación todos los demás permisos aparte de los listados anteriormente o es posible que la aplicación de empresa no se ejecute correctamente. Esta política de seguridad de Java 2 para aplicaciones de empresa es amplia.

Modificaciones

La seguridad de Java 2 está totalmente soportada en WebSphere Application Server, lo que indica que se implementan todos los permisos. La política de seguridad de Java 2 por omisión de una aplicación de empresa es el conjunto de permisos recomendados definido por la especificación Java EE (Java Platform, Enterprise Edition) Versión 1.4. Consulte el archivo raíz_perfil/config/cells/nombre_célula/nodes/nombre_nodo/app.policy de la política de seguridad de Java 2 por omisión que se otorga a las aplicaciones de empresa. Esta política es mucho más estricta comparada con los releases anteriores.

La política completa es declarativa. El gestor de seguridad del producto observa todas las políticas declaradas en los archivos de políticas. Existe una excepción a esta regla: a las aplicaciones de empresa se les deniega el acceso a los permisos declarados en el archivo raíz_perfil/config/cells/nombre_célula/filter.policy.

Nota: La política de seguridad de Java 2 por omisión para las aplicaciones de empresa es mucho más estricta y se implementan todos los permisos en WebSphere Application Server Versión 9.0. La política de seguridad podría fallar porque no se ha otorgado al código de aplicación los permisos necesarios, donde se puede acceder a los recursos del sistema como, por ejemplo E/S de archivo, de forma programada y ahora están sujetos a la comprobación de permisos.

En el código de aplicación, no utilice el permiso setSecurityManager para establecer un gestor de seguridad. Cuando una aplicación utiliza el permiso setSecurityManager, hay un conflicto con el gestor de seguridad interno de WebSphere Application Server. Si debe establecer un gestor de seguridad en una aplicación para RMI, también deberá habilitar la opción Utilice la seguridad de Java 2 para limitar el acceso de las aplicaciones a los recursos locales en la página de seguridad global de la consola administrativa de WebSphere Application Server. A continuación, WebSphere Application Server registra un gestor de seguridad. El código de la aplicación puede verificar que este gestor de seguridad está registrado utilizando la interfaz del programa de aplicación System.getSecurityManager().

Migración de propiedades del sistema

En los releases anteriores se utilizan las siguientes propiedades del sistema en relación con la seguridad de Java 2:
  • java.security.policy. La vía de acceso absoluta al archivo de políticas (es necesario llevar a cabo una acción). Esta propiedad del sistema contiene ambos permisos del sistema, los permisos otorgados a la JVM (Java Virtual Machine) y el tiempo de ejecución del servidor del producto, y los permisos de la aplicación de empresa. Migre la política de seguridad de aplicaciones de empresa Java 2 a Versión 9.0. Para la migración de la política de seguridad Java 2, consulte los pasos de migración de la política de seguridad de Java 2.
  • enableJava2Security. Se utiliza para habilitar la implantación de la seguridad de Java 2 (no es necesaria ninguna acción). Esta propiedad del sistema está en desuso; se utiliza un distintivo en la API (interfaz de programación de aplicaciones) de la configuración de WebSphere para controlar si se debe habilitar la seguridad de Java 2. Habilite esta opción mediante la consola administrativa.
  • was.home. Se ha ampliado el directorio de instalación de WebSphere Application Server (es posible que sea necesario realizar alguna acción). Esta propiedad del sistema está en desuso; se ha reemplazado por las propiedades ${user.install.root} y ${was.install.root}. Si el directorio contiene datos específicos de la instancia, entonces se utiliza ${user.install.root}; de lo contrario, se utiliza ${was.install.root}. Utilice cualquiera de estas propiedades para los entornos WebSphere Application Server o WebSphere Application Server, Network Deployment Consulte los pasos para migrar la política de seguridad de Java 2.

Migración de la política de seguridad de Java 2

No existe una manera fácil de migrar el archivo de políticas Java a Versión 9.0 automáticamente porque en el mismo archivo de políticas existe una mezcla de permisos del sistema y permisos de la aplicación. Copie manualmente la política de seguridad de Java 2 para las aplicaciones de empresa en un archivo was.policy o app.policy. Sin embargo, es preferible migrar la política de seguridad de Java 2 al archivo was.policy porque se utilizan símbolos o código básico relativo en lugar de una base de código absoluto. Este proceso tiene muchas ventajas. Otorgue los permisos definidos en was.policy sólo a la aplicación de empresa específica, mientras que los permisos del archivo app.policy se aplican a todas las aplicaciones de empresa que se ejecutan en el nodo al que pertenece el archivo app.policy.

Consulte Archivos de política de seguridad de Java 2. si desea más detalles sobre la gestión de políticas.

El ejemplo siguiente muestra la migración de una política de seguridad de Java 2 desde un release anterior. El contenido incluye el archivo de políticas de seguridad de Java 2 para la aplicación de empresa app1.ear y los permisos del sistema, que son permisos otorgados a la JVM (Java Virtual Machine) y al tiempo de ejecución del servidor del producto.

[AIX Solaris HP-UX Linux Windows][z/OS]La ubicación predeterminada para el archivo de políticas de seguridad de Java 2 es raíz_perfil/properties/java.policy. Para mayor claridad, se omiten los permisos predeterminados:

[IBM i]La ubicación predeterminada para el archivo de políticas de seguridad de Java 2 es raíz_perfil/properties/java.policy. Para mayor claridad, se omiten los permisos predeterminados:

// Para ejemplos de productos
   grant codeBase "file:${app_server_root}/installedApps/app1.ear/-" {
     permission java.security.SecurityPermission "printIdentity";
     permission java.io.FilePermission "${app_server_root}${/}temp${/}somefile.txt", 
       "read";
   };

En este ejemplo, para una mejor ilustración, se migran todos los permisos como permisos a nivel de aplicación. Sin embargo, puede otorgar permisos a un nivel más granular a nivel de componente (a nivel Web, enterprise beans, conector o a nivel de componente JAR (Java Archive) de programa de utilidad) o puede otorgar permisos a un componente concreto.

Procedimiento

  1. Asegúrese de que la seguridad de Java 2 esté inhabilitada en el servidor de aplicaciones.
  2. Cree un nuevo archivo was.policy, si el archivo no está presente, o actualice el archivo was.policy para las aplicaciones migradas en el repositorio de configuración con los contenidos siguientes:
    grant codeBase "file:${application}" {
         permission java.security.SecurityPermission "printIdentity";
         permission java.io.FilePermission "
                 ${user.install.root}${/}temp${/}somefile.txt", "read";
       };

    Las líneas tercera y cuarta del código de ejemplo anterior se presenta en dos líneas sólo con fines ilustrativos.

    El archivo was.policy ubicado en el directorio raíz_perfil/config/cells/nombre_célula/applications/app.ear/deployments/app/META-INF/.

  3. Utilice una herramienta de ensamblaje para adjuntar el archivo was.policy al archivo EAR (Enterprise Archive).

    También puede utilizar una herramienta de ensamblaje para validar el contenido del archivo was.policy. Para obtener más información, consulte Configuración del archivo was.policy para la seguridad de Java 2.

  4. Confirme que la aplicación de empresa no requiere permisos adicionales a los permisos de seguridad de Java 2 migrados y al conjunto de permisos por omisión declarados en el archivo ${user.install.root}/config/cells/nombre_célula/nodes/nombre_nodo/app.policy. Esta validación requiere revisar e inspeccionar el código, revisar la documentación de aplicaciones y comprobar de forma aleatoria las aplicaciones de empresa migradas con la seguridad de Java 2 habilitada en un entorno previo a la producción. Consulte las API de Developer Kit protegidas por la seguridad de Java 2 para obtener información sobre qué API están protegidas por la seguridad de Java 2. Si utiliza bibliotecas de terceros, consulte la documentación del proveedor de las API protegidas por la seguridad de Java 2. Asegúrese de que se hayan otorgado todos los permisos necesarios a la aplicación, de lo contrario, es posible que ésta no pueda ejecutarse al habilitar la seguridad de Java 2.
  5. Realice una comprobación previa a la producción de la aplicación de empresa migrada con la seguridad de Java 2 habilitada. Habilite el rastreo del gestor de seguridad de Java 2 de WebSphere Application Server en un entorno de comprobación previo al de producción con la serie de rastreo siguiente: com.ibm.ws.security.core.SecurityManager=all=enabled. Esta función de rastreo puede ser útil al depurar la excepción AccessControlException creada cuando no se otorga a una aplicación el permiso necesario o bien algún código del sistema no se ha marcado correctamente como privilegiada. El rastreo vuelca el rastreo de pila y los permisos otorgados a las clases en la pila de llamadas cuando se crea la excepción.

    Para obtener más información, consulte Excepción de control de acceso para la seguridad de Java 2.

    Nota: Debido a que la política de seguridad de Java 2 es mucho más estricta si se compara con la de releases anteriores, el administrador o desplegador debe revisar sus aplicaciones de empresa para ver si son necesarios permisos adicionales antes de habilitar la seguridad de Java 2. Si las aplicaciones de empresa no tienen los permisos necesarios, no se ejecutarán satisfactoriamente.

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_migratejava2sec
File name: tsec_migratejava2sec.html