Studiul Experimental al Unor Elemente de Securitate In Contextul Sistemelor Grid

Studiul experimental al unor elemente

de securitate în contextul sistemelor Grid

Cuprins

Lista figurilor și tabelelor

Capitolul I: INTRODUCERE

Definiții și aspecte preliminarii

Studiu de caz

Tipuri de Grid

Proiecte Grid

Middleware Grid

Relația tehnologiilor Grid cu alte tehnologii

Avantajele folosirii Grid Computing

Exploatarea resurselor neutilizate

Capacitate de procesare paralelă

Resurse și organizații virtuale disponibile în vederea colaborării

Balansarea resurselor

Fiabilitatea

Managementul centralizat al resurselor IT

Arhitectura Grid

Arhitectura Grid orientată spre servicii (SOA)

Serviciile Web

Arhitectura deschisă a serviciilor Grid (Open Grid Service Architecture)

Infrastructura deschisă a serviciilor Grid (OGSI)

Capitolul II: SECURITATEA

2.1. Noțiuni generale de securitate

Definiții și caracteristici ale securității computaționale

Scheme de criptare

Metode de autentificare

Capitolul III: DESCRIEREA APLICAȚIEI

Funcțiile aplicației

Pregătirea sistemului

Implementarea aplicației

Capitolul IV: CONCLUZII

Bibliografie

Lista figurilor

Fig. 1.1 Reprezentarea unui Grid

Fig. 1.2 Configurația Grid redundantă

Fig. 1.3 Administrarea politicilor pentru eficientizarea resurselor

Fig. 1.4 Nivele funcționale în arhitectura Grid

Fig. 1.5 Modul de implementare a serviciilor Grid

Fig. 1.6 Nivele ale OGSA

Fig. 2.1 Criptarea cu chei simetrice

Fig. 2.2 Criptarea cu chei asimetrice

Lista tabelelor

Tabelul 1.1 Interfețele prezente în serviciile Grid

Capitolul 1 INTRODUCERE

Definiții și aspecte preliminarii

Tehnologia Grid este privită ca o tehnologie cu un imens potențial, atât în mediile industriale, cât și în mediile academice, fiind o tehnologie în plin proces de dezvoltare care își propune transformarea rețelei mondiale de sisteme de calcul într-o vastă resursă computațională a cărei putere de calcul să fie oferită utilizatorilor.

Ideea Grid computing a apărut ca urmare a dorinței de a se folosi cât mai eficient toate resursele unui sistem de calcul (putere de procesare, spațiu de stocare a datelor, etc), obținându-se prin intermediul folosirii unei infrastructuri Grid și a uneltelor Grid o putere de procesare ridicată și posibilitatea partajării pe scară largă a resurselor, in condiții de cost mult scăzute față de cazul folosirii calculatoarelor tradiționale. Grid computing s-a dezvoltat, la fel ca multe alte tehnologii inovative, în cadrul laboratoarelor de cercetare din mediile academice, ca răspuns la necesitatea tot mai stringentă a diferitelor centre de cercetare și dezvoltare de a colabora eficient și de a împărtăși cunoștințe și date într-un mod securizat și fără a fi necesară luarea in calcul a diferențelor de platforme hardware și software implementate în cadrul fiecărui grup. Au apărut astfel primele organizații și proiecte care urmăreau dezvoltarea unei infrastructuri de tip Grid cum sunt de exemplu Alianța Globus, sau programul E-Science al Marii Britanii.

Aceste instituții au fost printre primele care au contribuit la dezvoltarea soluțiilor Grid spre maturitate și au făcut posibilă adoptarea lor în alte medii decât cele academice.

lan Foster, cercetător recunoscut internațional ca fiind fondator al Grid computing, menționa in 1993 că această tehnologie a fost necesară la începuturile anilor '80, în momentul in care se căuta stabilirea unor standarde și tehnici de a împărtăși resurse într-un mediu distribuit[l], lan Foster a lucrat alături de cercetetătorii Steve Tuecke și Cari Kesselman pentru a pune bazele Proiectului Globus. Globus reprezintă un efort de dezvoltare a unui produs software orientat către îmbunătățirea colaborării

științifice. Proiectul a ajuns curând să fie sponsorizat și de guvernul Statelor Unite astfel că mai multe proiecte de Grid au inceput să se dezvolte în cadrul câtorva agenții guvernamentale ale Statelor Unite, proiecte bazate pe software-ul oferit de Proiectul Globus. În prezent, popularitatea sistemelor Grid a crescut, și beneficiile utilizării unei astfel de tehnologii au dus la migrarea Grid-urilor din mediile academice și de cercetare spre mediile comerciale, industriale și guvernamentale.

Se poate considera Grid-ul ca fiind o unealtă ce poate să conecteze mașini și resurse dispersate geografic, o tehnologie de calcul capabilă să creeze un “supercalculator virtual”, care dispune de toate resursele de calcul ale părților componente și care este capabil să manipuleze o cantitate impresionanta de date și să ofere o putere de procesare impresionantă.

Fig 1.1 Reprezentarea unui Grid

Termenul “Grid” a fost inventat la mijlocul anilor '90, și provine cel mai probabil din faptul că în literatura de specialitate se apelează frecvent pentru a defini un mediu Grid la analogia cu rețeaua de distribuție a curentului electric (in engleză, “power Grid”). La fel cum o rețea de distribuție a curentului

oferă acces permanent la curent electric, Grid-ul permite accesul permanent la resurse și servicii și ține departe de utilizatorul final detaliile privind implementarea infrastructurii.

O definiție[2] pentru Grid ar putea fi cea dată de Wolfgang Gentzsch în “The Grid, The Time Machine of the 21st Century”: Grid-ul “reprezintă o infrastructură software/hardware/instrumente care furnizează acces nelimitat, dependent, consistent și omniprezent la resurse de tip computațional și date”. Având in vedere că un Grid este de fapt o rețea de calculatoare ce comunică și partajează resurse, se vorbește in primul rând de o infrastructură hardware, care reunește componentele fizice ale unui Grid, realizând conexiunea între ansamblurile sistemului. Infrastructura software oferă un mijloc prin care toate aceste elemente hardware pot fi gestionate și monitorizate.

Procesarea Grid (Grid computing)[3] poate fi cel mai simplu definită ca utilizarea mai multor calculatoare ce colaborează pentru rezolvarea unei probleme la un moment dat, de obicei o problemă complicată, care folosește un volum foarte mare de date sau care necesită un număr ridicat de cicluri CPU.

în contextul acestor definiții și plecând de la ceea ce trebuie să facă un Grid, se disting clar câteva aspecte importante, ce caracterizează un Grid. Astfel ideea fundamentală ce stă la baza oricărui tip de Grid este cea a partajării oricăror tipuri de resurse existente în sistemul Grid (calculatoare, aplicații, date, etc), pentru a fi exploatate în mod colaborativ. Exploatarea în comun a resurselor computaționale face ca partajarea acestora să fie controlată, fiind necesar ca furnizorii și solicitanții de resurse să specifice foarte clar ce anume și în ce condiții se poate partaja, precum și drepturile de acces la resurse. Datorită faptului că un mediu Grid poate fi constituit din noduri care pot avea arhitecturi hardware diferite, nu rulează neapărat același sistem de operare și pot avea implementate cerințe de securitate diferite, este necesară impunerea unor standarde in ceea ce privește protocoalele Grid. O atenție deosebită trebuie acordată și securității în mediile Grid, deoarece aceasta este mult mai dificil de realizat decât în cazul rețelelor convenționale.

Studiu de caz

Tipuri de Grid

Complexitatea și varietatea rețelelor Grid face destul de dificilă o clasificare a acestora. Se pot considera clasificări ale Grid-urilor in funcție de răspândirea geografică, de mediul instituțional căreia un Grid îi este dedicat, funcție de resursele care se doresc partajate, etc. IBM propune un exemplu de clasificare a Grid-urilor dedicat mediului economic, bazată pe mărimea și răspândirea geografică a acestora în intraGrids, interGrids și extraGrids. Această clasificare nu include o diferențiere funcție de diferitele modele arhitecturale ce pot fi implementate, ci mai degrabă se bazează pe modul de construcție a rețelei Grid, oferind modele de topologie[4].

Astfel, un intraGrid este un Grid implementat pe scară restrânsă, la nivel de organizație și care oferă un set rudimentar de servicii Grid. Un astfel de Grid mai este cunoscut si sub denumirea de Grid local (local Grid).

Prin conectarea a două sau mai multe intraGrid-uri rezultă o rețea extraGrid, sau VO Grid (virtual organization).

Un interGrid este dezvoltat pe scară largă și include în mod tipic mai multe organizații care sunt dispersate geografic. Acest tip de Grid este cunoscut și sub denumirea de Internet Grid.

În funcție de modul de utilizare a resurselor intr-un Grid[5], se disting în linii mari următoarele tipuri de Grid-uri:

Grid computațional

Un astfel de Grid pune accent pe partajarea resurselor CPU și este folosit cu precădere când este nevoie de o putere de procesare ridicată în cazul unor aplicații complexe. în această categorie punctăm două proiecte: “Parabon Computation”, respectiv “Tera Grid”.

Grid de date

Grid-urile de date sunt necesare pentru manipularea unor volume mari de date, în contextul în care anumite rezultate experimentale, spre exemplu se doresc a fi împărtășite între utilizatori. Ca exemple în această categorie sunt prezentate “LHC Computing Grid” și “Southern California Earthquake Center”.

Grid colaborativ

Se folosește în sistemele cu un număr mare de desktop-uri, acestea fiind baleiate (eng. scavenging) pentru a determina ciclii CPU neutilizați precum și alte resurse. O implementare a acestui tip de Grid este proiectul ,Condor’ folosit de “NASA” sau “iSGTW” (International Science Grid These Week) care-și propune aducerea tehnologiilor tip Grid la cel mai mic nivel de complexitate posibil.

Grid-ul de utilități (utility Grid)

Tehnologiile Grid permit optimizarea sistemelor rezultând o eficientizare majoră. Combinând o infrastructură într-un Grid, capacitatea computațională în exces poate fi revândută altor utilizatori. Oferirea acestor resurse unei terțe organizații este denumită utility computing. Ca exemple practice sunt “Infosolve Technologies” și “Virtual Compute Corporation”.

Grid de echipament

Este destinat partajării unor resurse fizice, este cazul proiectului “eSTAR” ce folosește o rețea de telescoape roboți ce sunt accesați de către utilizatori Gridului.

Grid de stocare

Acest tip de Grid pune la dispoziția utilizatorilor spații de stocare, există o implementare comercială, proiectul “AmazonS3” ce pune contra cost la dispoziția dezvoltatorilor spații de stocare pe WEB.

Proiecte Grid

Având in vedere clasificarea anterioară, în cele ce urmează se vor prezenta câteva exemple de implementări Grid[6].

Compute Against Cancer[7] se bazează pe Grid-urile construite pe bază de voluntariat, oricine

dispune de un calculator mai vechi după standardele actuale poate descărca software-ul “Frontier

Compute Engine” De remarcat că este disponibil pentru Vista/Xp, Linux precum și Mac OS X, deci

-5-

Grid-ul format este foarte heterogen folosind aproape tot ce există la ora actuală ca și sistem de operare, excepție făcând Unix, dar în principiu pe acea platformă hardware se poate instala una din multitudinea de distribuții Linux. Pe lângă puterea de procesare, acest proiect folosește același sistem pentru obținerea de fonduri, aceleași mașini conectate in Grid rulează aplicații de business pentru organizații comerciale, fondurile obținute fiind folosite de asemenea pentru finanțarea cercetărilor împotriva cancerului. Din motive de securitate, nu se pot vizualiza task-urile în timp ce rulează pe mașinile donatorilor, dar aceștia vor fi informați cu privire la volumul muncii depuse de mașină în scopuri caritabile, respectiv comerciale pentru finanțare. Pentru finanțare se utilizează proiectul Parabon Computation, descris în cele ce urmează.

