La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

1 TEMA 5. Seguridad en Java 1.Introducción a los Controladores de Seguridad 2.Decidir qué Métodos Sobreescribir del SecurityManager 3.Escribir un Controlador.

Presentaciones similares


Presentación del tema: "1 TEMA 5. Seguridad en Java 1.Introducción a los Controladores de Seguridad 2.Decidir qué Métodos Sobreescribir del SecurityManager 3.Escribir un Controlador."— Transcripción de la presentación:

1 1 TEMA 5. Seguridad en Java 1.Introducción a los Controladores de Seguridad 2.Decidir qué Métodos Sobreescribir del SecurityManager 3.Escribir un Controlador de Seguridad 4.Instalar un Controlador de Seguridad 5.Gestor de seguridad en RMI

2 2 Bibliografía Tutoriales Sun: http://java.sun.com/docs/books/tutoria l/security/index.html http://java.sun.com/docs/books/tutoria l/security/index.html http://java.sun.com/docs/books/tutoria l/security/index.html http://java.sun.com/javase/6/docs/tec hnotes/guides/security/index.html http://java.sun.com/javase/6/docs/tec hnotes/guides/security/index.html

3 3 El controlador de seguridad actúa como un guardia de seguridad a tiempo completo. El controlador de seguridad actúa como un guardia de seguridad a tiempo completo. La clase SecurityManager del paquete java.lang es una clase abstracta que proporciona el interface de programación y una implementación parcial para todos los controladores de seguridad de Java. La clase SecurityManager del paquete java.lang es una clase abstracta que proporciona el interface de programación y una implementación parcial para todos los controladores de seguridad de Java. Una aplicación debe crear e instalar su propio controlador de seguridad. Una aplicación debe crear e instalar su propio controlador de seguridad. Introducción a los Controladores de Seguridad 1. Introducción a los Controladores de Seguridad Seguridad en Java

4 4 Los navegadores y los visualizadores de applets crean su propio controlador de seguridad cuando arrancan. Los navegadores y los visualizadores de applets crean su propio controlador de seguridad cuando arrancan. Un applet está sujeto a las restricciones de acceso. Un applet está sujeto a las restricciones de acceso. Introducción a los Controladores de Seguridad 1. Introducción a los Controladores de Seguridad Seguridad en Java

