Sicherheit bei Enterprise JavaBeans - PowerPoint PPT Presentation

About This Presentation
Title:

Sicherheit bei Enterprise JavaBeans

Description:

Sicherheit bei Enterprise JavaBeans – PowerPoint PPT presentation

Number of Views:82
Avg rating:3.0/5.0
Slides: 42
Provided by: Eingeehrt3
Category:

less

Transcript and Presenter's Notes

Title: Sicherheit bei Enterprise JavaBeans


1
Sicherheit bei Enterprise JavaBeans
2
Ü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

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

4
Kurze Einführung in EJB
  • Viele verschiedene Anbieter für
    Server-Implementierungen. z.B. BEA, Sun, IBM,
    JBoss... (Problem Sicherheit anders gehandhabt)
  • J2EE von Sun bietet Implementierung
  • (for educational purposes) eines
    ServersTools

5
Kurze Einführung in EJB
  • Beans kommunizieren immer über den Container
  • mit Container-/Serverdiensten (javax.ejb.EJBContex
    t)
  • mit anderen Beans (JNDI)
  • container mediation erlaubt Komponenten-Einstell
    ungen außerhalb des Codes

6
Kurze Einführung in EJB
7
Drei Arten von Beans
  • Sessionbean (ShoppingCart)
  • Entitybean (Kunde, Auftrag,...)
  • Message-Driven Bean (JMS) (Reisebuchung)
  • Kommunizieren mit dem Container über
    callBack-Methoden
  • (java.ejb-Interfaces / javax.ejb.EJBContext)

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

9
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 ...

10
Konzept der Client-Aufrufe über JNDI
  • // Set up the environment properties
  • Hashtable h new Hashtable()
  • h.put(Context.INITIAL_CONTEXT_FACTORY,
    "weblogic.jndi.WLInitialContextFactory")
  • h.put(Context.PROVIDER_URL,"t3//localhost7001")
  • // Get an InitialContext
  • InitialContext initialContext new
    InitialContext(h)
  • ...
  • // Get reference to Home Interface
  • orderHome (OrderHome)initialContext.lookup(app/
    Order)

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

12
Überblick über die Sicherheit bei EJB
  • Programmatische Sicherheit (javax.ejb.EJBContext)
  • Deklarative Sicherheit (method permissions)
  • Rollenbasierter Zugriff
  • Security Identity propagation (java.security.Princ
    ipal)
  • (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)

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

14
Client Tier
15
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

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

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

18
Applicationclient-Server
19
Mid-Tier
20
Mid-Tier Security
  • 3 Players
  • Bean provider
  • Application Assembler
  • Deployer
  • Container-Container
  • Message-Driven Beans

21
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)

22
Bean provider
  • Muss logische Rollen verteilen (im Kontext des
    Codes/Beans, z.B cust,admin,...)
  • Rollenreferenzen

... ltsecurity-role-refgt ltdescriptiongt This
role encompasses the administrators of the
on-line shopping company. lt/descriptiongt ltrole-n
amegtadminlt/role-namegt lt/security-role-refgt ...
23
Bean provider Programmatic
  • Programmierer kann über den Container
    feststellen, in welcher Rolle der Aufrufende ist
  • ejbContext.getCallerPrincipal()
    (java.security.Principal)
  • ejbContext.isCallerInRole(Kunde)
  • httpServletRequest.isUserInRole(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)

24
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)

25
(No Transcript)
26
(No Transcript)
27
(No Transcript)
28
(No Transcript)
29
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)

30
Praxis J2EE deploytool
31
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

32
Message-Driven Beans
  • Deployment-descriptor des Producers
  • ltmessage-destination-refgt
  • ltmessage-destination-ref-namegtjms/StockInfolt/me
    ssage-destination-ref-namegt
  • ltmessage-destination-typegtjavax.jms.Queuelt/mess
    age-destination-typegt
  • ltmessage-destination-linkgtEmailMDBlt/message-des
    tination-linkgt
  • ltmessage-destination-linkgtQueryMDBlt/message-des
    tination-linkgt
  • lt/message-destination-refgt
  • Consumer-Programm
  • // Look up the JMS StockQueue in the environment.
  • Object result initCtx.lookup("javacomp/env/jms/
    StockInfo")
  • // Convert the result to the proper type.
  • javax.jms.Queue queue (javax.jms.Queue)result

33
Message-Driven Bean
  • Deployment-descriptor des Consumers
  • ltejb-jargt ltenterprise-beansgt  ltmessage-drivengt 
      ltejb-namegtEmailMDBlt/ejb-namegt   ltejb-classgtcom.
    customware.ejb.EmailMDBlt/ejb-classgt   lttransactio
    n-typegtContainerlt/transaction-typegt   ltmessage-de
    stinationgt
  • ltmessage-destination-namegtEmailMDBlt/message-dest
    ination-namegt
  • ltmessage-destination-typegtjavax.jms.Queuelt/
    message-destination-typegt
  • lt/message-destinationgt
  • ltmessage-destination-refgt
  • ltmessage-destination-linkgtjms/StockInfolt/message
    -destination-linkgt
  • ltmessage-destination-usagegtConsumeslt/message-des
    tination-usagegt
  • lt/message-destination-refgt
  •    ltsecurity-identitygt     ltrun-as-specified
    -identitygt      ltrole-namegtsystemlt/role-namegt  
       lt/run-as-specified-identitygt   lt/security-iden
    titygt  lt/message-drivengt lt/enterprise-beansgt
  • lt/ejb-jargt

34
Message-Driven Beans
  • Deployer muss Einstellungen des Assemblers
    verifizieren (J2EE.5.6.3)
  • Server muss Tools dafür bereitstellen

35
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)

36
Container-Container
  • Genauer CSIv2 (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)

37
Legacy-Tier
38
Legacy-Tier
  • über Resource-Adapter (password/Kerberos)
  • Container-managed
  • javax.resource.cci.Connection cx
    cxf.getConnection()
  • Bean-managed
  • properties.setUserName("...") //from
    credentials
  • properties.setPassword("...")
  • javax.resource.cci.Connection cx
    cxf.getConnection(properties)

39
Skalierung und RBAC
  • RBAC0
  • User - User
  • Rollen - Rollen
  • Permissions - ltmethod-permissiongt

40
(No Transcript)
41
Fazit/Diskussion
  • Skalierung des Zugriffsschutzes?
  • Einfach?
  • Sicherheitslücken?
Write a Comment
User Comments (0)
About PowerShow.com