Parabon Computation[8] este un proiect de business, ce folosește tehnologiile Grid pentru a pune la dispoziția clienților o capacitate remarcabilă de procesare, bazată pe același middleware folosit și de “Compute Against Cancer”, “Frontier Compute Engine”. Deci deja există implementări Grid și pentru a câștiga bani în mod direct, nu doar in scopul cercetării, cercetare finanțată de diverse organizații non-profit sau ă standardele actuale poate descărca software-ul “Frontier

Compute Engine” De remarcat că este disponibil pentru Vista/Xp, Linux precum și Mac OS X, deci

-5-

Grid-ul format este foarte heterogen folosind aproape tot ce există la ora actuală ca și sistem de operare, excepție făcând Unix, dar în principiu pe acea platformă hardware se poate instala una din multitudinea de distribuții Linux. Pe lângă puterea de procesare, acest proiect folosește același sistem pentru obținerea de fonduri, aceleași mașini conectate in Grid rulează aplicații de business pentru organizații comerciale, fondurile obținute fiind folosite de asemenea pentru finanțarea cercetărilor împotriva cancerului. Din motive de securitate, nu se pot vizualiza task-urile în timp ce rulează pe mașinile donatorilor, dar aceștia vor fi informați cu privire la volumul muncii depuse de mașină în scopuri caritabile, respectiv comerciale pentru finanțare. Pentru finanțare se utilizează proiectul Parabon Computation, descris în cele ce urmează.

Parabon Computation[8] este un proiect de business, ce folosește tehnologiile Grid pentru a pune la dispoziția clienților o capacitate remarcabilă de procesare, bazată pe același middleware folosit și de “Compute Against Cancer”, “Frontier Compute Engine”. Deci deja există implementări Grid și pentru a câștiga bani în mod direct, nu doar in scopul cercetării, cercetare finanțată de diverse organizații non-profit sau naționale, europene, etc.

TeraGrid[9] este o infrastructură științifică din SUA coordonată de către “Grid Infrastructure Group” aparținând Universității din Chicago în colaborare cu 11 parteneri punând la dispoziție o putere de calcul mai mare de un petaflop și stocare de ordinul a 30 de petabytes de date online sau arhivate, cercetătorii putând accesa mai mult de 100 de baze de date de interes științific, nodurile fiind conectate la o rețea de mare viteză de ordinul a 10-30 gigabit/sec. Acest Grid este nu numai un Grid computațional, dar și unul de stocare respectiv de date, prin resursele puse la dispoziție este cea mai cuprinzătoare structură cibernetică la ora actuală pentru cercetare științifică deschisă.

Resursele computaționale rulează un set de pachete software denumit “Coordinated TeraGrid Software and Services” (CTSS).C Acesta furnizează un mediu de lucru unificat pe toate sistemele permițând portarea ușoară a codului de pe un sistem pe altul. De asemenea furnizează funcții integrative (single-sign on, remote job submission, workflow support, instrumente pentru transferul de date, etc.) CTSS include Globus Toolkit, Condor, software de verificare și validare, software distribuit de management al conturilor, un set de compilatoare, instrumente de programare și variabile de mediu.

LHC Computing Grid[10] este o rețea de distribuție proiectată de CERN (Organisation Europeenne pour la Recherche Nucleaire) pentru a manipula cantitățile imense de date produse de către Large Hardon Collider (LHC). încorporează atât legături private de fibră optică cât și porțiuni existente ale Intemetului public Fluxurile de date sunt filtrate rezultând un flux de date de aproximativ 300 MB / s, rezultatele calculelor de la ferma de procesare CERN (în jur de 27 TB de date brute și 10 TB de date ce conțin diverse date ca și “event summary”) sunt trimise instituțiilor de cercetare din Europa, Asia și America de Nord folosind această infrastructură. Aceste noduri sunt grupate pe două nivele, cele de nivel 1 sunt conectate folosind lățime de bandă superioară, fiind folosite și ca back-up de către CERN. Configurația primară a mașinilor ce folosesc acest Grid este bazată pe Scientific Linux, ca și middleware fiind utilizat gLite.

Southern California Earthquake Center[11] SCEC folosește Gridul de date pentru a crea medii de lucru colaborative virtuale oferind acces distribuit la cantitățile de date necesare cercetării în domeniul cutremurelor in Sudul Californiei. Ca și middleware este folosit SDSC Storage Resource Broker in cadrul Grid-ului. Storage Resource Broker este mai complex ca și majoritatea software-urilor middleware de Grid, implementând un mediu de distribuție de date larg ce include și diverse aplicații de clienți ai Grid-ului. Suportă managementul sharing-ului de date, replicarea, transferul și menținerea colecțiilor de date, este folosit deseori în conjuncție cu sisteme computaționale tip Grid ca de exemplu Globus, și poate folosi sistemul de autentificare GSI (Globus Alliance Grid Security Infrastructure). SRB poate stoca și transfera date în sisteme de arhivare HPSS sau SAM-FS, folosind sistem de fișiere specifice Unix, Linux sau Windows, biblioteci de benzi de stocare, poate manipula datele ca și colecții de date binare sau date tabulare în sisteme de baze de date relaționale.

Condor[12] este un proiect de Grid colaborativ, pentru managementul workload-ului pe clustere dedicate de calculatoare și direcționarea sarcinilor pe calculatoarele aflate în regim de mers în gol. Condor este o platformă software dezvoltată de Universitatea Wisconsin-Madison, distribuit sub licență Apache 2.0, rulează pe Linux, Unix, Mac OS X, FreeBSD, Windows, poate integra resurse de tip clustere montate în rack și mașini desktop nededicate (cycle scavenging) într-un singur mediu de lucru. Ca și exemplu, NASA Advanced Supercomputing facility folosește 350 de workstation-uri SGi și SUN folosite pentru dezvoltare software, e-mail, editare de documente, fiecare rulează un daemon ce monitorizează parametrii I/O și grad de utilizare CPU, când stația este în idle pentru 2 ore, un task va fi direcționat spre execuție pe această stație de lucru, acesta va rula până la finalizare sau în cazul în care daemon-ul detectează apăsarea unei taste, mișcare de mouse, etc va și redirecționat sau trecut pe o listă de așteptare.

iSGTW (International Science Grid These Week)[13] este un proiect foarte ambițios, țelul este simplificarea managementului nodurilor, reducerea aproape de 0 a instalării și configurării. Dacă aceste ținte sunt atinse, se pot folosi timpii de idle ai computerelor publice din universități, biblioteci și alte

instituții. În funcție de cerințe există un LiveCD și un LiveDVD. Live CD-ul (LiveVN) ca și middleware folosește gLite, OpenVPN și OpenAFS, putându-se crea noduri folosind și un USB stick, este conceput să aibă un footprint minim asigurându-se compatibilitatea cu o plajă largă de mașini inclusiv mașini virtuale. Implementează o combinație de nod de lucru și interfață. Live DVD-ul are un footprint mult mai mare, include un mediu desktop complet precum și software științific, WINE pentru a rula aplicații Windows, instrumente de procesare și randare video, etc.

Grid Computing and Distributed Systems (GRIDS) Laboratory[14] proiectul acestei organizații este Gridbus ce acoperă diverse subproiecte de cercetare având ca obiectiv managementul și programarea resurselor distribuite într-un Grid de nivel global, se încadrează în categoria Gridului de utilități. Proiectul este unic pentru că explorează aplicarea practică a teoriilor economice pentru rezolvarea problemelor de management al resurselor în mediile Grid. Mediul de afaceri utilizează diverse tehnici de data mining pentru a oferi suport factorilor decizionali ce analizează înregistrările tranzacțiilor cu furnizorii respectiv clienții. În acest caz sunt folosite resurse prețioase ca lățime de bandă, capabilități de procesare și stocare. Folosind diverse strategii de prețuri se poate optimiza din punct de vedere al costurilor utilizarea acestor resurse, utilizatorii primind informații prețioase vizând utilizarea acestora în afara orelor de vârf, costuri asociate diverselor resurse computaționale, etc.

Infosolve Technologies[15] oferă clienților soluții integrate ce permit implementări rapide de servicii, pay-per-use fără a necesita o infrastructură IT complexă din partea clientului folosind soluții Grid bazate pe tehnologie Sun.

Virtuale Compute Corporation[16] este un provider global de resurse computaționale, se adresează atât mediului comercial cât și guvernamental oferind utilități bazate pe soluții Grid Sun. Clienții care apelează la soluțiile oferite sunt de exemplu din domeniul jocurilor, bioinformatică. astronomie, modelare climatică, simulări de producție, cercetare medicală, etc. Sun Grid Engine este cel mai răspândit manager de resurse distribuite în mediul comercial, printre facilități exemplificăm următoarele: este compatibil cu sistemele de operare Windows Vista Enterprise și Windows Server 2008 permițând scalarea cu noduri și clustere Windows, multi-clustering cu manager de domeniu, permite sharingul de resurse a două sau mai multe clustere, elasticitate prin adăugarea sau scoaterea mașinilor din Gridul local funcție de necesități, utilizatorii pot rezerva resurse in avans, scalabilitate până la 63000 de core-uri CPU.

eSTAR[17], eScience Telescopes for Astronomical Research este o rețea heterogenă de telescoape roboți pentru observare automată. în partea de utilizator a sistemului este un software denumit, ‘'Inteligent Agent” (IA) ce poate cere informații din nodurile rețelei de telescoape pe care le va procesa pentru a obține datele astronomice dorite. IA comunică cu nodurile in rețea folosind servicii de WEB și Grid, aceste noduri sunt o colecție de subsisteme ce primesc cererile de observații de la IA și printr-o serie de interacțiuni produc datele astronomice cerute. Un astfel de nod este de obicei un telescop, dar poate conține baze de date astronomice, organizații virtuale tip Grid pentru a pune la dispoziție resurse computaționale,deci îl putem încadra atât în categoria Grid-urilor de echipament dar și a Grid-urilor de rețea interacționând cu diverse grile computaționale. eSTART este un proiect de colaborare între Institutul de Cercetare Astrofizică din Liverpool (Astrophysics Research Institute at Liverpool), Universitatea John Moores și Grupul de Cercetare Astrofizică al Facultății de Fizică din Universitatea Exeter (Astrophysics Research Group of the School of Physics at the University of Exeter), colaborează strâns de asemenea cu proiectul RAPTOR din Los Alamos, MONET din Germania, Robonet din Marea Britanie și Centrul Astronomic din Hawai.

AmazonS3[18] este un proiect comercial axat pe stocarea datelor on-line, este un Grid de stocare ce stochează obiecte având o dimensiune de 5 Gb, fiecare însoțit de 2kb de metadate organizate în pachete și identificate de o cheie unică de identificare. Fiind un proiect comercial, detaliile tehnice nu au fost făcute publice de către Amazon. Pachetele de date pot fi create, vizualizate folosind o interfață HTTP sau SOAP, download-ul putându-se face printr-o interfață HITP GET sau protocoale BitTorrent.

Middleware Grid

Un middleware este prin definiție un program destinat conectării unor componente software, platforme sau aplicații incompatibile. Middleware-ul apare ca un nivel intermediar între sistemul de operare și aplicație. Este evidentă necesitatea folosirii unui middleware întru-un sistem Grid, unde nodurile sunt formate din diferite tipuri de calculatoare, care rulează sisteme de operare diferite și pot fi interconectate prin diferite tipuri de rețele și deci este necesară mascarea eterogenității sistemului, pentru a se putea asigura buna funcționare a Grid-ului.

Există numeroase proiecte [6] ce caută să dezvolte software middleware pentru sisteme Grid.

Alchemy

Este un framework software open source care permite agregarea puterii computaționale a calculatoarelor componente într-un supercalculator virtual (desktop Grid).

BioGrid

Proiectul BioGrid dezvoltă tehnologia “data Grid” care permite partajarea și manipularea unor baze de date de mărime considerabilă și tehnologia “computing Grid” destinată facilitării legăturilor între bazele de date și procesării de date la viteze foarte mari.

Condor

Condor este un alt proiect open source care oferă un mediu prielnic high-throughput computing (HTC) în cadrul aceluiași domeniu administrativ. Sistemul prezintă facilitate de cycle-scavenging, urmărind în cadrul său de execuție existența sistemelor disponibile și nefolosite la un moment dat.

