Скачать презентацию Sicherheit bei Enterprise Java Beans Überblick Скачать презентацию Sicherheit bei Enterprise Java Beans Überblick

771ecc74213a8e24de3bc6a8d83cb64c.ppt

  • Количество слайдов: 41

Sicherheit bei Enterprise Java. Beans Sicherheit bei Enterprise Java. Beans

Überblick • Kurze Einführung in EJB • Sicherheit bei EJB • Client-Tier – Webclient-Server Überblick • Kurze Einführung in EJB • Sicherheit bei EJB • Client-Tier – Webclient-Server – Applicationclient-Server • Mid-Tier – 3 players – Message-Driven Beans – Container-Container • Legacy-Tier • RBAC

Kurze Einführung in EJB • J 2 EE Spezifikation für Verteilte Geschäftsapplikationen (1. 4) Kurze Einführung in EJB • J 2 EE Spezifikation für Verteilte Geschäftsapplikationen (1. 4) • Beinhaltet neben Komponenten- (EJB 2. 1) auch Serverspezifikation • Wozu eigentlich J 2 EE EJB-Architektur? • Verteilung, Skalierung, Portabilität • Vereint Java-Technologien (JDBC, JSP. . . ) • Server interagiert mit Ressourcen • einfache Komponenten-Programmierung

Kurze Einführung in EJB • Viele verschiedene Anbieter für Server. Implementierungen. z. B. BEA, Kurze Einführung in EJB • Viele verschiedene Anbieter für Server. Implementierungen. z. B. BEA, Sun, IBM, JBoss. . . (Problem: Sicherheit anders gehandhabt) • J 2 EE von Sun bietet Implementierung („for educational purposes“) eines Servers+Tools

Kurze Einführung in EJB • Beans kommunizieren immer über den Container – mit Container-/Serverdiensten Kurze Einführung in EJB • Beans kommunizieren immer über den Container – mit Container-/Serverdiensten (javax. ejb. EJBContext) – mit anderen Beans (JNDI) • „container mediation“ erlaubt Komponenten -Einstellungen außerhalb des Codes

Kurze Einführung in EJB Kurze Einführung in EJB

