Portalul web de servicii ruleaza pe o platformă aplicativă software. Software-ul platformă aplicativă portal este compus din server aplicaţii, server web şi server baze de date.
Platforma pe care rulează portalul ofertat e una de tip COTS de tip pachet unitar care are minimum server de web, aplicaţii şi baze de date, integrate în cadrul aceluiaşi produs software de tip platformă. Licenţa ofertată este însoţită de garanţie şi servicii de mentenanţă oferite de producătorul platformei licenţiate pe perioada de minimum 12 luni. Ea poate funcţiona pe următoarele SO server: Windows Server (toate versiunile inclusive pe 32 şi 64 de biţi), Linux (pe platforme Intel şi System Z), UNIX, Sun Solaris şi pe platforme hardware de tip Intel şi RISC. Soluţia proiectată e capabilă să ruleze într-o arhitectură de tip cluster şi ofera mecanisme de HA (high availability) atât pentru clustering cât şi pentru load-balancing (echilibrarea încarcaturii). Platforma permite rularea pe ultima versiune de server a oricărei aplicaţii realizate/dezvoltate/testate pentru orice versiune anterioară (backward compatibility) fără a fi necesară migrarea ei (in-place upgrade).
Pentru compatibilităţi ulterioare, platforma permite instalarea şi rularea în aceeaşi arhitectură de tip cluster a serverelor cu caracteristici hardware diferite care rulează pe SO diferite (de ex unul pe UNIX şi altul pe Windows) şi care rulează versiuni diferite ale aceleiaşi platforme aplicative (ex ver.x cu ver.x+1 sau ver.x+2).
Pentru compatibilitate, platforma permite accesul şi sincronizarea cu următoarele platforme de baze de date:
- MS SQL server ( Windows)
- DB2 (Windows / Linux / Unix / OS/400 etc)
- Oracle (Windows /Linux / Unix etc).
De asemenea platforma deţine mecanisme de intervenţie la eşuarea bazelor de date (database failover) şi continuitatea rulării serverului (server continuity) în caz de incident (folosind mecanisme de izolare în memorie a incidentelor).
Fiecare element care compune design-ul unei aplicaţii (cod, raport, machetă, imagine, task, etc) are un identificator unic în cadrul tuturor aplicaţiilor instalate pe platformă, identificator menţinut de serverul aplicativ şi sincronizat la nivelul tuturor serverelor aplicative pe care rulează sistemul informatic. De asemenea, fiecare aplicaţie care rulează la nivelul unui server aplicativ are un identificator unic la nivel de server (independent de director/cale pe server) şi să poată fi instalată şi să ruleze corect pe alt server indiferent de directorul unde este instalată.
Orice modificare a unei aplicaţii este reflectată instant în funcţionarea ei fără a fi necesară oprirea/repornirea serverului aplicativ sau altă intervenţie/delay folosind mecanisme de tip hot-swap.
Platforma permite nativ versionarea design-ului şi are mecanisme de protecţie la modificări (design locking) atât la nivel de aplicaţie (în întregime) cât şi la nivel individual de element de design.
De asemenea, platforma permite nativ criptarea/decriptarea documentelor direct în aplicaţiile web folosind chei secrete sau public/private.
Orice înregistrare din sistem trebuie are un câmp în care se stocheaza sub formă de listă persoane şi/sau grupuri şi/sau roluri aplicative şi sau servere/grupuri de servere care au permisiunea de a citi (read) respectiva înregistrare.
De asemenea, orice înregistrare din sistem are un câmp în care stocheaza sub formă de listă persoane şi/sau grupuri şi/sau roluri aplicative şi sau servere/grupuri de servere care au permisiunea de a modifica (edit) respectiva înregistrare.
A. Server baze de date
Având în vedere că se implementeaza un portal de servicii şi gestiunea de conţinut ne-structurat în care se vor gestiona multe date (big data) în aplicaţii web real-time, baza de date pe care este realizat acesta trebuie e una de tip NoSQL orientată tip gestiune document (document store oriented database) cu un înalt nivel de securizare a informaţiilor. Acest tip de baze de date asigură o scalabilitate orizontală către sistemele de tip cluster şi un control fin asupra disponibilităţii, oferind timpi de răspuns mult superiori altor modele de baze de date.
- SGBD e COTS şi suporta scalabilitatea pe orizontală;
- SGBD permite replicarea instantanee (mirroring) în cluster a bazelor de date, aplicaţiilor web şi a securităţii aplicaţiilor într-o arhitectură de cluster activ-activ; replicarea se poate realiza automat, programatic (după un orar specificat) sau manual (la solicitarea explicită a unui task sau a unei proceduri apelate de pe server);
- stocarea fişierelor se face în SGBD (nu la nivelul sistemului de fişiere); SGBD-ul permite gruparea fişierelor pe categorii şi aplicarea unor politici adecvate de securitate
- SGBD dispune nativ de interfaţă web integrată din care se pot efectua toate operaţiile de administrare şi de gestiune baze de date;
- Politica de securitate integrată: serverul de aplicaţii, serverul de web şi serverul de baze de date dispun de un mecanism integrat de definire a accesului de către administrator astfel încât pe fiecare bază de date şi aplicaţii se poate defini orice combinaţie (produs cartezian) de drepturi din oricare din cele patru tabele următoare, din interfaţa web, folosind exclusiv selecţia de valori din liste (fără editare manuală text):
a. Permisii globale pe aplicaţie
Cine | Rol aplicativ | Permisii globale pe baza de date |
User neautentificat (anonim)
User autentificat Grup de useri Grup mixt (useri+grupuri +servere) Server |
Cel puţin 75 de roluri de aplicaţie customizate create de proiectanţii de soluţie | · Fără acces
· Creare înregistrări noi · Vizualizare înregistrări · Modificarea propriilor înregistrări +2 şi 3 · Modificarea înregistrărilor create de alţii+4 · Administrare acces + 5 |
b. Permisii pe un tip de înregistrare (tabel)
Cine | Permisii pe un tip de înregistrare (tabel) |
User neautentificat (anonim)
Server User autentificat Grup de useri Grup mixt (useri+grupuri +servere) Grupuri de servere Cel puţin 75 de roluri aplicative customizate create de proiectanţii de soluţie |
Poate citi înregistrările din tabelul specificat
Poate crea înregistrări în tabelul specificat
|
c. Permisii pe o secţiune din înregistrare (grup de câmpuri)
Cine | Permisii pe o secţiune din înregistrare (grup de câmpuri) |
User neautentificat (anonim)
Server User autentificat Grup de useri Grup mixt (useri+grupuri +servere) Grupuri de servere Cel puţin 75 de roluri aplicative customizate create de proiectanţii de soluţie |
Cine poate vizualiza
Cine poate completa sau modifica |
d. Permisii globale pe înregistrări
Cine | Permisii globale pe înregistrări |
User neautentificat (anonim)
Server User autentificat Grup de useri Grup mixt (useri+grupuri +servere) Grupuri de servere |
Poate crea înregistrări în baza de date
Poate şterge înregistrări Poate replica/sincroniza înregistrări |
- securitatea lucrului cu fişiere în SGBD implementeaza minimum următoarele scheme de acces ca produs cartezian dintre oricare două perechi de tipul (Cine x Permisii):
Cine | Permisii pe categorie de fişiere stocate în baza de date |
User neautentificat (anonim)
Server User autentificat Grup de useri Grup mixt (useri+grupuri+servere) Grupuri de servere Cel puţin 75 de roluri aplicative customizate create de proiectanţii de soluţie
|
Poate citi fişierele din categoria specificată
Poate crea fişiere în categoria specificată |
Permisii pe fişiere stocate în baza de date | |
Poate citi fişierele specificate
Poate crea fişiere |
- Pentru fiecare înregistrare SGBD menţine automat, la nivel de server (şi nu prin cod client) cel puţin următoarele informaţii din sistem care nu pot fi alterate cu nici un instrument:
o Identificator unic în baza de date
o Identificator unic pentru toate instanţele de baze de date şi servere dintr-un domeniu care conţin replici ale bazei de date
o Numele şi credenţialele creatorului indiferent dacă înregistrarea a fost creată front-end sau back-end şi semnătura digitală a acestuia (dacă s-a specificat) pentru documentele/câmpurile semnate digital
o Lista certificatelor utilizatorilor/serverelor care au modificat înregistrarea indiferent dacă modificarea a fost front-end sau back-end
o Data exactă (+minut, secundă) a creării şi ultimei modificări
o Data exactă (+minut, secundă) a ultimului acces pentru orice utilizator care accesează înregistrarea
- Securitatea datelor gestionată de serverul de baze de date se poate realiza nativ (prin funcţionalităţile native ale platformei COTS) de către serverul de baze de date (fără codificare din partea clientului) la următoarele nivele:
o La nivel de server – Posibilitatea de definire a utilizatorilor (persoane +grupuri), acces la server, grupuri de servere
o La nivel de bază de date – Posibilitatea de definire a rolurilor, utilizatorilor (persoane, grupuri) care au dreptul să vadă, creeze, modifice înregistrări şi a mapării dintre utilizatori şi roluri
o La nivel de bază de date – posibilitatea de definire a accesului maxim pentru userii de internet
o La nivel de înregistrare – Posibilitatea de definire a utilizatorilor (persoane, grupuri, roluri) care au acces în consultare la înregistrarea respectivă, care au dreptul de modificare a ei
o La nivel de secţiune (secvenţă logică ordonată de câmpuri) din înregistrare – Posibilitatea de definire a utilizatorilor (persoane, grupuri, roluri) care au acces să modifice secţiunea respectivă
o La nivel de câmp – posibilitatea de criptare a conţinutului unui câmp (de ex. de tip parolă)
Bazele de date suporta scalabilitatea pe orizontală; în acest sens ele folosesc pentru stocarea informaţiilor legate de managementul documentelor un model orientat pe document. Orice modificare a schemei sau de structură a bazei de date se reflecta imediat în aplicaţiile funcţionale (schema BD-> cod respectiv cod-> schema BD) şi nu genereaza down-time la sistemul informatic implementat.
Baza de date trebuie suporta cel puţin următoarele tipuri de date care să permită valori multiple pentru un câmp (liste multivalue):
Tip de date | Permite valori multiple în câmp (lista multivalue) | Poate fi câmp cheie | Se poate sorta după acest câmp | Se poate grupa după acest câmp | Observaţii |
CHAR | Da | Da | Da | Da | Nu e nevoie să se definească o lungime maximă a câmpului |
Numeric | Da | Da | Da | Da | Numere Intregi sau zecimale, simplă sau dublă precizie |
Binary Large Object (BLOB) | Da | nu e nevoie să se definească o lungime maximă a câmpului | |||
Data şi timp (Timestamp) | Da | Da | Da | Da | |
Time Zone | Da | ||||
Culoare | Da | Da | Da | Da | |
Securitate cititor | Da | Da | Da | Da | Cine poate accesa în consultare înregistrarea/secţiunea
nu e nevoie să se definească o lungime maximă a câmpului |
Securitate Modificator | Da | Da | Da | Da | Cine poate modifica înregistrarea / secţiunea
nu e nevoie să se definească o lungime maximă a câmpului |
Orice modificare (ALTER) a schemei bazei de date sau a structurii tabelelor se face fără generarea de downtime, indiferent de numărul de înregistrări din baza de date; baza de date poate suporta orice modificare sau inserare de înregistrare în acelaşi timp în care se efectuează operaţia de modificare schemă sau structură a tabelului.
Platforma suporta încuierea/blocarea (locking) înregistrărilor aflate în editare web atât pentru modificările efectuate de către utilizatorii web cât şi de către task-urile din back-end.
În acest fel, în momentul în care un utilizator doreşte să acceseze în scop de modificare o înregistrare aflată deja în editare la alt user, platforma îl notifica automat (pe canale web) de imposibilitatea operaţiei iar la eliberarea unei resurse din editare, tot platforma descuie/deblocheze (unlock) imediat şi automat respectiva resursă. Platforma permite identificarea automată prin mecanisme native a operţiunilor de locking şi de terminare a operaţiei de editare pentru a face unlock pe resursa editabilă web.
De asemenea, sistemul informatic dispune de mecanisme care permit editarea concurentă pe web a înregistrărilor prin descuierea/deblocarea (lock) la nivel de câmp. Astfel, în cazul unei înregistrări aflate în editare pe web simultan de către doi useri nu e permisă modificarea unui câmp dacă acesta a fost deja modificat de alt user.
Cele două mecanisme de încuiere/blocare (la nivel de câmp şi la nivel de înregistrare) la editarea pe web pot fi activate/dezactivate de către administratorul soluţiei.
Încuierea/blocarea (locking) la editarea înregistrarilor se poate aplica tuturor înregistrărilor care au acelaşi identificator unic pe toate replicile bazei de date. Dacă un utilizator editează o înregistrare, atunci această înregistrare nu poate fi editată de nici un alt utilizator atât în baza de date curentă cât şi pe orice replică a ei de pe orice alt server de baze de date cu care se află în arhitectură de replicare. În acest fel platforma poate defini un server master care menţine centralizat şi unitar toate încuierile/blocările (locking) de modificare a înregistrărilor.
SGBD permite managementul performant al câmpurilor astfel încât valorile de tip NULL să nu consume spaţiu fizic.
Replicarea datelor
SGBD dispune de mecanisme de replicare manuală şi automată (task-uri programatice) a datelor. Replicarea se poate face pentru toate înregistrările dintr-o bază de date sau numai pentru anumite înregistrări, pe baza unei politici configurate de administratorul de sistem (replicare selectivă). Formula de selecţie a datelor replicabile permite alegerea lor după valori, date (creare/modificare/ştergere), autori, editori, etc. Mecanismul de replicare automată ruleaza cu credenţialele (certificatul) serverului de baze de date şi respecta pentru acesta securitatea impusă în baza de date. La apariţia unor conflicte de replicare, sistemul aplica automat o politică de creare a înregistrărilor de tip conflict cu izolarea şi identificarea lor imediată în baza de date. Administratorul poate aplica manual sau automat politici de tratare a conflictelor de tipul merge/response pentru înregistrările de tip conflict.
Licenţa pentru platforma aplicativă e nouă şi de ultimă versiune emisă de producător şi va fi instalată într-o arhitectură de cluster activ-activ la nivel de aplicaţie pe două servere. Cantitatea şi volumul de licenţiere e de tip Enterprise sau echivalent.
B. Serverul Web
Nodul server web furnizează un server web procesând şi livrând conţinut informaţional în principal de natură statică. Paginile statice (şi pseudo statice) sunt livrate pe baza protocolului HTTP şi HTTPS. Ea e scrisă pentru a beneficia de capabilităţile serverului web, care includ abilitatea de a manipula pagini web simple proiectate în HTML. În cazul în care sunt recepţionate cereri de accesare a unor funcţii dinamice, serverul web înaintează cererile serverului/serverelor de aplicaţii (filtrare/dispatch). Serverul permite nativ utilizarea funcţiilor de criptare trafic (HTTPS) şi comprimare a traficului de ieşire (output compression) folosind algoritmi de compresie. Serverul poate defini site-uri web multiple independente şi le trateaza separat, pentru fiecare site definit poate specifica unde sunt stocate datele de configurare sesiune, operaţiile permise (minimum GET, POST, HEAD, OPTIONS, TRACE, DELETE, PUT). Serverul de web funcţioneaza ca un server de Proxy pentru serverul de aplicaţii.
Sistemul permite utilizarea compresiei la servirea fişierelor statice. În acest caz, se pot defini şi excepţii de la politica de compresii.
Sistemul server web permite extinderea lui cu module proprii de filtrare. În acest sens, dispune nativ de un set de funcţii (API) care permit filtrarea cel puţin a următoarelor evenimente:
- Autentificarea utilizatorilor
- Implicarea unui sistem de autorizare extern
Sistemul permite conversia imaginilor în formatul implicit GIF şi servirea lor întreţesută pentru optimizare. De asemenea, se poate limita cantitatea de date aferentă unei operaţii POST şi permite compresia fişierelor la upload.
Pentru fiabilitatea sistemului, serverul poate funcţiona într-o arhitectură de tip load-balancing şi dispune de interfaţă grafică web de configurare; din interfaţa web se pot executa comenzi de tip consolă (linie de comandă) asupra serverului care pot oferi informaţii despre:
- Task-urile care rulează curent pe server
- Sesiunile web ale utilizatorilor (câţi sunt conectaţi, durată, câte sesiuni, etc.)
- Ce aplicaţii şi baze de date sunt accesate de useri (prin conexiunile serverului web)
Serverul poate participa într-o arhitectură de autentificare unică (SSO) cu alte servere de web iar serviciile de proces sunt responsabile cu fluxurile de procese. Acestea includ mecanisme de respectare şi gestiune a regulilor domeniului de activitate şi de procesare a deciziilor. Procesele deservite pot fi de durată scurtă, ne-întreruptibile, sau de lungă durată, incluzând combinaţii de servicii puse la dispoziţie prin software şi acţiuni umane. Sistemul poate suporta autentificarea SAML v1.1 şi 2.0.
Compunerea acestor procese rezultă din modelare, iar “executabilul” rezultat se rulează pe motorul de execuţie al proceselor.
Serverul de web permite:
- Crearea de site-uri virtuale (Virtual hosts), iar pe fiecare astfel de site se pot defini:
o Autentificare TCP HTTP: ca Anonim, cu nume&parola, redirectare către SSL
o Autentificare SSL: ca Anonim, cu nume&parola, cu certificate client SSL v2 şi SSL v3
o Rularea de scripturi CGI
o Posibilitatea de filtrare server-side a paginilor cu un filtru şi transferul lor automat către alte server pe baza unor politici de filtrare
o Configurarea de locaţii WebDAV sau echivalent
o Configurarea traficului astfel încât acesta poate fi comprimat cu algoritmi de tip zip
o Configurarea astfel încât să servească informaţiile binare (ex. imagini .gif) în format comprimat automat.
Criptarea folosind SSL v3.0 suporta următorii algoritmi:
- AES cu cheie pe 128bit şi 256bit şi SHA-1 MAC
- RC4 cu cheie pe 40 bit şi 128bit şi MD5 MAC
- RC4 cu cheie pe 128bit şi SHA-1 MAC
- DES cu cheie pe 56bit şi SHA-1 MAC
- Triple DES cu cheie pe 168 biti şi SHA-1 MAC
C. Serverul de aplicaţii
Serverul de aplicaţie are următoarele capabilităţi:
- Capabilităţi de clustering la nivel de aplicaţie, cu distribuţie a sarcinii de lucru în cluster;
- Distribuţia sarcinii de lucru a serverului web;
- Poate oferi şi consuma servicii web, folosind protocoalele SOAP, HTTP;
- Poate oferi şi consuma REST-uri;
- Suport pentru autentificare bazată pe roluri şi pe certificate;
- Limbajele de programare folosite pot genera cod care rulează fără emulatoare şi fără virtualizare pe SO server;
- Permite păstrarea în memorie a codului obiect (gata compilat) pentru aplicaţii şi reutilizarea lui direct din locul unde a fost salvat pentru a elimina eventualele recompilari redundante;
- După generare şi la fiecare modificare, salveaza pe disc codul rezultat după compilare şi îl încarca direct de pe disc fără să fie necesară recompilarea lui;
- Se poate stabili pentru fiecare aplicaţie în parte utilizatori care pot administra complet aplicaţia (inclusiv gestiune acces);
- Se poate stabili pentru fiecare aplicaţie în parte utilizatori/grupuri care pot administra aplicaţia fără posibilitatea de modificare/gestiune acces;
- Pentru autentificare, serverul permite definirea de address book-uri multiple atât native cât şi externe (ex LDAP, Microsoft Active Directory sau Tivoli Directory Server, etc) şi să poată seta o politică de utilizare a lor atât individual cât şi înlănţuit (address book cascadat).
Securitatea aplicaţiilor pe serverul de aplicaţii
- funcţionalităţi Single Sign-On oferind interoperabilitate imbunătăţită între diferite aplicaţii şi medii;
- auditare securitate acţiuni administrative, cum ar fi modificări de configurări de securitate, gestionare de chei şi certificate, modificări de politici de control al accesului, etc;
- administrare a securităţii la nivelul consolei de administrare, cu acces pe bază de drepturi, în funcţie de roluri la nivelul cell, node, cluster sau aplicaţie.
Administrarea serverului de aplicaţii
- administrarea de la distanţă folosind atât client web cât şi client propriu (fără instrumente de tip Remote Desktop); atât administrarea prin client web cât şi cea prin client propriu se face prin conexiuni securizate pe bază de certificate digitale pe min 512 biti şi user+parolă;
- consolă de administrare web-based pentru gestionarea centralizată a tuturor componentelor din topologii ce includ mai multe servere de aplicaţii şi/sau web
Alte caracteristici pentru serverul de aplicaţii
- conţine mecanisme de criptare a informaţiilor stocate
- exista posibilitatea de lucru off-line şi sincronizare;
- exista mecanisme granulare de securitate, la nivele individuale de user, server, aplicaţie, staţie;
- serverul de aplicaţii permite nativ replicarea în întregime a întregului design al unei aplicaţii (cod, machete, rapoarte, fişiere, resurse, etc) între diverse servere de aplicaţie atât manual cât şi programatic pe baza unui task; de asemenea deţine integrat un mecanism de actualizare şi distribuţie design aplicaţii;
- platforma conţine propriul sistem LDAP, fără a fi nevoie de licenţiere suplimentară sau hardware suplimentar, si permită şi integrarea cu alte sisteme LDAP (cum ar fi Microsoft Active Directory sau Tivoli Directory Server sau echivalent);
- Suporta ca mediu de rulare a aplicaţiilor platforma Java;
- Suporte nativ pentru aplicaţiile de pe platformă posibilitatea de aplicare a unei teme unitare, bazate pe un framework de tip Bootstrap.