DCache

Proiectul oferă un sistem destinat stocării de date aflate pe diverse servere sub formă unei singure structuri virtuale de fișiere. gLite este o parte a proiectului EGEE care oferă un framework pentru a dezvolta aplicații Grid.

Globus

Tehnologiile dezvoltate de Globus sunt printre cele mai utilizate în mediile Grid. Toolkit-ul Globus a fost in permanență îmbunătățit pentru a se adapta cât mai bine cerințelor sistemelor Grid și prezintă diverse subcomponente, cum sunt:

– componente runtime – sunt incluse modulele WS Core (Web Services) care oferă uneltele

necesare pentru construirea serviciilor WS.

-10-

Componente de securitate – oferă servicii de monitorizare, autentificare și autorizare.

Componente de manipulare a datelor (data management) – oferă servicii ca GridFTP (file transfer protocol) pentru transportul datelor, RFT (reliable file transfer) pentru controlul transferurilor multiple, RLS (Replica location service) pentru ținerea evidenței cu privire la localizarea fișierelor duplicate.

Servicii de monitorizare și descoperire a resurselor (Monitoring and discovery services MDS) – oferă un cadru pentru accesarea informațiilor de configurare și status al resurselor Grid.

Componente de Managementul Execuției (Job Management Components) susțin inițierea, monitorizarea, managementul, programarea și coordonarea aplicațiilor la distanță, prin mecanisme ca GRAM (Grid Resource Allocation and Management) sau GridWay, folosit pentru partajarea controlată și eficientă a resurselor.

GridSphere

Framework-ul GridSphere implementat în cadrul proiectului GridLab oferă un portal sofisticat ce poate fi customizat în funcție de necesitățile utilizatorului.

Naregi

Acest proiect, dezvoltat în Japonia, conduce cercetări în domeniul Grid middleware și al tehnologiilor de conectare, cu accent pe aplicațiile din nanoștiință.

OGCE

Open Grid Computing Environments dezvoltă portaluri ce pot fi refolosite, servicii Web, precum și instrumente pentru dezvoltarea unor astfel de servicii.

Relația tehnologiilor Grid cu alte tehnologii

Soluțiile Grid vin în întâmpinarea organizațiilor ce doresc dezvoltarea unei arhitecturi orientate pe servicii care facilitează managementul și integrarea proceselor afacerii.

Pe piață există un număr mare de ofertanți de astfel de soluții, dintre aceștia putând fi amintiți: Oracle, IBM, DataSynapse, GreenTeaSoft, Sun, Hewlett-Packard, United Devices, etc.

De fapt, Grid-ul poate fi văzut ca cea mai recentă și completă evoluție a procesării distribuite[18]. În cele ce urmează se face o comparație între Grid și alte tehnologii implementate cu succes în ultimii 20 de ani.

Dacă considerăm tehnologia WEB, ca și similaritate un Grid ascunde complexitatea sa utilizatorului, interconectează resurse diferite și oferă o percepție unificată asupra mediului, dar spre deosebire de WEB Grid-ul permite mașinilor să lucreze împreună și să colaboreze într-o formă care presupune mai mult decât o simplă comunicare. Tehnologia Grid lucrează într-o strânsă legătură cu tehnologiile WEB, de exemplu Gridurile de stocare oferă spațiu online de stocare, accesibil online printr-o interfață WEB, accesul între nodurile distribuite geografic se face și prin intermediul Intenetului nu doar liniilor dedicate de mare viteză.

Tehnologia Peer-to-peer permite partajarea și comunicarea directă, ca și tehnologia Grid, uneori prin intermediul unui broker central, dar Gridul poate utiliza relații de tipul “one-to-many” pentru o varietate mai mare de resurse nu numai fișiere. S-au realizat cu succes proiecte care îmbina cele două tehnologii, spre exemplu proiectul AmazonS3 – un Grid de stocare integrează tehnologia peer-to-peer pentru downloadul fișierelor.

Clusterele și Gridurile grupează resursele pentru a rezolva o problemă și pot avea un management unitar al instrumentelor pentru toate componentele, dar un cluster este alcătuit din calculatoare de același tip aflate într-o locație centrală și necesitând o imagine unică a sistemului (SSI). Spre deosebire de cluster unde accentul cade pe performanța procesării paralele, într-un Grid aceasta revine partajării resurselor. SSI nu mai este o cerință, calculatoarele din Grid fiind eterogene și distribuite geografic, de asemenea unele noduri ale Gridurilor pot fi alcătuite din clustere (de exemplu proiectul Condor).

În privința virtualizării, Grid-ul permite componentelor să fie percepute ca un fond comun de resurse. Activitatea poate fi desfășurată într-un mod asemănător pe oricare dintre ele; spre deosebire de virtualizare care se referă la un singur sistem, un Grid permite virtualizarea resurselor eterogene de pretutindeni, chiar globale, pentru a forma un fond comun de servicii IT. dar de asemenea nu este nici o problemă ca anumite mașini din cadrul Grid-ului să fie mașini virtuale.

Avantajele folosirii Grid Computing

Exploatarea resurselor neutilizate

O utilizare de bază a Grid computing-ului este rularea unei aplicații pe o mașină diferită. în majoritatea organizațiilor, există resurse de calcul nefolosite, marea majoritate a calculatoarelor desktop fiind folosite la un grad de ocupare al resurselor de procesare mai mic de 5 procente în timpul unei zile de lucru, chiar și server-ele pot fi relativ neîncărcate[4], Grid computing oferă un cadru corespunzător pentru utilizarea acestor resurse nefolosite.

Resursele de procesare nu sunt singurele neutilizate, de multe ori poate exista o cantitate foarte mare de spațiu neutilizat pe hard disk-uri. Un sistem Grid, mai specific un Grid de date, poate fi folosit pentru a combina spațiul neutilizat într-un spațiu de stocare virtual de capacități remarcabile cu posibilitatea obținerii unor performanțe superioare și a unei fiabilități superioare față de folosirea unui singur sistem de calcul.

Dacă un lot de job-uri necesită accesarea unei cantități mari de date, aceste date pot fi în mod automat replicate în diverse puncte strategice ale Gridului, astfel dacă un job trebuie executat pe o mașină aflată la o anumită distanță în Grid, datele sunt deja acolo, pot fi accesate de exemplu direct de pe mașină sau din cadrul unei rețele cu o lățime de bandă foarte mare și nu necesită a fi mutate în acel punct folosind o conexiune relativ lentă. De asemenea aceste copii pot fi folosite ca și back-up când datele primare sunt distruse sau pur și simplu indisponibile. Un alt beneficiu este balansarea utilizării resurselor, o organizație poate avea ocazional vârfuri neprogramate în activitate, ceea ce implică o cerere mai mare de resurse. Dacă aplicația este de tip “Grid-enabled” poate fi mutată sau extinsă pe mașinile cu resurse disponibile din cadrul organizației, unele implementări de Grid-computing putând migra task-uri incomplete între noduri.

Capacitate de procesare paralelă

Potențialul unei capacități masive de procesare paralelă este una din viziunile comune și cea mai atractivă funcționalitate a unui Grid. În completarea necesităților pur științifice, această putere de procesare conduce către o nouă evoluție în mediul industrial: medicină, modelare a proceselor din mediul financiar, exploatarea țițeiului, animație computerizată, etc.

De exemplu o aplicație cu cerințe mari de procesare poate fi împărțită în subaplicații mai mici, fiecare fiind executate în diferite noduri și cu cât scade necesitatea ca aceste job-uri să comunice între ele in timpul execuției, cu atât crește scalabilitatea acesteia; în cazul ideal o asemenea aplicație va rula de 10 ori mai repede pe 10 mașini decât în cazul uneia singure.

Principalele limitări sunt următoarele:

un algoritm de calcul poate fi împărțit într-un număr limitat de subcomponente,

a doua dificultate apare dacă părțile nu sunt complet independente, de exemplu dacă toate subjob-urile trebuie să scrie și să citească într-un fișier sau o bază de date comună, accesul limitat la această resursă va fi factorul limitator al scalabilității acestei aplicații,

latențele apărute la comunicarea între job-uri datorate protocoalelor de sincronizare, lățimea de bandă disponibilă pentru comunicarea către elementele de stocare sau alte mașini din rețea, precum și alte întârzieri inerente funcționării într-un mediu real.

Sunt mulți factori care trebuie luați în vedere pentru a considera o aplicație Grid-enabled, nu toate aplicațiile pot fi transformate pentru rulare în paralel în cadrul unei rețele de noduri și să prezinte un grad suficient de scalabilitate pentru a fi aplicate in practică. De asemenea nu există instrumente practice pentru a transforma o aplicație oarecare oferindu-i posibilitatea de a folosi capacitățile de procesare paralelă oferite de o infrastructură de tip Grid, deși există instrumente pentru designeri ce pot fi folosite pentru a scrie aplicații care din start pot folosi aceste posibilități.

Resurse și organizații virtuale disponibile în vederea colaborării

O altă capabilitate oferită de Grid computing este asigurarea unui mediu de lucru propice colaborării unei largi audiențe, oferind standarde ce permit ca sisteme diferite să funcționeze împreună. Utilizatorii unui Grid pot fi organizați dinamic într-un număr de organizații virtuale, fiecare cu politici de cerințe diferite, dar aceste organizații pot împărți resursele colective, componente ale acestui Grid. Sharing-ul resurselor începe cu date sub forma fișierelor sau bazelor de date, un Grid de date permițând expandarea capacităților de stocare în mai multe feluri. În primul rând o bază de date poate cuprinde mai multe sisteme de calcul și astfel performanțele pot fi superioare unei baze de date stocate pe un singur sistem putem obține un transfer de date superior folosind tehnici de divizare, de asemenea datele pot fi duplicate în cadrul Grid-ului pentru a servi ca și copii de siguranță sau pot fi stocate în apropierea sistemelor care probabil vor accesa cel mai mult aceste date în conjuncție cu tehnici avansate de programare a priorităților.

Colaborarea nu este limitată la fișiere și baze de date, poate include și alte resurse hardware. Menționăm aici dispozitive specializate precum și software: servicii, licențe, etc.

Aceste resurse sunt virtualizate pentru o interoperabilitate uniformă între diverși participanți.

Utilizatorii unui Grid pot fi membrii unor organizații reale, dar și virtuale, Grid computing permițând întărirea regulilor de securitate și implementarea diverselor politici ceea ce duce la rezolvarea priorităților atât pentru utilizatori cât și pentru resurse.

Accesarea unor resurse adiționale

După cum s-a menționat, pe lângă capacități de procesare și de stocare, pot fi puse la dispoziția utilizatorilor resurse adiționale. Dacă de exemplu un utilizator dorește mărirea lățimii de bandă de Internet pentru a implementa un motor de căutare, munca poate fi împărțită între noduri care au conexiuni independente de Internet, în acest fel capacitatea totală de căutare fiind îmbunătățită, fiecare mașină utilizând conexiuni separate, dacă aceste mașini foloseau în comun o singură conexiune, nu aveam nici o creștere efectivă a lățimii de bandă și implicit a capacității de căutare.

Unele mașini pot folosi licențe software foarte scumpe, sarcinile anumitor utilizatori pot fi direcționate spre execuție pe aceste mașini oferind o eficientizare a costurilor din acest punct de vedere.

Calculatoarele pot avea atașate microscoape electronice ce pot fi operate de la distanță, în acest caz un rol deosebit de important avându-l planificarea și rezervarea dispozitivului.

Balansarea resurselor

Un Grid asociază un număr mare de resurse puse la dispoziție de mașini individuale într-o imagine a unui sistem mare. Pentru aplicațiile care au fost concepute pentru a rula în acest mediu se poate asigura balansarea resurselor prin planificarea și direcționarea job-urilor către mașinile cu un grad mai redus de încărcare. Această proprietate poate fi neprețuită pentru manipularea vârfurilor ocazionale în activitatea unei organizații de dimensiuni mari.

De exemplu un vârf neașteptat poate fi redirecționat către mașinile mai puțin încărcate, dacă Grid-ul este deja utilizat la capacitate maximă, procesele cu prioritate scăzută pot fi suspendate temporar sau chiar anulate și executate ulterior pentru a face loc priorităților.