5 5 Para obtener el controlador de seguridad actual: Para obtener el controlador de seguridad actual: getSecurityManager() de la clase System getSecurityManager() devuelve null si no hay ningún controlador de seguridad actual en la aplicación. getSecurityManager() devuelve null si no hay ningún controlador de seguridad actual en la aplicación. Una vez se tiene el controlador de seguridad, se pueden permitir o prohibir ciertas operaciones. Una vez se tiene el controlador de seguridad, se pueden permitir o prohibir ciertas operaciones. Por ejemplo, el método System.exit(), que finaliza el interprete Java, utiliza el método checkExit() del controlador de seguridad para aprobar la operación de salida: Por ejemplo, el método System.exit(), que finaliza el interprete Java, utiliza el método checkExit() del controlador de seguridad para aprobar la operación de salida: SecurityManager security = System.getSecurityManager();if (security != null) { security.checkExit(status); Introducción a los Controladores de Seguridad 1. Introducción a los Controladores de Seguridad Seguridad en Java

6 6 Si el controlador de seguridad aprueba la operación de salida, el checkExit() retorna normalmente. Si el controlador de seguridad aprueba la operación de salida, el checkExit() retorna normalmente. Si el controlador de seguridad prohibe la operación, el checkExit() lanza una SecurityException. Si el controlador de seguridad prohibe la operación, el checkExit() lanza una SecurityException. Introducción a los Controladores de Seguridad 1. Introducción a los Controladores de Seguridad Seguridad en Java

7 7 El conjunto de métodos checkXXX() representa el conjunto de operaciones de las clases de los paquetes Java y el sistema de ejecución de Java que ya están sujetos a la protección del controlador de seguridad. El conjunto de métodos checkXXX() representa el conjunto de operaciones de las clases de los paquetes Java y el sistema de ejecución de Java que ya están sujetos a la protección del controlador de seguridad. Si se escribe el propio controlador de seguridad, se puede tener que sobreescribir los métodos checkXXX() de SecurityManager para modificar la política de seguridad de las operaciones específicas. Si se escribe el propio controlador de seguridad, se puede tener que sobreescribir los métodos checkXXX() de SecurityManager para modificar la política de seguridad de las operaciones específicas. Introducción a los Controladores de Seguridad 1. Introducción a los Controladores de Seguridad Seguridad en Java

8 8 Podrías tener que sobreescribir varios métodos checkXXX() del SecurityManager. Podrías tener que sobreescribir varios métodos checkXXX() del SecurityManager. La primera columna de la siguiente tabla son objetos sobre los que se pueden realizar varias operaciones. La primera columna de la siguiente tabla son objetos sobre los que se pueden realizar varias operaciones. La segunda columna lista los métodos de SecurityManager que aprueban las operaciones de los objetos de la primera columna. La segunda columna lista los métodos de SecurityManager que aprueban las operaciones de los objetos de la primera columna. Decidir qué Métodos Sobreescribir del SecurityManager 2. Decidir qué Métodos Sobreescribir del SecurityManager Métodos para sobreescribir

9 9 Decidir qué Métodos Sobreescribir del SecurityManager 2. Decidir qué Métodos Sobreescribir del SecurityManager Métodos para sobreescribir

10 10 Para escribir tu propio controlador de seguridad, debes crear una subclase de la clase SecurityManager. Para escribir tu propio controlador de seguridad, debes crear una subclase de la clase SecurityManager. Esta subclase sobreescribe varios métodos de SecurityManager para personalizar las verificaciones y aprobaciones necesarias para una aplicación Java. Esta subclase sobreescribe varios métodos de SecurityManager para personalizar las verificaciones y aprobaciones necesarias para una aplicación Java. El ejemplo restringe la lectura y escritura en el sistema de ficheros. El ejemplo restringe la lectura y escritura en el sistema de ficheros. Un método que abra un fichero para leer invoca uno de los métodos checkRead() de SecurityManager Un método que abra un fichero para leer invoca uno de los métodos checkRead() de SecurityManager Un método que abre un fichero para escribir invoca a uno de los métodos checkWrite() se SecurityManager. Un método que abre un fichero para escribir invoca a uno de los métodos checkWrite() se SecurityManager. Escribir un Controlador de Seguridad 3. Escribir un Controlador de Seguridad Ejemplo

11 11 La política implementada por nuestro ejemplo le pide al usuario una password cuando la aplicación intenta abrir un fichero para leer o escribir. Si la password es correcta se permite el acceso. La política implementada por nuestro ejemplo le pide al usuario una password cuando la aplicación intenta abrir un fichero para leer o escribir. Si la password es correcta se permite el acceso. Todos los controladores de seguridad deben ser una subclase de SecurityManager. Así, nuestra PasswordSecurityManager desciende de SecurityManager. Todos los controladores de seguridad deben ser una subclase de SecurityManager. Así, nuestra PasswordSecurityManager desciende de SecurityManager. PasswordSecurityManager class PasswordSecurityManager extends SecurityManager {...} class PasswordSecurityManager extends SecurityManager {...} Escribir un Controlador de Seguridad 3. Escribir un Controlador de Seguridad Ejemplo

12 12 Luego, PasswordSecurityManager declara un ejemplar de la variable privada password para contener el password que el usuario debe introducir para poder permitir el acceso al sistema de ficheros restringido. Luego, PasswordSecurityManager declara un ejemplar de la variable privada password para contener el password que el usuario debe introducir para poder permitir el acceso al sistema de ficheros restringido. La password se selecciona durante la construcción. La password se selecciona durante la construcción. PasswordSecurityManager(String password) { super(); this.password = password;} Escribir un Controlador de Seguridad 3. Escribir un Controlador de Seguridad Ejemplo

13 13 private boolean accessOK() { int c; int c; DataInputStream dis = new DataInputStream(System.in); String response; DataInputStream dis = new DataInputStream(System.in); String response; System.out.println("What's the secret password?"); System.out.println("What's the secret password?"); try { try { response = dis.readLine(); response = dis.readLine(); if (response.equals(password)) return true; if (response.equals(password)) return true; else return false; } else return false; } catch (IOException e) { return false; }} catch (IOException e) { return false; }} Escribir un Controlador de Seguridad 3. Escribir un Controlador de Seguridad Ejemplo

