930 likes | 1.26k Views
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.
E N D
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
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
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
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
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)
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
Modulok helye Alkalmazáskliens modul (JAR) Erőforrás-adapter modul (RAR) Web modul (WAR) ? Enterprisealkalmazás (EAR) EJB modul (JAR)
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
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
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.)
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)
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ó
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
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ó
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
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
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)
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ő
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>
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>
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
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
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
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)
Kivonat • Tetszőleges bemenet • Pl.: 128 bites kimenet • A bemeneten egy kis változtatás is megváltoztatja a kimenete is • Nem visszafejthető
Szimmetrikus kulcsú titkosítás • Közös kulcs • Gyors • Kulcselosztás?
Aszimmetrikus kulcsú titkosítás • Nyilvános kulcs • Titkos kulcs • Lassú
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
TLS felosztása I. • TLS Handshake • Session identifier • Peer certificate • Compression method • Cipher spec • Master secret • Is resumable
TLS felosztása II. • TLS Record • Fragmentálás • Tömörítés • Tartalom védelem • Titkosítás
Kapcsolat felépítés • Hello üzenetcsere • Rejtjelezési paraméter csere • Bizonyítvány csere • Főkulcs • Adatcsere
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
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
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
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
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)
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
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
Shibboleth • SAML alapú • Föderatív kapcsolatok felett azonosítás, jogosultság kezelés
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
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
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
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