Fără o infrastructură ca cea oferită de Grid computing, prioritizarea și execuția balansării sunt dificil de executat.

Fiabilitatea

Sistemele de calcul convenționale din gama de vârf folosesc componente hardware având prețuri exorbitante, folosesc circuite redundante pentru alimentare, conexiune, răcire cu posibilități de hot pluggability pentru cazul în care dacă o componentă cedează sa poată fi înlocuită fără oprirea acelei mașini pentru creșterea fiabilității sistemelor.

În cadrul unei infrastructuri tip Grid computing, sistemele pot fi relativ ieftine și dispersate geografic, dacă apare o pană în sistemele de alimentare sau de comunicații ale unei regiuni, celelalte părți rămân neafectate, software-ul de management al unui sistem Grid poate automat retrimite sarcinile către alte mașini din cadrul sistemului, cum este exemplificat în figura următoare. Copii multiple ale aceluiași job pot fi rulate simultan și verificate pentru orice tip de inconsistență: defecte hardware, date corupte sau manipulare frauduloasă a informației.

Fîg 1.2 Configurație Grid redundantă

Acest sistem Grid va utiliza conceptul de autonomie computing, este un software care rezolvă în mod automat problemele apărute, probabil înainte ca operatorul să fie conștient de acestea.

În principiu toate atributele de fiabilitate obținute prin folosirea unor componente hardware la prețuri exorbitante în sistemele actuale de vârf pot fi asigurate folosind resursele software în cadrul infrastructurilor tip Grid în viitor.

Managementul centralizat al resurselor IT

Virtualizarea resurselor disponibile în cadrul unei infrastructuri Grid și manipularea uniformă a sistemelor diferite vor crea oportunități pentru managementul unei infrastructuri IT mai mari și cu o răspândire geografică crescută.

O asemenea infrastructură permite managementul priorităților între procese diferite.

Conform figurii următoare, un administrator poate implementa sau schimba un număr de politici ce vor afecta modul în care diferite organizații/departamente vor împărți sau concura resursele disponibile.

Fig. 1.3 Administrarea politicilor pentru eficientizarea resurselor

O viziune de ansamblu poate eficientiza upgrade-ul infrastructurii, de asemenea în cazul operațiilor de întreținere a mașinilor procesele aferente anumitor proiecte afectate pot fi redirecționate pe alte mașini fără a afecta buna desfășurare a fluxului de lucru.

Arhitectura Grid

Din punct de vedere structural, se prezintă un model architectural al unei structuri de tip Grid, împărțit în patru nivele funcționale, după cum se poate vedea in figura următoare.

Fig 1.4 Nivele funcționale in arhitectura Grid Nivelul fizic (fabric layer)

Este nivelul de bază, utilizat pentru a asigura o interfață comună tuturor resurselor posibile din cadrul Gridului. Accesul la nivelurile superioare se face prin intermediul proceselor standardizate și pot fi integrate orice fel de resurse, atâta timp cât acestea din urmă pot fi standardizate. Acest nivel conține toate componentele fizice incluse într-o rețea Grid (calculatoare, spații de stocare a datelor, rețele etc). La nivelul protocoalelor de comunicare și resurse se disting două niveluri, cel de conectivitate și nivelul resursă.

Nivelul de conectivitate (Connectivity layer)

Definește protocoalele de baza necesare autentificării și comunicării în Grid. Protocoalele de comunicație asigură posibilitatea schimbului de informație la nivelul resurselor localizate în primul strat, la nivelul fizic și pot fi folosite în acest sens protocoale de tip TCP/IP, IP, TCP, UDP, DNS. etc. Protocoalele de autentificare stabilesc o comunicare confidențială pe baza stabilirii identității la nivel de utilizator, de sistem, la nivel de resursă sau la nivel de organizație virtuală (VO).

Nivelul resursă (resource layer)

Definește protocoalele ce se referă la operații pentru resursele individuale. Se realizează o serie de sarcini: negocierea resurselor, inițierea, monitorizarea, controlul, contorizarea utilizării și calculul costurilor operațiilor de partajare a resurselor. Implementarea acestui nivel este realizată în marea majoritate a mediilor Grid cu ajutorul arhitecturii OGSA (Open Grid Service Architecture).

Nivelul colectiv (Collective Layer)

Coordonează operațiile la nivelul colecțiilor de resurse, bazându-se pe protocoalele definite la nivelul inferior. Protocoalele definite la acest nivel sunt foarte variate, de la protocoale cu rol general, până la protocoale specifice, orientate pe anumite domenii și aplicații.

Nivelul utilizator (user layer)

Conține aplicațiile utilizatorilor. Acestea se bazează pe funcționalitatea oferită de nivelele inferioare ale arhitecturii.

Arhitecturile Grid sunt privite ca o colecție de servicii, implementate în baza unui model architectural care definește noțiunea de serviciu Grid plecând de la serviciile Web. Arhitectura Grid este deci o variantă de arhitectură orientată pe servicii (SOA-Service Oriented Architecture). A fost conceput un model architectural pentru Grid, numit Open Grid Service Architecture (OGSA) și au fost definite standardele pentru serviciile Grid în OGSI (Open Grid Service Infrastructure).

Arhitectură orientată spre servicii (SOA)

Arhitectura orientată spre servicii este un model arhitectural pentru construirea aplicațiilor care abordează un sistem software ca o colecție de servicii, în care aplicațiile sunt definite independent de platforma pe care rulează și de limbajul de programare care a fost folosit pentru implementare. În această viziune, un serviciu este văzut ca o implementare abstractă, logică a unei aplicații, definit în termenii a ceea ce face aplicația. Arhitectura este orientată pe mesaje independente de platformă și un serviciu apare definit în baza schimbului de mesaje între furnizor și client a căror structură internă nu prezintă interes.

O implementare a SOA o reprezintă serviciile Web, descrise in ceea ce urmează.

Serviciile Web

Un serviciu Web este un sistem software al cărui rol este de a permite aplicațiilor să comunice în rețea într-o manieră independentă de platformă și de limbajul de programare utilizat.

Interfața unui serviciu Web este descrisă într-un limbaj WSDL (Web Service Description Language) care este baza oricărui serviciu Web. Fișierul WSDL folosit pentru descrierea serviciului definește formatul mesajelor, protocoalele de transport, tipurile de date utilizate, și orice alte informații necesare interacțiunii cu serviciul.

Arhitectura serviciilor Web cuprinde trei roluri:

Furnizorul de servicii (Service provider) – acesta este responsabil pentru construirea serviciului Web și crearea descrierii serviciului. Furnizorul publică descrierea serviciului într-unul sau mai multe directoare de servicii și primește mesaje de invocare a serviciului de la solicitanții de servicii.

Consumatorul de servicii (Service Consumer) – (sau solicitantul de servicii-service requester, cum mai este numit) caută în directorul de servicii descrierea serviciului și o folosește pentru a lega și invoca serviciile găzduite de furnizor.

Directorul de servicii (Service Directory) – este un agent intermediar intre furnizor și consumator, permițând primului să publice descrierea serviciului, iar celui de-al doilea să caute în colecția de descrieri de servicii. Se observă din cele prezentate mai sus rezultă că sunt trei operații importante ce fac obiectul unui astfel de model architectural;

Publicare (Publish) – este operația prin care descrierea WSDL a serviciului este înregistrată în directorul de servicii.

Regăsire (Find) – este un contract între solicitant și directorul de servicii, prin care primul obține o listă a furnizorilor de servicii care îi satisfac cererile.

Legare (Bind) – operația permite solicitantului să se conecteze la furnizor înainte de invocarea operațiilor și să genereze un proxy la partea client pentru serviciul oferit de furnizor.

În figura următoare se prezintă modul de folosire al WSDL pentru a oferi un serviciu Web către un consumator. Se regăsesc toate instanțele descrise mai sus.

Furnizorul de servicii Web (stânga) descrie serviciul prin intermediul WSDL, apoi publică definiția într-un director de servicii. Consumatorul (dreapta) interoghează directorul de servicii pentru a se informa cu privire la modul în care poate comunica cu serviciul definit și primește părți ale WSDL care specifică modul de formulare al cererilor și răspunsurilor către furnizorul de servicii. Folosind acest WSDL, consumatorul emite o cerere către furnizor și acesta la rândul lui răspunde cererii formulate.

Fig 1.5 Modul de implementare a serviciilor Web

Mesajele între cele trei entități sunt trimise folosind SOAP (inițial un acronim pentru Simple Object Access Protocol), un protocol de comunicare bazat pe XML care folosește HTTP sau alte tipuri de conexiuni existente.

XML (extensible Markup Language) este un metalimbaj independent de mașină care este utilizat pentru descrierea datelor. Limbajul WSDL folosit pentru descrierea serviciilor se bazează pe XML.

Mecanismul de stocare și căutare a definițiilor serviciilor Web marcate în documentele WSDL este definit prin protocolul UDDI (Universal Description, Discovery and Integration).

Modul prin care un client poate invoca serviciul Web este prin delegarea acestui proces către un stub, un software special folosit pentru a realiza această operație. Există unelte care generează aceste stub-uri automat, în baza descrierii WSDL a serviciului.

Arhitectura deschisă a serviciilor Grid (Open Grid Service Architecture)

Sistemele Grid tind să integreze și să manipuleze resurse răspândite într-un mediu distribuit, eterogen și dinamic, fapt care duce la necesitatea abordării unor standarde pentru a face posibilă comunicarea eficientă în cadrul Grid-urilor și partajarea resurselor fără constrângeri legate de implementarea la nivel hardware sau software a părților componente. Aceste standarde trebuie să acopere probleme legate de autentificarea în cadrul Gridului, de maniera de descoperire a serviciilor, de monitorizarea acestora, de stabilire a unor protocoale de comunicare, etc.

Standardul impus (OGSA Open Grid Service Architecture) se bazează pe serviciile Web și trebuie să fie capabil să răspundă unor cerințe legate de virtualizarea resurselor în vederea unei administrări mai ușoare a sistemului Grid, descoperirea resurselor în cadrul mediului eterogen, de implementare a unor protocoale standardizate, de securitate etc.

Arhitectura OGSA[2C] poate fi văzută ca fiind formata din 4 nivele (layers), cum se poate vedea in figura următoare.

Nivelul de bază al resurselor (Base resource layer)

Este format din resursele fizice (procesoare, rețea, server-e, sisteme de stocare, etc) și logice (procese ale sistemelor de operare, licențe, etc) care sunt abstractizate prin intermediul unui middleware.

Nivelul serviciilor Web (Web Service Layer)

La acest nivel sunt definite serviciile Grid în baza serviciilor Web și a standardelor impuse de OGSA prin definirea unor interfețe cu ajutorul OGSI (Open Grid Service Infrastructure).

Nivelul serviciilor Grid (OGSA architected Grid service layer)

Acest strat oferă serviciile Grid.

Nivelul aplicațiilor Grid (Grid applications layer)

La acest nivel se regăsesc aplicațiile din cadrul sistemelor Grid.

Arhitectura OGSA pune accent pe noțiunea de serviciu, având ca punct de plecare serviciile Web și construind în baza acestora un model al serviciilor Grid. Totul într-un mediu Grid este reprezentat ca serviciu: resursele computaționale, de stocare, rețelele, programele, bazele de date, ș.a m.d.

O cerință critică a unui sistem Grid este aceea de a asigura interoperabilitatea între părțile componente și acest lucru duce la necesitatea adoptării de protocoale standard pentru a defini interfața serviciilor și pentru a putea invoca o astfel de interfață.

Serviciile Grid se diferențiază de serviciile Web în primul rând prin faptul că, datorită proprietăților dinamice ale unui mediu Grid, serviciile sale trebuie să fie la rândul lor entități dinamice, create dinamic care pot evolua pe parcursul ciclului lor de viață și care sunt distruse atunci când nu mai sunt necesare. Specificarea unui serviciu Grid se face prin intermediul unei referințe la acesta încapsulată in GSR (Grid Service Reference) care permite separarea între denumirea și implementarea serviciului și face ușoară modificarea serviciului pe parcursul ciclului sau de viață.