Drei Arten von Beans • Sessionbean (Shopping. Cart) • Entitybean (Kunde, Auftrag, . . Drei Arten von Beans • Sessionbean (Shopping. Cart) • Entitybean (Kunde, Auftrag, . . . ) • Message-Driven Bean (JMS) (Reisebuchung) Kommunizieren mit dem Container über „call. Back-Methoden“ (java. ejb-Interfaces / javax. ejb. EJBContext)

Players in the EJB Lifecycle • Bean Provider • Application Assembler • Bean Deployer Players in the EJB Lifecycle • Bean Provider • Application Assembler • Bean Deployer Sie alle spielen eine spezifische Rolle in der Applikationssicherheit (deployment descriptor)

deployment descriptor • XML-Dokument. (Version 1. 0 noch serialisiertes Objekt. ) • Kommunikation zwischen deployment descriptor • XML-Dokument. (Version 1. 0 noch serialisiertes Objekt. ) • Kommunikation zwischen 3 players • Container erhält Informationen über Beans bzw. Applikation – Sicherheit – Persistenz – Transaktionen. . .

Konzept der Client-Aufrufe über JNDI // Set up the environment properties Hashtable h = Konzept der Client-Aufrufe über JNDI // Set up the environment properties Hashtable h = new Hashtable(); h. put(Context. INITIAL_CONTEXT_FACTORY, "weblogic. jndi. WLInitial. Context. Factory"); h. put(Context. PROVIDER_URL, "t 3: //localhost: 7001"); // Get an Initial. Context initial. Context = new Initial. Context(h); . . . // Get reference to Home Interface order. Home = (Order. Home)initial. Context. lookup(„app/Order“);

Wo sind „Angriffspunkte“? • Client-Server (Perimeter) • Innerhalb des Servers (zwischen Beans und Containern) Wo sind „Angriffspunkte“? • Client-Server (Perimeter) • Innerhalb des Servers (zwischen Beans und Containern) • Server und Legacy-Systemen • 3 Players

Überblick über die Sicherheit bei EJB • • Programmatische Sicherheit (javax. ejb. EJBContext) Deklarative Überblick über die Sicherheit bei EJB • • Programmatische Sicherheit (javax. ejb. EJBContext) Deklarative Sicherheit (method permissions) Rollenbasierter Zugriff Security Identity propagation (java. security. Principal) (Bean hat in Container Access Control Entries) • Seit 2. 1 Client-Authentisierung mit JAAS (über SSL) • Spezifikation erfordert Tool für rollenbasiertes Zugriffssystem (principal-to-role-mapping)

Richtlinien • So wenig programmatic security wie möglich (oft aber nicht machbar) • Stattdessen Richtlinien • So wenig programmatic security wie möglich (oft aber nicht machbar) • Stattdessen container-managed (entlastet Programmierer) Ziel: Konfiguration durch Endnutzer

Client Tier Client Tier

Client-Server • Nach Authentisierung sind einem Client. Subject (mehrere) „Principals“ und „Credentials“ (PK, Zertifikate, Client-Server • Nach Authentisierung sind einem Client. Subject (mehrere) „Principals“ und „Credentials“ (PK, Zertifikate, Passwort usw. ) zugeordnet. • Principals sind Rollen zugeordnet (principal -to-role-mapping) • Security Identity Propagation

Webclient-Server • Firewall • SSL-Verbindung (J 2 EE: X. 509 Server Certificate muss installiert Webclient-Server • Firewall • SSL-Verbindung (J 2 EE: X. 509 Server Certificate muss installiert sein) • 3 Arten von Authentisierung (exemplarisch an J 2 EE): – http (name-passwort, optional SSL) – formular (umfangreicher konfigurierbar, optional SSL) – client-certificate (mutual authentication, X. 509 certificate)

Applicationclient-Server • JAAS (verschiedene Loginmodule: name/password, Chipkarte. . . ). • Die Loginmodule steuern Applicationclient-Server • JAAS (verschiedene Loginmodule: name/password, Chipkarte. . . ). • Die Loginmodule steuern Loginvorgang: Applikationen implementieren javax. security. auth. callback. Callback. Handler interface. ( Loginmodul unabhängig)

Applicationclient-Server Applicationclient-Server

Mid-Tier Mid-Tier

Mid-Tier Security • 3 Players • Bean provider • Application Assembler • Deployer • Mid-Tier Security • 3 Players • Bean provider • Application Assembler • Deployer • Container-Container • Message-Driven Beans

Bean provider • Soll „am wenigsten“ mit Sicherheitsfragen belangt werden (hat ja auch keine Bean provider • Soll „am wenigsten“ mit Sicherheitsfragen belangt werden (hat ja auch keine Ahnung vom Einsatzort) • Situationen erfordern aber evtl. programmatische Sicherheit (Tageszeit, Bestellungen über 5000 Euro)

Bean provider • Muss logische Rollen verteilen (im Kontext des Codes/Beans, z. B cust, Bean provider • Muss logische Rollen verteilen (im Kontext des Codes/Beans, z. B cust, admin, . . . ) • Rollenreferenzen : . . . This role encompasses the administrators of the on-line shopping company. admin . . .

Bean provider Programmatic • Programmierer kann über den Container feststellen, in welcher Rolle der Bean provider Programmatic • Programmierer kann über den Container feststellen, in welcher Rolle der Aufrufende ist • ejb. Context. get. Caller. Principal() (java. security. Principal) • ejb. Context. is. Caller. In. Role(“Kunde”); • http. Servlet. Request. is. User. In. Role(“Kunde”); • Kann Programmierer geheime Rollen einführen? • Buch: „The best course is to build your own EJBs or purchase ones that avoid application level security. “ (S. 39)

Application Assembler • Erzeugt spezifische Rollen für den deployer, die u. A. auf denen Application Assembler • Erzeugt spezifische Rollen für den deployer, die u. A. auf denen des Programmierers aufsetzen. • Hat die Aufgabe, dem deployer das Rollenmodell zu spezifizieren • Deklariert, welche Methoden von welcher Rolle aufgerufen werden können (deployment descriptor)

Deployer • Ist auf Spezifikation des Produktes angewiesen • Muss Hersteller vertrauen können • Deployer • Ist auf Spezifikation des Produktes angewiesen • Muss Hersteller vertrauen können • Ordnet Benutzer/Gruppen den vorgegebenen Rollen zu bzw. erzeugt neue Rollen • Realms (Serverspezifisch)

Praxis: J 2 EE deploytool Praxis: J 2 EE deploytool

Message-Driven Beans • JMS Message Provider in Server integriert (resource adapter) • Messages selbst Message-Driven Beans • JMS Message Provider in Server integriert (resource adapter) • Messages selbst enthalten keinen Sicherheitskontext • Assembler kontrolliert den Fluss der Nachrichten: – deklariert logische Queue-Namen – bindet consumer an diese Queue-Namen

Message-Driven Beans Deployment-descriptor des Producers: … <message-destination-ref> <message-destination-ref-name>jms/Stock. Info</message-destination-ref-name> <message-destination-type>javax. jms. Queue</message-destination-type> <message-destination-link>Email. MDB</message-destination-link> Message-Driven Beans Deployment-descriptor des Producers: … jms/Stock. Info javax. jms. Queue Email. MDB Query. MDB … Consumer-Programm: // Look up the JMS Stock. Queue in the environment. Object result = init. Ctx. lookup("java: comp/env/jms/Stock. Info"); // Convert the result to the proper type. javax. jms. Queue queue = (javax. jms. Queue)result;

Message-Driven Bean Deployment-descriptor des Consumers: <ejb-jar> <enterprise-beans> <message-driven> <ejb-name>Email. MDB</ejb-name> <ejb-class>com. customware. ejb. Email. Message-Driven Bean Deployment-descriptor des Consumers: Email. MDB com. customware. ejb. Email. MDB Container Email. MDB javax. jms. Queue jms/Stock. Info Consumes system

Message-Driven Beans • Deployer muss Einstellungen des Assemblers verifizieren (J 2 EE. 5. 6. Message-Driven Beans • Deployer muss Einstellungen des Assemblers verifizieren (J 2 EE. 5. 6. 3) • Server muss Tools dafür bereitstellen

Container-Container • Server-spezifisch • Trust relationship zwischen Containern (z. B über SSL mutual authentication) Container-Container • Server-spezifisch • Trust relationship zwischen Containern (z. B über SSL mutual authentication) • Seit 2. 0: Interaktion zwischen Containern mit CORBA Transport-Protokoll IIOP (Internet Inter-ORB Protocol über TCP/IP)

Container-Container • Genauer: CSIv 2 (Common Secure Interoperability version 2) , erlaubt Authentisierungs- und Container-Container • Genauer: CSIv 2 (Common Secure Interoperability version 2) , erlaubt Authentisierungs- und Authorisationsdaten • RMI (Remote Method Invocation) über IIOP (keinen Platz für Sicherheitsinformationen) • Ist in Server implementiert (+SSL)

Legacy-Tier Legacy-Tier

Legacy-Tier über Resource-Adapter (password/Kerberos) • Container-managed javax. resource. cci. Connection cx = cxf. get. Legacy-Tier über Resource-Adapter (password/Kerberos) • Container-managed javax. resource. cci. Connection cx = cxf. get. Connection(); • Bean-managed properties. set. User. Name(". . . "); //from credentials properties. set. Password(". . . "); javax. resource. cci. Connection cx = cxf. get. Connection(properties);

Skalierung und RBAC • RBAC 0 • User - User • Rollen - Rollen Skalierung und RBAC • RBAC 0 • User - User • Rollen - Rollen • Permissions -

Fazit/Diskussion • Skalierung des Zugriffsschutzes? • „Einfach“? • Sicherheitslücken? Fazit/Diskussion • Skalierung des Zugriffsschutzes? • „Einfach“? • Sicherheitslücken?