Download Seguridad en Java Agenda
Document related concepts
no text concepts found
Transcript
Módulo IV.- Seguridad Aplicativa Seguridad en Java Módulo IV.- Seguridad Aplicativa Agenda • • • • • Objetivo. Cómputo Distribuido. Arquitectura J2EE. Introducción a la seguridad con Java. Recursos, Directores y Recursos. 1 Módulo IV.- Seguridad Aplicativa Objetivo • Conocer la arquitectura general de una aplicación desarrollada con Java con J2EE. • Introducir los conceptos de seguridad que se manejan en una aplicación basada en J2EE. Módulo IV.- Seguridad Aplicativa Cómputo distribuido 2 Módulo IV.- Seguridad Aplicativa Cómputo distribuido • Se basa en el principio de dividir una tarea en tareas más pequeñas. • Cada tarea se puede asignar a diferentes equipos “más pequeños” que funcionan en conjunto. • El cómputo distribuido permite reutilizar componentes, ya que estos tienen bien definidas sus interfaces. Módulo IV.- Seguridad Aplicativa Cómputo distribuido • Soporte a la interoperabilidad y portabilidad. • Seguridad en el acceso a las aplicaciones. • Los sistemas distribuidos ofrecen transparencia. • Se programa de manera modular. Permite separar cada capa del sistema. 3 Módulo IV.- Seguridad Aplicativa Guías de diseño • Las aplicaciones deben ser modulares, dividiendo: – Interfaz de usuario. – Reglas de negocio. – Datos. • Esto brinda flexibilidad al mantenimiento del sistema. • El diseño se recomienda sea realizado basado en componentes. • La funcionalidad final se alcanza a través de diferentes tareas internas que son implementadas por los componentes. • Los componentes pueden ser comprados o desarrollados de manera interna. Módulo IV.- Seguridad Aplicativa Guías de diseño • El crear un componente demasiado extenso, puede provocar un gran esfuerzo para modificar su funcionamiento. • Se recomienda que las capas que componen una aplicación sean independientes unas de otras. – Procedimientos almacenados hacen dependiente la capa de lógica de negocio de la de datos. • Los componentes deben se reutilizables. Se deben separar de acuerdo a los servicios que ofrecen. • Se debe soportar la escalabilidad. – Usar pool de conexiones. – Uso de cache. – “Granjas” de servidores. 4 Módulo IV.- Seguridad Aplicativa Arquitectura J2EE Módulo IV.- Seguridad Aplicativa Introducción • Plataforma que permite el desarrollo de aplicaciones basadas en componentes, multicapa y distribuidas, para ofrecer el soporte al cliente y al servidor. • Beneficios. – Diseño y desarrollo sencillo. – Se puede seleccionar, servidores, herramientas y componentes. – Escalable. – Modelo de seguridad. – Recursos para Integrar aplicaciones empresariales. (EIS) 5 Módulo IV.- Seguridad Aplicativa Introducción • La arquitectura J2EE esta basada en Java y utiliza los estándares del mercado, lo que le permite interactuar con el servidor de aplicaciones. Módulo IV.- Seguridad Aplicativa Ventajas del modelo de desarrollo • El modelo de desarrollo es estandarizado lo que permite seleccionar: – Servidores. – Herramientas. – Componentes. • Modelo escalable. – Contenedores diseñados Para proveer escalabilidad 6 Módulo IV.- Seguridad Aplicativa Ventajas del modelo de desarrollo • Modelo de seguridad incluido. – Los parámetros de seguridad se configuran durante el proceso de instalación de la aplicación. – Permite la configuración de la aplicación de manera independiente del código. • El modelo permite la integración con los sistemas de información existentes a través del J2EE Connector Architecture JCA. Módulo IV.- Seguridad Aplicativa Roles de la plataforma • Proveedor del J2EE. – Crea los contenedores de los componentes de acuerdo a la especificación. – Provee un ambiente estandarizado al momento de ejecución para los componentes. – Provee el conjunto de servicios definidos por J2EE (API). – Ofrece las herramientas necesarias para instalar, configurar y poner a punto la aplicación, así como para la administración del ambiente operativo. 7 Módulo IV.- Seguridad Aplicativa Roles de la plataforma • Proveedor de componentes. – Es el encargado de entregar los componentes utilizados en una aplicación J2EE, el cual entrega la funcionalidad requerida. – Define la forma en la que se puede ejecutar el componente. • Ensamblador de Aplicaciones. – Encargado de unificar el funcionamiento de un grupo de componentes para crear una aplicación. • Crea la descripción de la aplicación. • Identifica los recursos externos necesarios. • Genera el EAR. Módulo IV.- Seguridad Aplicativa Roles de la plataforma • Instalador. – Después de que se tiene la aplicación, esta se instala en un ambiente operacional específico. • Administrador del sistema. – Es responsable por el monitoreo de la aplicación instalada, así como de configurar los contenedores J2EE. • Proveedor de herramientas. – Responsable de entregar las herramientas necesarias para instalar, crear y empaquetar una aplicación. 8 Módulo IV.- Seguridad Aplicativa Componentes tecnológicos • La plataforma soporta diferentes componentes. – – – – Applets. Clientes. EJB. Web. • Se ensamblan en los módulos J2EE y se instalan en los contenedores. • Los contenedores ofrecen la siguiente funcionalidad: – – – – Administración del ciclo de vida. Seguridad. Administración de transacciones. “Threading components” Módulo IV.- Seguridad Aplicativa Componentes tecnológicos – Los componentes corren en varias capas del modelo. – El modelo de la aplicación J2EE define: • La capa cliente. • La capa media (middle) – Capa Web. – Capa EJB. • La capa EIS. 9 Módulo IV.- Seguridad Aplicativa Servicios Tecnológicos • La plataforma permite que las aplicaciones J2EE hagan uso de diferentes servicios: – De directorio. – Correo electrónico. – Soporte de transacciones. Módulo IV.- Seguridad Aplicativa Servicios tecnológicos • JNDI – Con el API JNDI se puede acceder a los servicios de nombres y directorios, utilizando librerías estándar de Java. • LDAP. • DNS. • NIS – También se puede utilizar para obtener una referencia a un EJB a través de una aplicación empresarial. • JDBC – Es un API que permite a una aplicación el acceso a una base de datos relacional. – Permite al desarrollador crear código independiente de la base de datos. – Permite utilizar diferentes bases de datos en un ambiente heterogéneo. 10 Módulo IV.- Seguridad Aplicativa Servicios tecnológicos • JTA y JTS. – Son API’s que facilitan las transacciones entre aplicaciones J2EE. – JTA: • interactúa con el código de la aplicación y ofrece una interfaz que la aplicación ocupa para controlar las transacciones. • Habilita el uso de transacciones distribuidas. • Habilita el control del inicio y fin de una transacción. – JTS: • Especifica la implementación del administrador de la transacción. • El cual soporta JTA para ofrecer el soporte de transacciones a las entidades involucradas en la misma. – Servidor de transacciones. – Administrador de recursos. – Entre los dos ofrecen el soporte a transacciones confiables a los componentes de una aplicación. Módulo IV.- Seguridad Aplicativa Servicios tecnológicos • Conector de Arquitecturas. – Es el API estándar de los vendedores de J2EE que permite soportar conexiones hacia los EIS. • ERP’s. • Manejo de transacciones mainframe. • Sistemas de bases de datos. – Se implementan a través del desarrollo de adaptadores que permiten la iteración entres las aplicaciones J2EE y los EIS. 11 Módulo IV.- Seguridad Aplicativa Servicios tecnológicos • JAXP: – Permite que la aplicación valide y transforme un documento XML. – es flexible y trabaja de manera independiente de una implementación particular XML. Módulo IV.- Seguridad Aplicativa Introducción a la seguridad con Java 12 Módulo IV.- Seguridad Aplicativa Definir los requerimientos • El primer paso en la implementación de seguridad con Java es la definición de los requerimientos de seguridad. • El desarrollador debe especificar las necesidades de seguridad. • Esto se establece en una lista de verificación que se implementa por el encargado de “subir” la aplicación en el servidor de aplicaciones y que se encarga de configurarla. • Existen dos formas asegurar una aplicación utilizando Java. – Seguridad declarativa. – Seguridad programada. Módulo IV.- Seguridad Aplicativa Seguridad declarativa • Este mecanismo de seguridad se expresa en sintaxis de XML. • Se deja en un documento llamado “deployment descriptor”. • Describe la estructura de la seguridad. – Roles. – Control de acceso. – Requerimientos de autenticación de la aplicación. • El desarrollador describe los requerimientos de seguridad. • El encargado de “subir” la aplicación utiliza las herramientas necesarias. – Para “mapear” el “deployment descriptor” a un mecanismo de seguridad implementado por los contenedores J2EE. 13 Módulo IV.- Seguridad Aplicativa Seguridad Programada • Se encuentra en la aplicación misma. • Se refiere a las acciones de seguridad programadas en la aplicación. • Se utiliza cuando la seguridad declarativa no es suficiente. • Ejemplo. – Se puede programar que las autorizaciones : • • • • Sucedan en cierto horario del día. Estén basadas en los parámetros de la llamada. Dependan del estado de un EJB. Dependiendo de la información del usuario en la base de datos. Módulo IV.- Seguridad Aplicativa Modelo de seguridad J2EE • Las aplicaciones Java pueden ser colocadas en diferentes contenedores. • Permite crear aplicaciones multicapa. • El objetivo del modelo de seguridad J2EE es tener seguridad punto a punto asegurando cada capa de la aplicación. 14 Módulo IV.- Seguridad Aplicativa Modelo de seguridad J2EE • Las capas contienen recursos seguros y no seguros. • En tiempo de ejecución los contenedores utilizan el modelo de seguridad para forzar la autorización. • Para asegurar que sólo los usuarios autorizados pueden acceder a un recurso se utiliza: – La identificación. – La Autenticación. – La autorización. Módulo IV.- Seguridad Aplicativa Identificación. • Proceso que permite reconocer a una entidad por el sistema.. 15 Módulo IV.- Seguridad Aplicativa Autenticación • Proceso que verifica la identidad de un usuario, dispositivo o cualquier otra entidad en el sistema. • Prerrequisito para permitir el acceso a un recurso en el sistema. Módulo IV.- Seguridad Aplicativa Autorización • Permite el acceso controlado a los recursos protegidos y se basa en la identificación y autenticación. 16 Módulo IV.- Seguridad Aplicativa Modelo de seguridad J2EE • El modelo de programación de la aplicación J2EE hace que esta sea independiente de los mecanismos específicos de implementación de la seguridad por parte del servidor de aplicaciones, lo que permite su portabilidad Módulo IV.- Seguridad Aplicativa Recursos, Directores y Roles 17 Módulo IV.- Seguridad Aplicativa Políticas de Seguridad • En Java se manejan dos dominios de políticas de seguridad. – Dominio empresarial. – Dominio de la aplicación o componente de la aplicación. • Los recursos que son “desplegados” en el dominio de políticas de seguridad de la empresa son diferentes de los “desplegados” en el dominio de las políticas de seguridad de la aplicación. Módulo IV.- Seguridad Aplicativa Requerimientos de Autenticación de los Recursos • En una aplicación J2EE se utilizan diferentes mecanismos que permiten proveer de los requerimientos de autenticación a los recursos.. – – – – – Configuración de la identidad. Autenticación programada. Mapeo de “directores”. Llamada no personalizada. Mapeo de credenciales. 18 Módulo IV.- Seguridad Aplicativa Configuración de la identidad • El contenedor J2EE asegura el acceso a un recurso a través de la autenticación. – Director, se refiere a un usuario final o alguna otra entidad que requiere acceso a la aplicación. – Información de autenticación, se provee durante el proceso de “despliegue” de la aplicación en el servidor de aplicaciones. Módulo IV.- Seguridad Aplicativa Autenticación programada • Un producto J2EE debe proveer de los datos de los directores y la autenticación para un recurso en tiempo de ejecución. • La aplicación los recibe de diferentes maneras: – Cómo parámetros. – De los parámetros del ambiente del componente. • A esta técnica se le conoce como autenticación programada. 19 Módulo IV.- Seguridad Aplicativa Mapeo de directores • Es un requerimiento de seguridad adicional. • El recurso obtiene la información de los directores y los atributos de seguridad a través del mapeo de la identidad y los atributos de seguridad del director que realiza la llamada. • El mapeo del director es recomendada pero no es obligatoria. Módulo IV.- Seguridad Aplicativa Llamada no personalizada • Una director del recurso actúa entre el director que realiza la llamada y el recurso. • Asigna la identidad y las credenciales del “llamador” al administrador de recursos. • Esta técnica se utiliza para verificar una llamada no personalizada. 20 Módulo IV.- Seguridad Aplicativa Mapeo de credenciales • Esta técnica se utiliza cuando el servidor de aplicaciones y un sistema de información empresarial manejan diferentes dominios de autenticación. Módulo IV.- Seguridad Aplicativa El director • Un director representa a un usuario que requiere acceso a un recurso. • Es decir una entidad que puede ser autenticada por un protocolo de autenticación en un servicio de seguridad implementado en la empresa. • Se puede identificar a un director por su nombre principal y autenticarlo utilizando los datos de autenticación. 21 Módulo IV.- Seguridad Aplicativa Tipos de directores • Dominio de la política de seguridad. – Determina el alcance que define el administrador de seguridad para la política. • Dominio de la tecnología de seguridad. – Es el alcance sobre el que actúa la tecnología de seguridad para garantizar una política de seguridad. – Por ejemplo si se utiliza Kerberos para mantener la seguridad en diferentes sistemas, estos sistemas se encuentran bajo el mismo dominio tecnológico, aunque puede afectar diferentes dominios de políticas de seguridad. • Atributos y credenciales. – Cada director se asocia con un conjunto de atributos de seguridad, que tienen acceso a los recursos protegidos. – Una credencial contiene los atributos de un director, y se utiliza para autenticarlo. Módulo IV.- Seguridad Aplicativa Rol • Un rol es un grupo lógico de usuarios. • Se realiza un mapeo entre estos y las identidades de seguridad (directores y grupos) por el responsable del “despliegue” de las aplicaciones. • Se utilizan en la seguridad declarativa y programada. 22 Módulo IV.- Seguridad Aplicativa Rol • • • La autorización declarativa se utiliza para controlar el acceso a un método de un EJB. Este método se asocia a los elementos de permisos de los métodos que se implementan en el descriptor. Un director puede ejecutar el método si este tiene acceso al método en el rol. Módulo IV.- Seguridad Aplicativa Rol • Cada director se asocia a un rol que le permite acceder a un recurso. • La aplicación de las reglas de seguridad en los recursos WEB o en los EJ B depende de que exista la asociación del director y la llamada al recurso en el rol. • El contenedor puede determinar esto basado en los atributos de seguridad del director. 23 Módulo IV.- Seguridad Aplicativa Rol • Los roles son definidos en un archivo XML llamado “deployment descriptor”. • Contiene elementos XMl que permiten la implementación de la seguridad. • El creador de la aplicación asigna los métodos principal y de componentes de un EJB a los roles de seguridad. • Esté también define cada rol utilizando un elemento “rol-seguridad”. • Cada elemento se encuentra a nivel del archivo ejb-jar y aplica a todos los EJBs que están en este nivel. Módulo IV.- Seguridad Aplicativa Rol • Un usuario puede tener asignados varios roles. 24 Módulo IV.- Seguridad Aplicativa Acceso a los recursos • Al acceder a un recurso el usuario puede: – Utilizarlo como el que llama. – Utilizar una identidad alterna. Módulo IV.- Seguridad Aplicativa Acceso a los recursos 25