Specificațiile OGSI definesc următoarele interfețe ce trebuie implementate de către un serviciu Grid:

Tabelul 1.1 Interfețele prezente in serviciile Grid

Din interfețele prezentate in tabel, doar prima este obligatorie. Celălalte interfețe depind de

natura serviciului și se pot combina în funcție de necesități.

-25-

Serviciile Grid sunt caracterizate în funcție de capabilitățile pe care le oferă; ele implementează una sau mai multe din interfețele descrise mai sus. Interfețele serviciilor Grid au ca și corespondent în WSDL port type-urile.

Infrastructura deschisă a serviciilor Grid (OGSI)

OGSI (Open Grid Service Infrastructure) tratează liniile directoare în ceea ce privește creearea adresarea, managementul și inspecția serviciilor Web cu stare (servicii Grid).

Specificările OGSI definesc un serviciu Grid în baza unui serviciu Web care se conformează unui set de interfețe și modele comportamentale menite să definească modul în care un client interacționeaza cu serviciul.

OGSI definește:

Un set de extensii WSDL pentru definirea serviciilor.

Operații și constructori WSDL standard pentru reprezentarea, interogarea și update-ul datelor asociate cu un serviciu.

Metodele GSH și GSR.

Definiția unui model pentru notificarea defectelor.

Operații pentru crearea și distrugerea serviciilor Grid.

Mecanisme de implementare a notificărilor.

Capitolul II Securitatea

Noțiuni generale de securitate

Definiții și caracteristici ale securității computaționale

Securitatea unei entități (ființă, sistem, organizație) este definită de regulă ca ansamblul de măsuri și mijloace pentru asigurarea tuturor condițiilor astfel ca entitatea să poată să își atingă obiectivele pentru care a fost creată[22].

În ceea ce privește securitatea în sistemele de calcul, o definiție exactă este foarte greu de formulat. Se poate accepta următoarea definiție a securității unui sistem informatic:

Securitatea reprezintă prevenirea și protejarea accesului, distrugerii sau alterării intenționate a informațiilor unui sistem de către entități neautorizate (persoane, programe, etc.).

Securitatea asigură deci confidențialitatea și integritatea informației într-un sistem computațional. Prin informație în definiția de mai sus se înțelege orice aspect legat de un sistem computațional: programe, date, sisteme de operare, sisteme fizice componente, etc.

Se introduc următorii termeni pentru a defini mai detaliat securitatea și proprietățile ei:

destinatar – reprezentat de entitatea care solicită informația; poate fi o persoană, o aplicație, un sistem, etc

expeditor – cel care trimite informația destinatarului

mesaj – orice tip de informație transmisă între expeditor și destinatar.

Securitatea trebuie să asigure 3 mari funcționalități:

Confidențialitate – proprietate prin care se asigură faptul că informația nu poate fi accesată de persoane neautorizate. Doar expeditorul și destinatarul cunosc conținutul informației. Confidențialitatea mesajului se asigură de regulă prin algoritmi de criptare/decriptare.

Integritate – imposibilitatea de a altera informația. Destinatarul trebuie să aibă certitudinea că mesajul recepționat de el este cel real și nu a fost alterat.

Autentificare – această proprietate asigură veridicitatea identității expeditorului și a destinatarului.

Aceste trei concepte sunt cunoscute în literatura de specialitate ca triada (CIA – Confidentiality, Integrity, Authentication). Adițional acestor trei caracteristici, securitatea într-un sistem de calcul trebuie să cuprindă și proprietăți ca:

Controlul accesului (access control) – utilizatorilor nu li se permite accesul la resurse și servicii pe care nu au dreptul să le acceseze și nici nu li se interzice accesul la acele resurse pentru care au drept de accesare.

Nonrepudierea (nonrepudiation) – odată ce un expeditor a emis un mesaj, acesta nu mai poate afirma că mesajul nu îi aparține.

Disponibilitatea (availability) – este o caracteristică ce asigură buna funcționare a unui sistem la un moment dat. Pierderea disponibilității duce la negarea serviciilor (denial-of-service).

Confidențialitatea informației (privacy) -o persoană are dreptul de a controla ce fel de informații personale sunt colectate în ceea ce o privește, cine deține și folosește aceste informații și în ce scop.

Scheme de criptare

Criptarea este procesul de ascundere a informației pentru a o face ilizibilă fără cunoștințe speciale, astfel încât ea să poată fi citită doar de către cei care cunosc codul de criptare, respectiv decriptare.

Criptarea se face în baza unui algoritm care execută de obicei o funcție matematică asupra mesajului cu ajutorul unei chei. Cheia reprezintă un set de caractere cunoscut doar de către expeditorul și destinatarul mesajului. Dacă se cunoaște cheia mesajului, este foarte ușor să se decripteze mesajul folosind operația inversă celei folosite pentru a cripta mesajul.

Procesul de criptare poate face uz de două tipuri de chei: simetrice și asimetrice[23]. În cazul criptării cu chei simetrice, există o singură cheie, folosită atât pentru criptarea, cât și pentru decriptarea mesajului Avantajele criptării cu chei simetrice sunt rapiditatea și simplitatea implementării, dar ea nu poate garanta integritatea mesajelor și autentificarea. Expeditorul și destinatarul trebuie să se pună de

acord în privința cheii folosite și acest lucru trebuie realizat folosind un mod de comunicare sigur, ceea ce reprezintă o problemă.

Fig 2.1 Criptarea cu chei simetrice

O a două metodă de criptare folosește chei asimetrice. Aceasta înseamnă că se folosește o pereche de chei în criptare. Cel mai folosit algoritm de criptare asimetric este criptografia cu chei publice, în care sunt folosite două chei: o cheie publică (care este cunoscută de oricine) și una privată (cunoscută doar de cellcare a generat-o). Cele două chei sunt generate cu ajutorul unei funcții matematice și atunci când una dintre ele este folosită pentru criptare este necesară folosirea celeilalte pentru decriptare.

În criptografia cu chei publice, expeditorul codifică mesajul folosind cheia publică a destinatarului. Mesajul este trimis acestuia din urmă, care îl poate decripta, deoarece deține cheia privată. Deoarece cheia privată este deținută de destinatar, nimeni altcineva nu poate decodifica mesajul.

Studiul experimental al unor elemente de securitate în contextul

sistemelor GRID

i *n)psir rr^

6

Fig 2.2 Criptarea cu chei asimetrice

Avantajele folosirii acestei metode de criptare sunt evidente: nu este necesar să fie cunoscute ambele chei și atâta timp cât cheia privată nu este comunicată nimănui, nu există modalități de decriptare a mesajului de către alte persoane decât cea care deține cheia privată. Cunoscând cheia privată este destul de ușor să se obțină cheia publică corespondența, dar obținerea cheii private din cea publică este un proces aproape imposibil de realizat.

Integritatea mesajelor este garantată prin folosirea semnăturilor digitale – un set de date asociat mesajului care poate fi utilizat pentru a verifica dacă mesajul e veridic. O semnătură digitală reprezintă un "rezumat" (message digest) al mesajului criptat cu ajutorul cheii private a expeditorului. Rezumatul generat din mesajul original este unic: chiar și cea mai mică modificare a mesajului original duce la obținerea unui alt rezumat. Mesajul cu semnătura digitală atașată este trimis și destinatarul decriptează semnătura digitală cu ajutorul cheii publice a expeditorului. Folosind același algoritm, generează la rândul său un rezumat al mesajului, pe care îl compară cu cel obținut din semnătura digitală. Dacă cele două nu sunt identice, înseamnă că mesajul original a fost alterat.

Metode de autentificare

Autentificarea la nivel de sistem sau la nivel de utilizator poate fi implementată cu unul din următoarele mecanisme:

Autentificarea prin împărtășirea unui secret comun (Shared Secret Based Authentification)

Cea mai răspândită astfel de metodă de autentificare este cea de tipul user-parolă. Sistemul responsabil cu autentificarea cunoaște parola utilizatorului și îi permite accesul doar în baza acestei parole. Această metodă este foarte ușor de implementat, dar nu este recomandată la nivelul sistemelor cu cerințe ridicate de securitate la nivel de autentificare.

Autentificarea bazată pe chei publice

Presupune existența unei chei comune sistemului responsabil cu autentificarea și utilizatorului. Testarea identității utilizatorului se face cerându-i acestuia să cripteze o anumită informație și realizând decriptarea cu cheia comună, pentru a se confirma că utilizatorul deține cheia corectă.

Autentificarea tri-partită

Apelează la o a treia autoritate în vederea realizării autentificării prin certificate digitale, adică documente digitale care confirmă că un anumit utilizator deține o anumită cheie publică. Autoritatea de certificare (CA) folosește o semnătură digitală generată cu cheia privată a acesteia. Certificatele sunt codate folosind formatul X.509, un format standard de date pentru certificate stabilit de Internet Engineering Task Force (IETF), și dețin informații despre utilizatorul căruia i s-a eliberat certificatul, cheia publică a utilizatorului, numele autorității de certificare și semnătura digitală a CA. Certificatele reprezintă un concept central al autentificării în cazul sistemelor Grid.

Capitolul III Descrierea aplicației

Funcțiile aplicației

Se va urmări construirea unui serviciu Grid securizat (serviciu Web cu stare) în WSRF implementat de GT4, prin exemplificarea unui serviciu matematic simplu referit drept MathService, care va permite efectuarea a două operații matematice simple: adunare și scădere.

Modul de construire și lansare a serviciilor Web WSRF urmărește un set de cinci pași distincți, după cum urmează:

Se definește interfața serviciului

Se implementează serviciul folosind un anumit limbaj de programare.

Se definesc parametrii de lansare

Se compilează fișierele definite in pașii precedenți pentru a obține un fișier GAR

Se lansează serviciul.

Serviciul poate fi construit simplu, ca un serviciu normal, adăugarea securității fiind o operație care nu afectează interfața serviciului.

Pregătirea sistemului

Pentru a putea exemplifica modul de construire a serviciilor Grid, s-a recurs la instalarea versiunii Globus Toolkit 4.0.8 pe o mașină virtuală SunBox având instalat un sistem de operare Linux Debian. Datorită naturii aplicației nu este necesară instalarea tuturor componentelor GT, ci doar a modulului Java WS-Core.

Se vor prezenta pe scurt în cele ce urmează pașii parcurși pentru instalarea în sistem a Toolkit- ului Globus. Datorită complexității acestuia, procesul de instalare este un proces anevoios și care necesită o pregătire prealabilă a sistemului pentru a se conforma cu cerințele de compilare și rulare a kit-ului de instalare GT. Sunt necesare o suită de programe adiționale pentru a completa cu succes procesul de instalare și pentru a garanta buna funcționare a sistemului după acest proces.

Programele de care depinde GT sunt următoarele:

J2SE SDK, cel puțin versiunea 1.4.2 (pentru instalare este necesar doar JDK) – s-a optat pentru instalarea versiunii 1.5 în directorul /usr/java

Apache Ant, cel puțin versiunea 1.6 – s-a folosit distribuția binară 1.6.5 a utilitarului Ant (apache+ant+ 1.6.5+bin.tar.gz) în directorul /usr/local/apache-ant-1.6.5

zlib 1.1.4+ – dezarhivator – este gata instalat în sistem la instalarea Linux

gcc 3.2.1+ si g++ 3.2.1+ compilatoare c si C++, necesare pentru instalarea GT – sunt de asemenea gata instalate in sistem

Programele GNU: tar, sed, make – sunt deja instalate, se face doar o verificare a versiunii

Peri versiunea 5.8 este gata instalată în sistem. Se instalează adițional librăria ce conține parser-ul XML pentru perl (libxml-parser-perl)

Sudo

PostgreSQL

Pentru a face vizibilă în sistem la nivelul tuturor utilizatorilor instalarea Java și Ant, se adaugă variabilele de sistem JAVA HOME și ANT HOME în fișierul /etc/bash.bashrc

export ANT_HOME=/usr/local/apache-ant-l.6.5

export JAVA_HOME=/usr/java

