De forma predeterminada, las aplicaciones Java™ no tienen restricciones de seguridad en actividades solicitadas de la API Java. Para utilizar la seguridad Java para proteger una aplicación Java de acciones potencialmente inseguras, puede habilitar el gestor de seguridad de la JVM en la que se ejecuta la aplicación.
Acerca de esta tarea
El gestor de seguridad implanta una política de seguridad, que es un conjunto de permisos (privilegios de acceso al sistema) que se asignan a fuentes de código. Con la plataforma Java se proporciona un archivo de política predeterminado. Sin embargo, para permitir que las aplicaciones Java se ejecuten correctamente en CICS cuando la seguridad Java esté activa, debe especificar un archivo de política adicional que otorgue a CICS los permisos que necesita para ejecutar la aplicación.
Debe especificar este archivo de política adicional por cada tipo de JVM que tenga habilitado un gestor de seguridad. CICS proporciona algunos ejemplos que puede utilizar para crear sus propias políticas.
Notas: La habilitación de un gestor de seguridad Java no está soportada en un servidor de JVM de Liberty.
- El ejemplo de agente de seguridad de OSGi crea un paquete de middleware de OSGi
denominado com.ibm.cics.server.examples.security en su proyecto que
contiene un perfil de seguridad. Este perfil se aplica a todos los paquetes de OSGi de la infraestructura en la que está instalado.
- El archivo example.permissions contiene permisos específicos
para la ejecución de aplicaciones en un servidor de JVM, incluida una comprobación para
garantizar que las aplicaciones no utilicen el método System.exit().
- CICS debe tener acceso de lectura y ejecución en el directorio en zFS cuando despliega el paquete de OSGi.
Para aplicaciones que se ejecuten en la infraestructura de OSGi de un servidor de JVM:
Procedimiento
- Cree un proyecto de plug-in en elCICS Explorer SDK y seleccione el ejemplo de agente de seguridad de OSGi suministrado.
- En el proyecto, seleccione el archivo example.permissions para editar los permisos para su política de seguridad.
- Valide que los directorios de instalación de DB2 y zFS de CICS se han especificado correctamente.
- Añada otros permisos si es necesario.
- Despliegue el paquete de OSGi en un directorio adecuado en zFS como, por
ejemplo, /u/bundles.
- Edite el perfil de JVM para el servidor de JVM a fin de añadir el paquete de OSGi a la opción OSGI_BUNDLES antes de cualquier otro paquete:
- OSGI_BUNDLES=/u/bundles/com.ibm.cics.server.examples.security_1.0.0.jar
- Añada la propiedad Java siguiente al perfil de JVM para habilitar la seguridad.
- -Djava.security.policy=all.policy
- Añada la variable de entorno Java siguiente al perfil de JVM para habilitar la seguridad en la infraestructura de OSGi:
- org.osgi.framework.security=osgi
- Para permitir que la infraestructura de OSGi empiece con la seguridad de Java 2, añada la política siguiente:
- grant { permission java.security.AllPermission; };
- Guarde los cambios y habilite el recurso JVMSERVER para instalar el paquete de middleware en el servidor de JVM.
- Opcional: Active la seguridad de Java 2.
- Para activar un mecanismo de política de seguridad de Java 2, añádalo al perfil de JVM apropiado. También debe editar la política de seguridad de Java 2 para conceder los permisos apropiados.
- Para utilizar JDBC o SQLJ desde una aplicación Java que tenga un mecanismo de seguridad de política de Java 2 activo, utilice el controlador de IBM® Data Server para JDBC y SQLJ.
- Para activar un mecanismo de política de seguridad de Java 2, edite perfil JVM. describe cómo configurar una política de seguridad de Java 2.
- Edite la política de seguridad de Java 2 para otorgar permisos al controlador JDBC, añadiendo las líneas que aparecen en el Ejemplo 1. En lugar de db2xxx, especifique un directorio bajo el cual se encuentren todas sus bibliotecas DB2. Los permisos se aplican a todos los directorios y archivos que se encuentren bajo este nivel. Esto le permite utilizar JDBC y SQLJ.
- Edite la política de seguridad de Java 2 para otorgar permisos de lectura, añadiendo las líneas que aparecen en el Ejemplo 2. Si no añade el permiso de lectura, la ejecución de un programa Java genera excepciones de control de accesos y resultados imprevisibles. Puede utilizar JDBC y SQLJ con una política de seguridad de Java 2.
Ejemplo 1:
grant codeBase "file:/usr/lpp/db2xxx/-" {
permission java.security.AllPermission;
};
Ejemplo 2:
grant {
// permite a todo el mundo leer las propiedades
permission java.util.PropertyPermission "*", "read";
};
Resultados
Cuando se llama a la aplicación Java, la JVM determina la fuente de código de la clase y consulta la política de seguridad antes de otorgar a la clase los permisos correspondientes.