14 14 public void checkRead(FileDescriptor filedescriptor) { if (!accessOK()) throw new SecurityException("Not a Chance!");} if (!accessOK()) throw new SecurityException("Not a Chance!");} public void checkRead(String filename) { if (!accessOK()) throw new SecurityException("No Way!");} if (!accessOK()) throw new SecurityException("No Way!");} public void checkRead(String filename, Object executionContext) { if (!accessOK()) throw new SecurityException("Forget It!");} if (!accessOK()) throw new SecurityException("Forget It!");} public void checkWrite(FileDescriptor filedescriptor) { if (!accessOK()) throw new SecurityException("Not!");} if (!accessOK()) throw new SecurityException("Not!");} public void checkWrite(String filename) { if (!accessOK()) throw new SecurityException("Not Even!"); if (!accessOK()) throw new SecurityException("Not Even!"); SecurityException es una excepción en tiempo de ejecución, y no necesita ser declarada en la clausula throws de estos métodos. Escribir un Controlador de Seguridad 3. Escribir un Controlador de Seguridad Ejemplo

15 15 Por defecto, la clase SecurityManager prohíbe todas las operaciones que están sujetas a las restricciones de seguridad. Por defecto, la clase SecurityManager prohíbe todas las operaciones que están sujetas a las restricciones de seguridad. Por lo que podrías encontrar que tienes que sobreescribir muchos métodos checkXXX() para obtener el comportamiento deseado. Por lo que podrías encontrar que tienes que sobreescribir muchos métodos checkXXX() para obtener el comportamiento deseado. Todos los métodos checkXXX() de la clase SecurityManager operan de la misma forma. Todos los métodos checkXXX() de la clase SecurityManager operan de la misma forma. –Si el acceso está permitido, el método retorna. –Si el acceso no está permitido, el método lanza una SecurityException. Asegúrate de que implementas de esta forma tus métodos checkXXX() sobreescritos. Asegúrate de que implementas de esta forma tus métodos checkXXX() sobreescritos. Escribir un Controlador de Seguridad 3. Escribir un Controlador de Seguridad Ejemplo

16 16 Para instalar el controlador de seguridad unicamente debes ejecutar el método: Para instalar el controlador de seguridad unicamente debes ejecutar el método:System.setSecurityManager() Ver el ejemplo que se adjunta. Ver el ejemplo que se adjunta. Instalar un Controlador de Seguridad 4. Instalar un Controlador de Seguridad

17 17 Por defecto el gestor de seguridad de RMI es muy restrictivo: no permite acceso a los ficheros y solo permite conexiones a la máquina de origen (similar a de las applets ver siguiente tema). Por defecto el gestor de seguridad de RMI es muy restrictivo: no permite acceso a los ficheros y solo permite conexiones a la máquina de origen (similar a de las applets ver siguiente tema). No permite descarga de resguardo (Stub) ni permite a un objeto cliente de RMI contactar con el registro RMI. No permite descarga de resguardo (Stub) ni permite a un objeto cliente de RMI contactar con el registro RMI. Por lo tanto deberemos extender la clase RMISecurityManager o modificar el fichero de políticas de seguridad java para RMI (java.policy). Por lo tanto deberemos extender la clase RMISecurityManager o modificar el fichero de políticas de seguridad java para RMI (java.policy). Gestor de seguridad en RMI 5. Gestor de seguridad en RMI SM RMI

18 18 Permisos en java: http://download.oracle.com/javase/1.4.2/do cs/guide/security/permissions.html Permisos en java: http://download.oracle.com/javase/1.4.2/do cs/guide/security/permissions.html http://download.oracle.com/javase/1.4.2/do cs/guide/security/permissions.html http://download.oracle.com/javase/1.4.2/do cs/guide/security/permissions.html Fichero java.policy: http://download.oracle.com/javase/1.5.0/do cs/guide/security/PolicyFiles.html Fichero java.policy: http://download.oracle.com/javase/1.5.0/do cs/guide/security/PolicyFiles.html http://download.oracle.com/javase/1.5.0/do cs/guide/security/PolicyFiles.html http://download.oracle.com/javase/1.5.0/do cs/guide/security/PolicyFiles.html Seguridad en java: http://www.uv.es/sto/cursos/seguridad.java /html/sjava.html#toc6 Seguridad en java: http://www.uv.es/sto/cursos/seguridad.java /html/sjava.html#toc6 Gestor de seguridad en RMI 5. Gestor de seguridad en RMI Enlaces de interés


Descargar ppt "1 TEMA 5. Seguridad en Java 1.Introducción a los Controladores de Seguridad 2.Decidir qué Métodos Sobreescribir del SecurityManager 3.Escribir un Controlador."

Presentaciones similares


Anuncios Google