export PATH=$ANT_HOME/bin: $JAVA_HOME/bin: $PATH

După ce se verifică existența tuturor programelor de mai sus se poate trece la instalarea efectivă a toolkit-ului. în primul rând se creează un nou utilizator în sistem cu numele globus care va conține instalarea GT în directorul /usr/local/globus/ .

debian:/home/debian# adduser globus

Adding user 'globusl…

Adding new group 'globus' (1001).

Adding new user 'globusl (1001) with group 'globus'.

Creating home directory '/home/globus'.

Copying files from '/etc/skel'

Enter new UNIX password:

Retype new UNIX password: passwd: password updated succesfully Changing the user information for globus Enter the new value, or press ENTER for the default

Full Name []: Globus

Room Number []:

Work Phone [] :

Home Phone []:

Other []:

Is the information correct? [y/n] y

debian:/home/debian# mkdir /usr/local/globus/

debian:/home/debian#chown globus: globus/usr/local/globus/

Ca user globus se trece la dezarhivarea și instalarea pachetului sursă a GT:

debian# su globus

globus@debian:tar xzf gt4.2.1-all-source-installer.tar.gz

Pentru funcționarea corectă a containerului GT4 este necesară o variabilă de mediu GLOBUSL_OCATION care să conțină calea către directorul în care se efectuează instalarea. Aceasta se adaugă fișierului /etc/bash.bashrc.

Mai târziu la acest fișier se va adăuga ca sursă și scriptul:

globus-user-env.sh source $GLOBUS_LOCATION/etc/globus-user-env.sh

Se poate realiza acum crearea fișierului make necesar pentru instalarea GT

globus@debian:~$ cd gt4.2.1-all-source-installer globus0debian:~/gt4.2.l-all-source-installer$ ./configure -p refix=/usr/local/globus/

checking build system type… i68 6-pc-linux-gnu

checking for javac… /usr/java/jdkl.5.0_19/bin/javac checking for ant… /usr/local/apache-ant-1.6.5/bin/ant configure: creating ,/config .status

config.status: creating Makefile

globus@debian:~/gt4.2.l-all-source-installer$ make | tee installer.log

In final se rulează make install pentru a termina instalarea:

globus@debian:~/gt4.2.l-all-source-installer$ make install

Efectuarea configurărilor de securitate pentru GT4

Autorizarea în Grid se realizează pe baza certificatelor digitale de tip X.509. Globus Toolkit 4 furnizează două utilități pentru gestionarea acestor certificate. Prima se numește simpleCA și are rolul de generare și semnare de certificate, iar cealaltă utilitate, MyProxy se folosește la păstrarea și gestionarea certificatelor digitale.

Utilitarul simpleCA poate fi folosit pentru generarea propriilor certificate digitale și semnarea acestora, adică pentru realizarea unei organizații virtuale proprii sau pentru aderarea la una deja existentă.

Pentru crearea unei noi autorități de certificare pe o mașina se folosește comanda setup-simple- ca. Aceasta colectează informațiile necesare pentru a forma o autoritate de certificare și creează un pachet care poate fi transmis pe orice mașină care se dorește să aibă încredere în această nouă autoritate. Certificatele nesemnate (cereri) trebuie să fie semnate pe mașina-autoritate de certificare (adică pe mașina pe care inițial s-a rulat setup-simple-ca). Pentru semnare se utilizează: Grid-ca-sign. În urma semnării rezultă un certificat valid, semnat de autoritatea de certificare, ce trebuie transmis celui care a emis cererea. În final se obține un credențial compus din cuplul certificat semnat X509 – cheie secretă care constituie baza accesului la Grid respectivului participant.

globus@debian:~$GLOBUS_LOCATION/setup/globus/setup-simple-ca WARNING: GPT_LOCATION not set, assuming:

GPT_LOCATION =/usr/local/globus

Certificate Authority Setup

This script will setup using a Certificate Authority for signing Globus users certificates. It will also generate a simple CA package that can be distributed to the users of the CA.

The CA information about the certificates it distributes will be kept in: /home/globus/.globus/simpleCA/

The unique subject name for this CA is:

cn=Globus Simple CA, ou=simpleCA-localhost, ou=GlobusTest, o=Grid Do you want to keep this as the CA subject (y/n) [y]:y

Enter the email of the CA (this is the email where certificate requests will be sent to be signed by the CA) :debian01ocalhost

The CA certificate has an expiration date. Keep in mind that once the CA certificate has expired, all the certificates signed by that CA become invalid. A CA should regenerate the CA certificate and start re-issuing ca-setup packages before the actual CA certificate expires. This can be done by re-running this setup script. Enter the number of DAYS

the CA certificate should last before it expires. [default: 5 years (1825 days)]:

Enter PEM pass phrase: Verifying – Enter PEM pass phrase:

creating CA config package … done.

A self-signed certificate has been generated.

Parola cerută pe parcursul execuției este parola care va fi folosită la semnarea cererilor de certificate. Aceasta parolă este cea mai importantă în ceea ce privește Grid-ul, deoarece ea asigură accesul în Grid prin semnarea cererilor de certificare. în urma execuției acestui script a fost creată o noua autoritate de certificare ale cărei certificate se găsesc în directorul

home/globus/.globus/simpleCA.

Acceptarea noii autorități pe mașina curentă – pentru ca mașina să aibă incredere în autoritatea nou creată trebuie rulat scriptul setup-gsi

globus@debian: su root Password: debian:/home/globustt

/usr/local/globus/setup/globus_simple_ca_eefaO689_setup/setup-gsi -default

setup-gsi: Configuring GSI security Making /etc/Grid-security … mkdir /etc/Grid- security

Making trusted certs directory: /etc/Grid-security/certificates/ mkdir /etc/Grid-

security/certificates/

Installing /etc/Grid-security/certificates//Grid security.conf.eefa0689 .. . Running Grid-security-config…

Installing Globus CA certificate into trusted CA certificate directory…

Installing Globus CA signing policy into trusted CA certificate directory… setup- gsi: Complete

Generarea și semnarea certificatelor pentru host și container – pentru a se putea rula containere pe mașina locală (mașina care deține autoritatea de certificare) este necesară obținerea certificatelor pentru host și container. Aceasta se realizează prin emiterea unei cereri (se realizează ca root) și generarea, în baza acesteia, de către autoritate a certificatului host. Cererea trebuie semnată rulând scriptul Grid-ca-sign căruia îi revine ca parametru de intrare cererea de certificat aflată în directorul /etc/Grid-security/hostcert_request.pem respectiv ca parametru de ieșire certificatul semnat.

debian:/home/globus# Grid-cert-request -host debian.rdsnet.ro Generating a 1024 bit RSA private key

…++++++

…++++++

writing new private key to '/etc/Grid-security/hostkey.pem

debian:/home/globus# su globus

globus@debian:Grid-ca-sign -in /etc/Grid security/hostcert_request.pem -out hostsigned.pem

To sign the request

please enter the password for the CA key:

The new signed certificate is at: /home/globus/.globus/simpleCA/ /newcerts/01.pem globus@debian:su root Password:

debian:/home/globus# cp -globus/hostsigned.pem /etc/Grid-security/hostcert hostcert.pem hostcert_request.pem

debian:/home/globus# cp -globus/hostsigned.pem /etc/Gridsecurity/hostcert.pem debian:/home/globus# cd /etc/Grid-security/

debian:/ecc/Grid-security# cp hostcert.pem containercert.pem debian:/etc/Grid- security# cp hostkey.pem containerkey.pem debian:/etc/Grid-security# chown globus:globus container*.pem

Deoarece autoritatea de certificare este chiar mașina pentru care am făcut cererea de certificat, pur și simplu se poate copia certificatul semnat așa cum s-a văzut mai sus. Bineînțeles, în cazuri reale, mașina care deține autoritatea de certificare este diferită de mașinile pentru care se fac cereri în vederea eliberării de certificate. În cazul în care este făcută o cerere de certificat host pentru altă mașină, certificatul semnat de către CA este trimis acesteia.

Pentru certificatele de container se realizează duplicarea certificatului și cheii host-ului. Certificatele pentru host aparțin user-ului root, iar cele pentru container aparțin user-ului globus.

Crearea certificatelor pentru utilizatorii obișnuiți – pentru a fi admis în Grid un utilizator trebuie să aibă un certificat digital semnat de autoritatea de certificare a Gridului. în acest caz se face o cerere de certificat pentru user-ul debian:

debian@debian:Grid-cert-request

A certificate request and private key is being created.

You will be asked to enter a PEM pass phrase.

This pass phrase is akin to your account password, and is used to protect your key file.

If zou forget your pass phrase, you will need to obtain a new certificate. Generating a 1024 bit RSA private key

++++++

++++++

writing new private key to '/home/debian/.globus/userkey.pem'

Enter PEM pass phrase:

Verifying – Enter PEM pass phrase:

Parola cerută pe parcursul execuției va aparține utilizatorului și va fi necesară ulterior la delegarea de autoritate (generarea certificatelor proxy).

Semnarea certificatului usercertrequest.pem se face de către autoritatea de certificare, care primește (într-un fel oarecare, chiar prin mail) cererea de semnare. În cazul de față userul se află chiar pe mașina-autoritate de certificare, drept pentru care cererea este pur și simplu copiată în contul globus pentru ca acesta să semneze cererea. Semnarea se face identic cu cazul certificatelor host.

În acest moment toolkit-ul Globus a fost instalat și a fost stabilită securitatea pe bază de certificate X.509.

Implementarea aplicației

Serviciul web cu stare, MathService va permite utilizatorului să efectueze două operații: adunare și scădere. MathService va avea următoarele proprietăți ale resursei (RP resource property): valoare și ultima operație efectuată. Se va adăuga o operație GetValue pentru a accesa valoarea RP. Logica internă MathService este foarte simplă. Odată ce este creată o nouă resursă, value RP este inițializată cu 0, și last operation RP este inițializată cu NONE. Operațiile de adunare și scădere așteaptă un parametru întreg. Acest parametru este adunat sau scăzut la value RP și last operation RP este schimbat pe adition sau subtraction corespunzător. Operațiile de adunare și scădere nu returnează nimic. Acest exemplu va fi limitat la o singură resursă.

În primul pas se realizează definirea interfeței serviciului în WSDL. Este necesar să fie specificat ceea ce oferă serviciul lumii înconjurătoare. Nu este important în acest moment cum lucrează intern serviciul (ce algoritmi sunt utilizați, cu care sisteme se interacționează, etc.). Este însă necesar a se ști care sunt operațiile care vor fi disponibile utilizatorilor. în limbajul serviciului web, interfața serviciului este uzual numită port type. Limbajul XML special care poate fi utilizat pentru a specifica care operații sunt oferite de către un serviciu Web este WSDL. Deci la acest pas este necesară descrierea MathService utilizând WSDL. La o primă privire, pare natural să se pornească de la un limbaj de interfață (precum o interfață JAVA sau o interfață IDL) deoarece este mult mai prietenoasă decât o codare directă în WSDL. Apoi trebuie specificate proprietățile resursei. Deși interfața JAVA este mai simplă decât descrierea WSDL, nu permite specificarea tuturor detaliilor. în cele ce urmează se prezintă fișierul WSDL pentru exemplul particular.

<?xml version="l.0" encoding="UTF-8"?>

<definitions name="MathService"

targetNamespace="http://www.globus.org/namespaces/examples/core/MathService_i nstance"

xmlns="http://schemas.xmlsoap.org/wsdl/"

xmlns:tns="http://www globus.org/namespaces/examples/core/MathService instance"

xmlns:wdsl=http://schemas.xmlsoap.org/wsdl/

xmlns:wsrp="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-Resource Properties-1.2-draft-01.xsd"

xmlns:wsprw="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-Resource Properties-1.2-draft-01.wsdl"

xmlns:wsdlpp="http://www.globus.org/namespaces/2004/10/ WSDLPreprocessor" xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<wsdl:import

namespace=

"http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties- 1.2-draft- 01.wsdl"

location="../../wsrf/properties/WS-ResourceProperties.wsdl" />

<!–===========================================================

TYPES

=================================================================–>

