1 / 93

Programrendszerek Fejlesztése

Programrendszerek Fejlesztése. 14 / 8. Tartalom. Alkalmazásszerverek, alkalmazásszerverek felépítése Java EE alkalmazások és modulok és kezelésük Alkalmazásszerverek kezelése (monitoring, menedzsment) Clustering, Jgroups Alkalmazásszerverek biztonsága Java Connector Architecture.

niyati
Download Presentation

Programrendszerek Fejlesztése

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Programrendszerek Fejlesztése 14/8

  2. Tartalom • Alkalmazásszerverek, alkalmazásszerverek felépítése • Java EE alkalmazások és modulok és kezelésük • Alkalmazásszerverek kezelése (monitoring, menedzsment) • Clustering, Jgroups • Alkalmazásszerverek biztonsága • Java Connector Architecture

  3. Alkalmazásszerverek Alkalmazásszerver Alkalmazás Alkalmazás hardver, operációs rendszer, adatbázis, hálózat, … • Üzleti alkalmazások számára biztosítanak megfelelő infrastruktúrát – Middleware • Programozási modell különböző funkciókra (pl. perzisztencia-kezelés) • Szabványos és saját (gyártóspecifikus) API-k • Rendszerint a következő rétegek vannak: • Alkalmazás szerver • Kliens • Adatbázis • Gyakorlatilag futtató környezetként szolgál a rá feltelepített alkalmazások számára • Ahhoz, hogy az alkalmazásokat futtatni tudja, azoknak meg kell felelniük bizonyos formai feltételeknek

  4. Alkalmazásszerverek • Java: • Ingyenes/szabad: • JBoss (RedHat) • Glassfish (Sun) • Geronimo (Apache) • JOnAS • Fizetős • WebSphere (IBM) • WebLogic (BEA) • OC4J (Oracle) • .NET: • Microsoft IIS + .NET Framework

  5. Architektúra – jellemző modulok • Perzisztenciakezelő: • Adatok hosszú távú tárolásához (pl. adatbázisba) biztosít szolgáltatásokat • Web konténer: • Web-alapú felhasználói felület számára biztosít futási környezetet • EJB konténer: • EJB-modulok(üzleti logika) számára biztosít futási környezetet • Java MessagingServices (JMS) kezelő: • Üzenetküldés (aszinkron kommunikáció) számára biztosít erőforrásokat és szolgáltatásokat • Message-drivenbeanek is ezt használják • Címtár (JNDI) kezelő: • Felhasználói és rendszerkomponensek név alapú elérésére biztosít lehetőséget a komponensek fizikai helyétől függetlenül • Tranzakciókezelő: • Üzleti tranzakciók kezeléséhez nyújt támogatást • Nemcsak az adatbázis-tranzakciók kezelését végzi (arra ott a perzisztenciakezelő), hanem az üzleti logika építőelemeinek (műveletek) tranzakcióba zárásáért és atomi kezeléséért felelős • Management interfész: • Az alkalmazásszerver egyes komponenseit (rendszer és felhasználói) lehet ezen keresztül vezérelni (beállítások és műveletek) • Sok alkalmazásszerver esetében van ehhez web-alapú kliens, ami integrálva van a szerverhez, de jellemzően más formában is elérhető (pl. JMX) • Újabban webszolgáltatás-kezelő: • Webszolgáltatások számára biztosít futási környezetet

  6. Architektúra - JBoss • Mikrokernel alapú: van egy kicsi mag, mint platform, és az alkalmazásszerver összes szolgáltatása ezen keresztül kapcsolódik egymáshoz • JBoss esetén a mikrokernelaJMX-re (Java Management Extesion) épül • Előnyök: • JMX egy szabvány • Tetszőleges JMX-képes kliens alkalmazás felhasználható a modulok kezeléséhez (web alapú, grafikus vagy konzolos is létezik) • Minden modul ugyanúgy kezelhető (JMX-interfészen keresztül) • Nagyfokú modularitás: • felesleges modulok adott telepítés esetén eltávolíthatók • Az egyes modulok velük ekvivalens másikra cserélhetők (pl. perzisztencia: Hibernate Toplink)

  7. Architektúra - WebSphere

  8. J2EE alkalmazások és modulok • Moduláris felépítésű üzleti alkalmazások, amelyek alkalmazásszerver-környezetben képesek üzemelni • J2EE modulok típusai: • Web modul (WAR): web-alapú felhasználói felületek számára (egyszerű háttérlogikával) • EJB modul (JAR): bonyolultabb üzleti logika számára • Alkalmazáskliens modul (JAR): nem web-alapú kliens alkalmazások számára • Erőforrás-adapter modul (RAR): nem J2EE-kompatibilis rendszerekkel való integráció számára • Enterprise alkalmazás (EAR): előző négy modultípus egységbe csomagolására

  9. Modulok helye Alkalmazáskliens modul (JAR) Erőforrás-adapter modul (RAR) Web modul (WAR) ? Enterprisealkalmazás (EAR) EJB modul (JAR)

  10. Alkalmazások és modulok telepítése • Elkészített modulok és alkalmazások adott formai követelményeknek megfelelően • Rendszerint van ún. hot-deploy könyvtár: ebbe bemásolva az elkészített modulokat, azokat az alkalmazásszerver automatikusan telepítni (beállítható időközönként vizsgálja a változásokat) • Rendszerint van lehetőség webes menedzsmentre, általában ezen keresztül is lehet modulokat telepíteni

  11. Alkalmazások és modulok telepítése - JBoss • Szabvány J2EE modulok és alkalmazások telepíthetők • JBoss-os kiegészítő modulok is telepíthetők • Megfelelő szerver profilban lévő deploykönyvtár tartalmazza a telepített alkalmazásokat: • Becsomagolt (archív) modulok (.ear, .war, .jar fájlok) • Ún. exploded modulok (hasonló az előzőhöz, csak nincs egybecsomagolva, könyvtárként jelenik meg) • JMX interfészen keresztül is telepíthetők modulok

  12. Alkalmazások és modulok telepítése - WebSphere • Webes vagy konzolos menedzsment eszközök használatával • Hot directory-ba való bemásolással: • Java EE csomagolás nélkül is telepíthetők alkalmazások (akár Java forrásfájl is telepíthető így) • A hiányzó dolgokat (telepítési leírók, stb.) az alkalmazásszerver automatikusan legenerálja, • Megfelelő fejlesztőeszköz használatával: • Pl. Rational Application Developer for WebSphere Software, Rational Application Developer Assembly and Deploy • Ezek jellemzően az alkalmazásfejlesztés életciklus nagyobb részét támogatják (tervezés, fejlesztés, tesztelés, telepítés, stb.)

  13. Menedzsment • Java Management Extesions (JMX) • Standard API • Erőforrások kezelésére és monitorozására: alkalmazások, eszközök, szolgáltatások, JVM, stb. • Jellemző használat: • Alkalmazások konfigurációjának elemzésére és módosítására • Alkalmazások viselkedéséről statisztikai adatok gyűjtése, és elérhetővé tétele • Állapotváltozások és hibák esetén történő értesítésekre • Moduláris architektúra  rugalmasan bővíthető • Ún. MBean-ek testesítik meg a kezelhető erőforrásokat (szabvány interfésszel rendelkező osztályok)

  14. Menedzsment - JBoss • JMX Console: web alapú kliens a JMX interfész használatához • Twiddle: parancssori eszköz a JMX interfész használatához • Lehetőségek: • Szolgáltatások, modulok állapota (indítási és leállítási lehetőség) • Statisztikák (kérések száma, gyorsítótárak, készletek állapota stb.) • Beállítások, finomhangolás • … • Fontos: JMX Console alkalmazást éles rendszeren tiltani kell, mert ehhez hozzáférve a JBosst futtató gépen tetszőleges parancs futtatható

  15. Menedzsment - JBoss Web Console: webes felület a JBoss fontosabb részeinek kezeléséhez JMX Console-lal szemben menedzsment szempontjából logikailag csoportosítja az erőforrásokat Lehetőséget biztosít az egyes értékek grafikonon történő nyomon követésére valamint pillanatképek készítésére

  16. Menedzsment - WebSphere • A WebSphere egyik előnye a kiváló menedzsment lehetőség • Központilag több különálló szerver kezelhető: • Adminisztratív ügynök • Munkakezelő (Job manager): menedzsment feladatok (telepítés, elindítás, stb.) kezelésére • Centralizált telepítéskezelő: távoli szerverekre egy központi helyről lehet alkalmazásokat telepíteni • Alkalmazások csoportosíthatók, a csoportok egységesen kezelhetők • Scriptek készítésének támogatása parancssori eszközökkel  programozható menedzsment • JMX itt is használható

  17. Clustering • Nagy teljesítményigényű vagy kritikus üzleti alkalmazások esetén alkalmazzák • Több alkalmazásszerver példány együttműködik a feladatok elvégzésére • Előnyök: • Ha a folyamatok részei párhuzamosíthatók, akkor az egyes részfolyamatok futhatnak párhuzamosan  a teljes folyamat gyorsabban végrehajtódik • Loadbalancing: mindig olyan szerver példány kapja a következő feladatot, amelyiknek a legkisebb a terhelése • Hibatűrés: Amennyiben egy szerver példány kiesik (hálózati vagy egyéb hiba esetén), a feladatát a többiek át tudják venni • J2EE szabvány szerint támogatja az alkalmazások clusterekretörténő telepítését • A clustering tényleges megvalósítása gyártófüggő • Rendszerint van valamilyen előtétrendszer, ami a kéréseket szétosztja a rendelkezésre álló példányok között – egyes gyártók támogatják az automatikus elosztást • Probléma: munkamenet (session) hogyan kerüljön át az egyik példányról a másikra

  18. JGroups • Megbízható multicast kommunikációra felhasználható Java osztálykönyvtár (licensz: LGPL) • Egymással kommunikáló csomópontokból csoportokat képez • A csoportok tetszőleges LAN-on vagy WAN-on kialakíthatók • Csoportok kialakítása dinamikusan (futásidőben) történik • Point-to-point és point-to-multipoint kommunikációt is támogat • Jellemzői: • Veszteségmentes adatátvitel minden címzettnek (elveszett üzenetek újraküldésével • Nagy üzenetek tördelése (küldő oldalon) és visszaállítása (fogadó oldalon) • Üzenetsorrend megtartása • Atomi műveletvégzés: vagy mindenki megkapja a teljes üzenetet vagy senki • Természetéből fakadóan képes clustering támogatására

  19. JGroups • Többféle átviteli protokoll támogatása: • TCP • UDP • Tunnel • Többféle felderítési protokoll támogatása: • Ping • TCPGossip • TCPPing • Mping • Többféle hibadetektáló protokoll támogatása: • FD: szomszédoknak küldött heartbeat üzeneteket használ • FD_SOCK: TCP socketek gyűrűje, minden csomópont a szomszédjához kapcsolódik • VERIFY_SUSPECT: gyanús csomópontot megpróbálja „pingelni” (központi koordinátort használ) • Többféle megbízható kézbesítési protokoll támogatása: • Unicast: nyugta alapú (akkor szól, ha minden rendben van) • NAKACK: az üzenetek sorozatszámot kapnak, ha a sorozatban hiba keletkezik, újraküldést kér a fogadó (akkor szól, ha hiba van)

  20. Clustering - JBoss • Beépített clusterkezelés • JBoss terminológia: • Partition: egy cluster • Node: egy JBoss példány • JGroups felhasználása a megbízható üzenetküldésre a clustereken belül a node-ok között  dinamikus felderítés és csatlakozás/kilépés • Csatornák használata: • JBoss cache által használt csatornák: • Web session replication • EJB3 stateful session bean replication • EJB3 entity caching • Általános célú clustering szolgáltatás: • HAPartition: • Más node-okkal való RPC lebonyolítására • Listenereket akaszthatunk rá, amiket adott események esetén értesít • Sok szolgáltatás magja ide köthető • Következmény: • Egy két JBoss példányból álló (alapértelmezett beállítások mellett futó) cluster gyakorlatilag négy cluster (mind a négyben kettő node szerepel), mivel a cluster csatornánként értendő

  21. Clustering - JBoss • Alapértelmezetten az all nevű szerver profil tartalmaz clustering-támogatást (indítása:-c all parancssori argumentumokkal) • A deploy könyvtárban a cluster-service.xml fájlban találhatók a clustering beállítások • A clustereknek egyedi nevet kell adni, ha közös hálózaton vannak • Egy példány több clusternek is tagja lehet, de ez menedzsment szempontból ellenjavallott • HTTP session replication: • JBoss automatikusan kezeli az allszerver konfigurációban (a load balancingot nem!) • web.xml-ben distributableattribútumot be kell állítani <mbean code="org.jboss.ha.framework.server.ClusterPartition" name="jboss:service=DefaultPartition"> <! -- Name of the partition being built --> <attribute name="PartitionName"> ${jboss.partition.name:DefaultPartition} </attribute> <! -- The address used to determine the node name --> <attribute name="NodeAddress"> ${jboss.bind.address} </attribute> <! -- Determine if deadlock detection is enabled --> <attribute name="DeadlockDetection">False</attribute> <! -- Max time (in ms) to wait for state transfer to complete. Increase for large states --> <attribute name="StateTransferTimeout">30000</attribute> <! -- The JGroups protocol configuration --> <attribute name="PartitionConfig"> ... </attribute> </mbean>

  22. Clustering - JBoss Properties p = new Properties(); p.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory"); p.put(Context.URL_PKG_PREFIXES, "jboss.naming:org.jnp.interfaces"); p.put(Context.PROVIDER_URL, "localhost:1100"); // HA-JNDI port. return new InitialContext(p); • Alkalmazások telepítése JBoss clusterbe farming szolgáltatás segítségével: • egyszerű deploy az all szerver konfiguráció farm könyvtárába  automatikusan települ az alkalmazás az összes clusterbeli példányra • Később becsatlakozó példányok a csatlakozáskor automatikusan telepítik az ilyen alkalmazásokat • Csak az archivált modulokat támogatja, az exploded típusúakat nem <?xml version="1.0" encoding="UTF-8"?> <server> <mbean code="org.jboss.ha.framework.server.FarmMemberService„ name="jboss:service=FarmMember,partition=DefaultPartition"> ... <attribute name="PartitionName">DefaultPartition</attribute> <attribute name="ScanPeriod">5000</attribute> <attribute name="URLs">farm/</attribute> </mbean> </server>

  23. Clustering - JBoss <!– HA-JNDI configuration in cluster-service.xml: --> <mbean code="org.jboss.ha.jndi.HANamingService„ name="jboss:service=HAJNDI"> <depends>jboss:service=DefaultPartition</depends> </mbean> @Stateless @Clustered public class MyBean implements MySessionInt { public void test() { // Do something cool } } • Állapottovábbítás: • HA-JNDI (high availability): • Teljes clusterre kiterjedő JNDI • Mellette minden példányban saját lokális JNDI • Az alkalmazásnak tudnia kell a HA-JNDI jelenlétéről: jndi.properties fájlba: java.naming.provier.url=server1:1100,server2:1100,server3:1100

  24. Clustering - WebSphere Vertikális cluster Horizontális cluster • WebSphere esetén: • Cluster: olyan alkalmazásszerverek csoportja, amelyek azonos alkalmazásokat futtatnak és kezelhetők úgy, mint egyetlen alkalmazásszerver • Clustermember: egy WebSphere példány • A clusteren végzett telepítés, eltávolítás, frissítés (stb.) a cluster minden tagján végrehajtódik • Egy tag legfeljebb egyetlen clusterhez tartozhat • Vertikális (egy rendszeren belüli) és horizontális (több rendszeren keresztüli) és vegyes clustereket is támogat

  25. Biztonság • Authentikáció: • folyamat, amely során megállapítjuk, hogy ki szeretne hozzáférni egy adott erőforráshoz • Valamilyen egyedi információt kell begyűjteni a hozzáférést kezdeményezőtől: • Tudás alapú: pl. felhasználónév és jelszó • Kulcs alapú: fizikai vagy titkosítási kulcsok • Biometrikus: pl. ujjlenyomat, retina, DNS, stb. • Authorizáció: • Folyamat, amelynek során ellenőrizzük, hogy egy adott felhasználó megfelelő jogosultságokkal rendelkezik-e a kért erőforráshoz való hozzáféréshez

  26. PKI és társai • Kivonat (Hash) • Titkos kulcsú titkosítás (Symetric) • Nyilvános kulcsú titkosítás (Asymetric) • Digitális aláírás (Digital Siganture) • Digitlis tanúsítvány (Digital Certificate) • Tanúsítvány hatóság (Certificate Authority)

  27. Kivonat • Tetszőleges bemenet • Pl.: 128 bites kimenet • A bemeneten egy kis változtatás is megváltoztatja a kimenete is • Nem visszafejthető

  28. Szimmetrikus kulcsú titkosítás • Közös kulcs • Gyors • Kulcselosztás?

  29. Aszimmetrikus kulcsú titkosítás • Nyilvános kulcs • Titkos kulcs • Lassú

  30. Digitális aláírás

  31. Digitális tanúsítvány

  32. Tanúsítvány hatóság

  33. Biztonsági megoldások

  34. TLS (Tranport Layer Security) • Új réteg bevezetése: • Netscape SSL • Microsoft PCT • IETF TLS • Megbízhatóság, Adatvédelem, Azonosítás • Definiálja a csatorna paramétreinek egyeztetési módszerét • Viszony/Kapcsolat

  35. TLS felosztása I. • TLS Handshake • Session identifier • Peer certificate • Compression method • Cipher spec • Master secret • Is resumable

  36. TLS felosztása II. • TLS Record • Fragmentálás • Tömörítés • Tartalom védelem • Titkosítás

  37. Kapcsolat felépítés • Hello üzenetcsere • Rejtjelezési paraméter csere • Bizonyítvány csere • Főkulcs • Adatcsere

  38. SSO, E-SSO • Singlesign-on (SSO) • Hozzáférés vezérlés • A felhasználó egyszer lép be • Az erőforrások hozzáférése ezután már transzparens számára • Problémák: • Sok webhely, sok jelszó (21 account/password) • A jelszó kezelés bonyolult • Ezért egy jelszavat használ mindenhova • Jelszó menedzselők • Mac-X, GNOME, KDE, Web Böngészők • Előnyei: • Idő megtakarítás • IT költség csökentés • Több szintű transzparens biztonság

  39. Megoldások • SSO • Kerberos alapú • Okos kártya alapú • OTP token (onetimepassword) • OpenSSO • Megosztott azonosítás, Föderatív azonosság • OpenID • Shibboleth • Információ kártyák • LibertyAllience • WS-Federation • Szabványok • SAML

  40. SAML • SecurityAssertionMarkupLanguage • Azonosítás, Jogosultság kezelés biztonsági tartományok között • Probléma: • Intranet megoldások • Web Böngésző SSO? • Részei • XML séma • XML aláírás • XML titkosítás • Elemei: • XML alapú állítások • Protokollok • Kötések • Profilok

  41. SAML • Kifejezések • Azonosítás • Attribútum • Engedélyezés döntés eredmény (XAML inkább) • Pl.: X adta ki t időben S-re vonatkozóan amenniyben a C feltételek igazak • Protokol • Hogyan van a dróton átküldve • Legfontosabb: • Query • Authenticationquery • Attributequery • Authorizationquery • Kötés

  42. SAML

  43. OTP token • Cél: nehezebb legy a védett erőforráshoz jogosulatlanul hozzáférni • Folyamatosan változó jelszó • Típusai • Matematikai algoritmus mely az előző alapján gyártja a következőt (Leslie Lamport: hash lánc) • Idő szinkronizálás alapú (speciális hw, mobil, …) • Matematikai alapú de az újak az azonosító szerver véletlenszáma alapján generálódnak (SMS)

  44. OpenID • Módszer arra, hogy egy azonosító egy felhasználó kezelésében van • Elosztott • A felhasználó tetszőleges OpenID szolgáltatót választhat • Szolgáltató váltásnál is megtarthatja az azonosítóját • Ajax segítségével az oldal elhagyása nélkül is azonosítható a felhasználó • Profil, … nem része a specifikációnak

  45. OpenID • A protokol • A felhasználó megdja az azonsítóját az erőforráshoz • Az erőforrás felderíti az azonosító szervert és annak protokollját • Az erőforrás átirányítja a felhasználót az azonosító szerverhez • Az azonosító szerver azonosítja a felhasználót (az hogy hogyan az nincs megadva) • Az azonosító szerver visszairányítja a felhasználót az erőforráshoz az azonosítás eredményével • URL, Nonce, aláírás

  46. Shibboleth • SAML alapú • Föderatív kapcsolatok felett azonosítás, jogosultság kezelés

  47. Kerberos • MIT Athena project (http://web.mit.edu/kerberos/www/) • Funkciói (Fejek): • Azonosítás (authentication) • Hozzáférés vezérlés (access control) • Naplózás (auditing) • Felépítés: • Kliens (Client) • Szerver (Server) • Jegy központ (KDC) • Kerberos V5 (RFC 1510): • Azonosítás

  48. Kerberos Működési Elv • A Kerberos azonosítás a szimmetrikus titkosításon alapul • Kulcs elosztás • Kerberosz jegy • A jegy kiosztása • Az egyed fő kulcs használatának korlátozása

  49. A Kerberos azonosítás a szimmetrikus titkosításon alapul • DK(EK(M)) = M; • Hasonló megoldás van NTLM esetén is: • Ha a közös kulccsal van titkosítva akkor a másik fél hiteles • Titkosított Csomag: • Azonosító (authenticator) mindig mást kell titkositania • Közös titkos kulcs: • Viszony Kulcs (session key) • Kritikus elem: • Időbélyeg (Time Stamp) kisebb a kulönbség mint 5 perc, sorrend figyelés • Kölcsönös azonosítás: • A szerver is megteszi ugyanezt

  50. Kulcs elosztás • Hogyan osztjuk ki a kulcsokat (nem csak )emberek, … • Kerberos nélkül: • n (n — 1)/2 kulcs(50,000 -> 1,500,000,000) • Minden kliensen • Kerberos : Három entitás: • Két kommunikáló fél • Közvetitő fél (Key Distribution Center - KDC) • Minden egyed rendelkezik egy-egy KDC-vel közös kulccsal • Az Egyed Mester Kulcsa (Master Key) (pl: a felh. Jelszavából, MD5 tárolás, létrehozáskor), hosszútávú kulcs • Kerberos tartományok • Windows 2000: • Dcpromo -> kdc szolgáltatás (minden DC írható/olvasható KDC adatbázis) • Azonosító szolgáltatás • Jegy Kiadó Szolgáltatás • Multimaster

More Related