<types> <xsd:schema

targetNamespace="http://www.globus.org/namespaces/examples/core/MathService_in stance"

xmlns:tns="http://www.globus.org/namespaces/examples/core/MathService_instance xmlns:xsd="http://www/w3/org/2001/XMLSchema">

<!–REQUESTS AND RESPONSES—>

<xsd:element name="add" type="xsd:int"/>

<xsd:element name="addResponse">

<xsd:complexType/>

</xsd:element>

<xsd:element name="subtract" type="xsd:int"/>

<xsd:element name="subtractResponse">

<xsd:complexType/>

</xsd:element>

<xsd:element name="getValueRP">

<xsd:complexType/>

</xsd:element>

<xsd:element name="getValueReponse" type="xsd: int"/>

<!– RESOURCE PROPERTIES –>

<xsd:element name="Value" type="xsd:int"/>

<xsd:element name="LastOp" type="xsd:string"/>

<xsd:element name="MathResourceProperties"> <xsd:complexType> <xsd:sequence>

<xsd:element ref="tns:Valuea" minOccurs="l" maxOccurs="l"/>

<xsd:element ref="tns:LastOp" minOccurs="l"

maxOccurs="l"/>

</xsd:sequence>

</xsd:complexType>

</xsd:element>

</xsd:schema>

</types>

<-===============================

MESSAGES

==============================–>

<message name="AddInputMessage">

<part name="parameters" element="tns:add"/>

</message>

<message name="AddOutputMessage">

<part name="parameters" element="tns:addResponse"/>

</message>

<message name="SubtractInputMessage">

<part name="parameters" element="tns:subtract"/>

</message>

<message name="SubtractOutputMessage">

<part name="parameters" element="tns:subtractResponse"/>

</message>

<message name="GetValueRPInputMessage">

<part name="parameters" element="tns:getValueRP"/>

</message>

<message name="GetValueRPOutputMessage">

<part name="parameters" element="tns:getValueRPResponse"/>

</message>

<!–========================================================

PORTTYPE

=========================================================–>

<portType name="MathPortType"

wsdlpp:extends="wsrpw:GetResourceProperty"

wsrp:ResourceProperties="tns:MathResourceProperties">

<operation name="add">

<input message="tns:AddInputMessage"/>

<output message="tns:AddOutputMessage"/>

</operation>

<operation name="subtract">

<input message="tns:SubtractInputMessage"/>

<output message="tns:SubtractOutputMessage"/>

</operation>

<operation name="getValueRP">

<input message="tns:GetValueRPInputMessage"/>

<output message="tns:GetValueRPOutputMessage"/>

</operation>

</portType>

</definitions>

Fișierul WSDL definește trei operații: add, substract, și getValueRP (precum și mesajele și tipurile necesare). Acest WSDL are și anumite particularități specifice WSRF și Globus. în particular pentru acest exemplu există trei facilitați specifice WSRF și al implementării Globus a WSRF care este utilizată:

Proprietățile resurselor:

Se utilizează atributul wsrp: ResourceProprieties al elementului portType pentru a specifica care sunt proprietățile serviciului. Acestea trebuie declarate în secțiunea <type> a fișierului WSDL. }n proprietățile resurselor sunt stocate toate informațiile de stare.

Preprocesorul WSDL. Datorită atribtului wsdlpp: extends: ResourceProprieties al elementului portType se pot include tipuri de port WSRF existente în propriul portType fără a fi necesar copy-and- paste de la fișierele oficiale WSDL WSRF. Un procesor WSDL va utiliza valoarea acelui atribut pentru a genera WSDL corect care include propriile definiții portType plus orice tip de port WSRF care este necesar în serviciul care se construiește. Aceasta este o facilitate specifică Globus care este inclusă pentru a ușura viața programatorului. în cazul exemplului, a fost inclus tipul de port GetResourceProperty din fișierul WSDL WS-ResourceProperties.

Preprocesorul WSDL

Preprocesorul WSDL (atributul wsdlpp: extends în elementul portType) este oferit de GT 4. Fișierele WSDL ce utilizează wsdlpp: extends vor fi convertite la WSDL standard înainte ca acestea să fie utilizate efectiv. Cu alte cuvinde wsdlpp: extends nu afectează interoperabilitatea GT4 cu alte implementări WSRF deoarece atributul extins este întotdeauna eliberat din fișierul WSDL înainte ca serviciul să fie lansat. Acest proces este numit în mod uzual netezire (flattening) deoarece se consideră mai mult fișiere WSDL (cel mai sus menționat plus orice fișiere WSRF WSDL care au fost extinse) și sunt unite într-un singur fișier (netezit).

GT4 va publica intotdeauna versiunea netedă a fișierului WSDL. Nu este obligatorie utilizarea wsdlpp.extends. Se poate scrie versiunea netedă direct. Acest proces însă presupune o cantitate considerabilă de copy-paste care poate fi susceptibilă la erori. GT4 nu necesită ca alte implementări ale serviciilor Web sau alte implementări WSRF să utilizeze wsdlpp:extends deoarece fișierele WSDL sunt întotdeauna schimbate în versiunea netedă.

Maparea spațiului de nume (namespace mapping). WSDL este neutru la limbaj. Nu există o mențiune a limbajului în care serviciul urmează a fi implementat, nici limbajul în care clientul va fi implementat. Interfața va fi referită dintr-un limbaj specific, în cazul exemplului din Java; printr-o submulțime a claselor stub care sunt generate din fișierul WSDL utilizând o unealtă GT4. Pentru ca unealta să genereze cu succes clasele stub, este necesară specificarea locului de plasare a claselor stub

(adică în care pachet Java). Acest lucru este realizat printr-un fișier de mapări, care mapează spațiu de nume WSDL la pachete Java.

http\://www.globus.org/namespaces/examples/core/MathService instance=org.globus.examples.stubs.MathService_instance

http\://www.globus.org/namespaces/examples/core/MathService_instance/bind ings=org.globus.examples.stubs.MathService_instance.bindings

http\://www.globus.org/namespaces/examples/core/MathService instance/serv ice= org.globus.examples.stubs.MathService_instance.service

Fiecare mapare trebuie specificată într-o linie (adică fișierul de mai sus are trei linii). Primul spațiu de nume este cel al fișierului WSDL. Celelalte două sunt generate automat pentru a completa fișierul WSDL. incluzând legăturile necesare. Clasele stub sunt generate din fișierul WSDL și nu există până când nu se compilează serviciile.

Pasul 2 – Implementarea serviciului în Java

După definirea interfeței serviciului ("ceea ce face serviciul") următorul pas este implementarea interfeței. Implementarea spune “cum serviciul face ceea ce spune că face”.

Interfața QNames. Pentru a ne referi la orice legat de serviciu este necesară utilizarea numelui sau calificat sau pe scurt QName. Acesta este un nume care include un namespace și un nume local.

package org.globus.examples.services.core.first.impl;

import javax.xml.namespace,QName;

public interface MathNames {

public static final String NS =

""http://www.globus.org/namespaces/examples/core/MathService__instance";

public static final QName RP_VALUE = new QName(NS, "Value");

public static final QName RPLASTOP = new QName(NS, "LastOp");

public static final QName RESOURCE_PROPERTIES = new QName (NS, "MathResourceProperties");

}

Implementarea serviciului

}n acest exemplu simplu, implementarea va consta dintr-o singură clasă Java cu cod atât pentru serviciu cât și pentru resursă.

package org.globus.examples.services.core.first.impl;

import java.rmi.RemoteException;

import org.globus.wsrf.Resource;

import org.globus.wsrf.ResourceProperties;

import org.globus.wsrf.ResourceProperty;

import org.globus.wsrf.ResourcePropertySet;

import org.globus.wsrf.impl.ReflectionResourceProperty;

import org.globus.wsrf.impl.SimpleResourcePropertySet;

import org.globus.examples.stubs.MathService_instance.AddResponse;

import org.globus.examples.stubs.MathService_instance.SubtractResponse;

import org.globus.examples.stubs.MathService_instance.GetValueRP;

public class MathService implements Resource, ResourceProperties {

/‘Resource Property set */

private ResourcePropertySet propSet;

/‘Resource properties */

private int valuel; private String lastOp;

/‘Constructor. Initializes RPs */

public MathService() throws RemoteException {

/‘Create RP set */

this.propSet = new SimpleResourcePropertySet(

MathQNames.RESOURCE_PROPERTIES);

/*Initialize the RPs*/ try {

ResourceProperty valueRP = new ReflectionResourceProperty(

MathQNames.RP_VALUE, "Value", his); this.propSet.add(valueRP);

setValue(0) ;

ResourceProperty lastOpRP = new ReflectionResourceProperty(

MathQNames.RP_LASTOP, "LastOp", this) ;

this.propSet.add(lastOpRP);

setLastOp("NONE");

) catch (Exception e) {

throw new RuntimeException(e.getMessage());

}

}

/* Get/Setter for the RPs */ public int getValue() {

return value;

}

public void setValue(int value) {

this.value = value;

}

public String getLastOpO ( return lastOp;

}

public void setLastOp(String lastOp) { this.lastOp = lastOp;

}

/* Remotely-accesible operations */

public AddResponse add(int a) throws RemoteException { value += a;

lastOp = "ADDITION";

return new AddResponse();

)

public SubttractResponse subtract (int a) throws RemoteException { value -= a;

lastOp = "SUBTRACTION"; return new SubtractResponse();

}

public int getValueRP(GetValueRP params) throws RemoteException { return value;

}

/* Required by interface ResourceProperties */

public ResourcePropertySet getResourcePropertySet() {

return.this.propSet;

}

}

Deoarece clasa Java va implementa atât serviciul cât și resursa, este necesară implementarea interfeței Resource. Totuși această interfață nu necesită nici o metodă. Este doar o modalitate simplă de a indica o clasă ca fiind o resursă. Prin implementarea interfeței ResourceProperties se indică faptul că clasa are o mulțime de proprietăți de resursă care se doresc a fi făcute disponibile.

Resursa are două proprietăți: Value de tip xsd:int și LastOp de tip xsd:string. Putem adăuga un atribut la fiecare proprietate a resursei. Este important ca atributele să aibă același nume care a fost dat proprietăților resursei în fișierul WSDL (dar cu prima literă, mică).

Deși operația add a fost definită fără tip la returnare în fișierul WSDL, tipul de returnare actual este AddResponse. La fel se întâmplă și în cazul metodei getValueRP. Deși getValueRP a fost definită fără parametrii, metoda are un singur parametru GetValueRP params.

Acest lucru se datorează faptului ca WSRF utilizează legături document/literal, care necesită ca parametrii să fie implementați într-un mod particular. De fiecare dată când se scrie o operație care este parte a interfeței WSDL (precum add, substract sau getValueRP), parametrii și valorile de returnare sunt în anumite cazuri închise în clasele stub (care sunt generate automat din fișierul WSDL).

Pasul 3 – Configurarea lansării în WSDD (și JNDI)

Piesele scrise până în acest punct sunt făcute disponibile printr-un container de servicii web. Acest pas se numește lansarea serviciului.

Descriptorul de lansare WSDD

Una din componentele cheie ale fazei de lansare este numit descriptor de lansare. Este fișierul care spune container-ului de servicii web cum să publice serviciul. Descriptorul de lansare este scris în format WSDD (Web Service Deployment Descriptor)

<?xml version="l.0" encoding="UTF-8"?> <deployment name="defaultServerConfig"

xmlns="http://xml.apache.orq/axis/wsdd"

xmlns:java=http://xml.apache.orq/axis/wsdd/providers/j ava xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<service name="examples/core/first/MathService" provider="Handler" use="literal" style="document">

<parameter name="className"

value="org.globus.examples.services.core.first.impl.MathService"/>

<wsdlFile>share/schema/examples/MathService_instance/Math_service.wsdl</wsdlFile>

<parameter name="allowedMethods" value="+"/>

<parameter name="handlerClass" value="org.globus.axis.providers.RPCProvider"/>

<parameter name="scope" value="Application"/>

<parameter name="providers" value="GetRPProvider"/>

<parameter name="loadOnStartup" value="true"/>

</service>

</deployment>

Fișierul JNDI de lansare

<?xml version="1.0" encoding="UTF-8"?> <jndiConfig xmlns="http://wsrf.globus.org/jndi/config">

<service name="examples/core/first/MathService">

<resource name="home" type="org.globus.wsrf.impl.ServiceResourceHome">

<resourceParams>

<parameter>

<name>factory</name>

<value>org.globus.wsrf.jndi.BeanFactory</value> </parameter> </resourceParams> </resource»

</service>

<JjndiConfig>

Pasul 4 – Crearea unui fișier GAR cu Ant

Se face cu ajutorul script-ului globus-build-service, rezultând fișierul GAR

org_globus_examples_services_core_first.gar./globus-build-service.sh -d <dir de bază al serviciului> -s <fiș WSDL al serviciului>

Pasul 5 – Lansarea serviciului

globus-deploy-gar <calea către fișierul gar>

Pentru a se testa serviciul se implementează un client care va invoca cele două operații aritmetice și va obține valoarea proprietății resursei utilizând operația getValueOp.

package org.globus.examples.clients.MathService_instance;

import org.apache.axis.message.addressing.Address;

import.org.apache.axis.message.addresing.EndpointReferenceType;

import org.globus.examples.stubs.MathService_instance.MathPortType; import org.globus.examples.stubs.MathService_instance.GetValueRP;

import org.globus.examples.stubs.MathService_instance.service.MathServiceAddressingLocator;

public class Client {

public static void main (String[] args) {

MathServiceAddressingLocator locator = new MathServiceAddressingLocator();

try {

String serviceURI=args [0];

EndpointReferenceType endpoint = new EndpointReferenceType();

endpoint.setAddress(new Address(serviceURI));

MathPortType math = locator.getMathPortTypePort (endpoint);

// Perform an ddition math.add(10);

//Perform another ddition math.add(5);

//Access value

System.out.println("Current value:" +math.getValue(new GetValue RP()));

//Perform a ubtraction math.subtract(5);

//Access value

System.out.println("Current value:" +math.getValue(new GetValueRP()));

} catch (Exception e) {

e.printStackTrace();

}

}

}

Se creează un obiect EndpointReferenceType reprezentând un punct final de referință a acestui serviciu (utilizat pentru a adresa o resursă WS particulară perechea serviciu +resursă). Referință finală necesită URI -ul serviciului.

Apoi se obține o referință la port type -ul serviciului cu ajutorul unei clase stub numite MathServiceAddressingLocator care returnează un obiect MathPortType ce va permite contactarea serviciului.

Se compilează clientul

javac -classpath ./build/stubs/classes/:$CLASSPATH

org/globus/examples/clients/MathService_instance/Client.jva

./buiid/classes este un director generat de ant în care sunt plasate toate clasele stub. Acest director este necesar a fi inclus în CLASSPATH astfel încât clientul poate să acceseze stub generate precum MathServiceAddressingLocator.

Înainte de a rula clientul, trebuie pornit containerul de sine-stătător. Altfel, serviciile de web nu vor fi disponibile și clientul va eșua:

globus-start-container -nosec

Se rulează containerul Globus fără nici o securitate pentru a evita tratarea configurației de securitate în acest moment.

Când containerul este pornit se va vedea o listă de URI-uri a tuturor serviciilor lansate. Clientul poate fi rulat:

java -classpath ./build/stubs/classes/:$CLASSPATH

org.globus.examples.clients.MathServiceinstance.Client

http:7/127.0.0.1:8080/wsrf/services/examples/core/first/MathService

Capitolul IV

Concluzii

Lucrarea de față reprezintă o sinteză a unor noțiuni și concepte legate de mediile computaționale Grid, cu accent pe partea de securitate. S-a încercat să se ofere o imagine cât mai detaliată a unor elemente de securitate în Grid computing, cu accent pe partea de securitate a informațiilor. O imagine completă a ceea ce înseamnă securitatea în mediile Grid ar fi fost foarte dificil de realizat datorită complexității ridicate a ceea ce înseamnă securitate Grid și multiplele sale componente.

Actualitatea lucrării nu poate fi contestată: Grid-urile reprezintă un trend relativ nou în domeniul calculatorelor și este în prezent în plin stadiu de dezvoltare. Multiplele impedimente care au încetinit dezvoltarea acestei tehnologii vor fi foarte probabil surmontate în viitorul apropiat datorită eforturilor depuse de multiplele organizații ce au ca și preocupare principală îmbunătățirea Grid-urilor. Prin colaborarea acestor instituții și prin aportul adus de către cercetătorii implicați în proiecte Grid s-a ajuns deja la implementarea anumitor standarde în ceea ce privește arhitectura și securitatea Grid-ului și se lucrează continuu la îmbunătățirea lor.

Securitatea reprezintă probabil cea mai importantă dintre problemele ce se doresc rezolvate înainte de a putea folosi cu succes tehnologiile Grid pe scară largă. Un studiu al problemelor de securitate, pe lângă finalitatea de a fi la curent cu soluțiile practicate la ora actuală în domeniu, are rolul de a crea o imagine constructivă asupra tehnicilor aplicate, plecând de la cunoașterea la nivel de principiu a procedeelor majore în domeniu și ajungând la aprofundarea și implementarea unora dintre ele.

Orientarea spre servicii, o direcție de altfel foarte căutată la acest moment în sistemele informaționale, face ca soluțiile Grid bazate pe servicii Web să faciliteze adoptarea tehnologiei Grid, în primul rând datorită construcției relativ ușoare a serviciilor Grid odată cunoscut modul de implementare a serviciilor Web.

Aplicația prezentată în această lucrare, deși foarte simplistă, evidențiază ușurința cu care se pot implementa serviciile Grid, în baza cunoașterii modului de construcție a serviciilor Web și realizează familiarizarea utilizatorului cu un mediu Grid.

Concluzionând, putem spune cu certitudine că această tehnologie reprezintă o idee grandioasă și îndrăzneață, prin dorința de a oferi o putere de computație enormă la costuri mult scăzute față de oricare alte tehnologii actuale de același nivel, și că implementarea ei pe scara largă în viitor va aduce multe beneficii la nivel mondial.

Bibliografie:

http://www.globus.org/

Gentzsch, W.: The Grid, The Time Machine of the 21st Century

http://en.wikipedia.org/wiki/Grid_computing

Jacob,B., Brown, M., Fukui, K., Trivedi, N.: “Introduction to Grid Computing”, Dec.2005

http://theGridWeblog.blogspot.com/2005/IQ/types-of-Grids.html

http://www.Gridcafe.org/

http://www.computeagainstcancer.org/

http://www.parabon.com/

http://www.teraGrid.org/

http://lcg.Web.cem.ch/LCG/

Front Page

[ 12] http://www.cs.wisc.edu/condor/

바카라사이트 – 카지노 전략과 기술의 완벽한 조화

http://www.Gridbus.org/intro.html

http://www.infosolvetech.com/

http://www.vcompute.com/

[ 17] http://www.estar.org.uk

[18] http://aws.amazon.com/s3/

[ 19] http://www.globus.org/alliance/publications/papers/ogsa.pdf

http.//www.ibm.com/developerworks/library/ws-resource/wsmodelingresources.pdf

http://w.cert-ro.eu/securitate date/securitate.html

http://gdp.globus.org/gt4-tutorial/multiplehtml/index.html

Chakrabarti, A.: “Grid computing security”, Springer; 1 edition (April 19, 2007)

Bibliografie:

http://www.globus.org/

Gentzsch, W.: The Grid, The Time Machine of the 21st Century

http://en.wikipedia.org/wiki/Grid_computing

Jacob,B., Brown, M., Fukui, K., Trivedi, N.: “Introduction to Grid Computing”, Dec.2005

http://theGridWeblog.blogspot.com/2005/IQ/types-of-Grids.html

http://www.Gridcafe.org/

http://www.computeagainstcancer.org/

http://www.parabon.com/

http://www.teraGrid.org/

http://lcg.Web.cem.ch/LCG/

Front Page

[ 12] http://www.cs.wisc.edu/condor/

바카라사이트 – 카지노 전략과 기술의 완벽한 조화

http://www.Gridbus.org/intro.html

http://www.infosolvetech.com/

http://www.vcompute.com/

[ 17] http://www.estar.org.uk

[18] http://aws.amazon.com/s3/

[ 19] http://www.globus.org/alliance/publications/papers/ogsa.pdf

http.//www.ibm.com/developerworks/library/ws-resource/wsmodelingresources.pdf

http://w.cert-ro.eu/securitate date/securitate.html

http://gdp.globus.org/gt4-tutorial/multiplehtml/index.html

Chakrabarti, A.: “Grid computing security”, Springer; 1 edition (April 19, 2007)

Similar Posts

  • Gestiunea Utilizatorilor DE Retea Sub Windows Server 2012

    GESTIUNEA UTILIZATORILOR DE REȚEA SUB WINDOWS SERVER 2012 Cuprins 1. Descrierea sistemului de operare Windows Server 2012 1.1 Definiția unui sistem de operare 1.2 Noutăți în sistemul de operare Windows Server 2012 1.3 Instalare Windows Server 2012 1.4 Server Core și Full Instalation 1.5 Securitate și protecție în Windows Server 2012 1.5.1 AppLocker 1.5.2 Bitlocker…

  • Criptarea Informatiei

    CRIPTAREA INFORMAȚIEI CUPRINS INTRODUCERE CAPITOLUL I. Securitatea informației Tehnici de Securitate Probleme de Securitate Cauzele problemelor de securitate Obiectivele securității informației CAPITOLUL II. Scurtă introducere în Criptografie 2.1 Istoria criptografiei Concepte de bază ale criptografiei Importanța și rolul criptografiei Puterea criptografiei Scheme criptografice simetrice Scheme criptografice asimetrice Scheme criptografice hibride Hashing 2.10Administrarea cheilor Administrarea centralizată…

  • Metode Kernel

    METODE KERNEL În ultimele decenii, evoluția exponențială a colectării datelor în baze de date macroeconomice în format digital a determinat o creștere uriașă a acestora ca volum. Ca o consecință, organizarea automată și clasificarea datelor macroeconomice indicatoriale prezintă o importanță practică deosebită. Diversele tehnici de categorizare a datelor sunt folosite pentru a clasifica numeroasele date…

  • Elaborarea Paginii Web Pentru O Firma Taxi cu Posibilitati de Accesare Si Folosire a Serviciilor Prestate

    CUPRINSul INTRODUCERE………………………………………………………………………………………………………………………4 1. NOȚIUNI TEORETICE……………..…………………………………………..……………………6 1.1. Prezentarea tehnologiilor World Wide Web ……………………………………………………………………6 1.2. Arhitectura Client – Server………………………..……………………………..…………………………7 1.2.1. Noțiuni generale………………….……………..……………………………………………..7 1.2.2. Arhitectura two-tier……………………………………………………….…………….10 1.2.3. Arhitectura trhee-tier …………………………….……………….……………………………..10 1.3. Concepția de bază de date ……………………………………….……………………………….11 1.3.1. Definirea sistemului de gestiune a bazelor de date………….……………………………11 1.3.2. Etapele de realizare a bazelor de date…………………………….………………………11 1.3.3. Obiectivele unui sistem…

  • .web2.0 DIN Perspectiva Non Tinerilor

    Cuprins Lista figurilor si tabelelor Lista abrevierilor AIM = AOL Instant Messenger, program de mesagerie instanta; alianța D.A. = alianta Dreptate si Adevar, alianta intre PD si PNL; AOL = America Online, companie americana furnizoare de servicii internet; ATL = publicitate “deasupra liniei” (above the line advertising); basescu.ro (URL prescurtat) = http://www.basescu.ro (URL complet); BTL…

  • Magazin Online de Carti

    Introducere Această lucrare prezintă dezvoltarea unei aplicații web de vânzări online de cărți, fiind bazată pe platforma opencart. Am ales să implementez un magazin online de cărti, deoarece după parerea mea cititul este unul dintre cele mai frumoase hobby-uri pe care o persoană le poate avea, fiind urmat de o serie de avantaje. Multe studii…