RIHA (riigi infosüsteemi haldussüsteem)
Käesolev dokument kirjeldab RIHA ja selle vahetu ümbruse:
RIHA pakub riigi infosüsteemi kataloogiteenust:
Vt lähemalt:
Vt:
komponent | avalik URL | repo | funktsioon |
---|---|---|---|
Abikeskus | https://abi.riha.ee | https://github.com/e-gov/RIHA-Help | annab kasutajale abiteavet RIHA kasutamise kohta |
RIHA-Browser | https://github.com/e-gov/RIHA-Browser | RIHA front-end, sirvikus käitatav üheleherakendus | |
RIHA-Storage | https://www.riha.ee/api/v1 | https://github.com/e-gov/RIHA-Storage | RIHA andmehoidla, teenindab oma API kaudu RIHA teisi serveriteenuseid ja laiema “ökosüsteemi” masinkasutajaid, vahendaja PostgreSQL andmebaasi ja HTTPS päringute vahel |
RIHA-Assets | https://varamu.riha.ee/ | https://github.com/e-gov/RIHA-Assets | veebirakendus, mille kaudu tehakse avalikult kättesaadavaks asutustevahelises dokumendivahetuses kasutatavad varad ja ajutiselt (kuni klassifikaatorite mooduli valmimiseni) ka osad klassifikaatorid |
Pääsuõiguste hoidla | - | - | sisekomponent kirjeldajate ja hindajate pääsuõiguste hoidmiseks, suhtlus pääsuõiguste hoidlaga toimub LDAP protokolliga |
komponent | avalik URL | repo | funktsioon |
---|---|---|---|
RIHA-Index | https://arhitektuur.riha.ee | https://github.com/e-gov/RIHA-Index | RIHA arhitektuurikirjeldus |
RIHA-Frontend | https://e-gov.github.io/RIHA-Frontend | https://github.com/e-gov/RIHA-Frontend | kasutajaliidese kujunduslahenduse prototüüp |
RIHA-Experiments | https://github.com/e-gov/RIHA-Experiments | abirepo tehnoloogiate katsetamiseks |
komponent | avalik URL | repo | funktsioon |
---|---|---|---|
RIHA-Watch | https://riha-watch.herokuapp.com/ | https://github.com/e-gov/RIHA-Watch | kuvab viimase 10 päeva jooksul lisatud ja uuendatud infosüsteemid |
Andmebaasimootor. Kasutatakse uusimat Ubuntu LTS-s toetatud PostgreSQL versiooni. Alates versioonist 9.4 on PostgreSQL-l väga hea tugi vaba struktuuriga JSON andmete efektiivseks hoidmiseks ja töötlemiseks (jsonb
tüüpi väljal).
Väljad esitatakse PostgreSQL jsonb
tüüpi nimi-väärtus paaridest koosneva objektina, kus väärtused võivad olla nii lihtväärtused kui omakorda sisemise struktuuriga objektid või massiivid. Selline mahukas jsonb
objekt on klassikalise SQL tabeli mõttes väljal json_content
.
Igal uuel tabelil on lisaks json_content
väljale veel mitmeid klassikalisi SQL välju, mille põhieesmärk on võimaldada kiiremat otsingut, ehk niiöelda puhverdatud väärtused.
Andmebaasi struktuur toetub kahele peamisele tabelile: ülemise taseme tabel main_resource
ja tema komponentide tabel data_object
ning neile lisainfot andvatele tabelitele document
ja comment
.
Lisaks on kasutusel objektitüüpide tabel kind
.
Peamised täiendavat informatsiooni sisaldavad tabelid, mis võivad viidata mistahes main_resource
või data_object
reale, on:
document
- sisaldab üldjuhul ametliku dokumendi (määruse vms) tervet sisu või tema viita kas URLi või failisüsteemi viidana, samuti selle metainformatsiooni: nimi, kehtivusperiood jms.
comment
sisaldab mõne süsteemi kasutaja tekstilist kommentaari või küsimust konkreetse süsteemi või tema osa kohta, koos metainfoga: millal lisati jms.Infosüsteemi kirjeldamine. Infosüsteem esitatakse main_resource
tabelis. Välja kind
väärtus on infosystem
. Kirjelduse põhiosad esitakse json_content
väljal, mis sisaldab mh ka kõiki ülaltoodud SQL-lauses antud klassikalisi välju.
Infosüsteemi püsiv, versioonist sõltumatu identifikaator on uri
, kuhu sisestatakse üldjuhul riha:infosystem:lühinimi
. Hierarhilise põhiobjekti korral viidatakse ülemobjektile parent_uri
välja kaudu, millele lisandub sekundaarse võimalusena versioonitundlik parent_id
juhuks, kui hierarhia versioneerimise käigus muutub.
Infosüsteemi andmekoosseis kirjeldatakse vähemalt ärivaates. Andmekoosseisu kirjeldamine ka tehnilises vaates on soovitatav, kuid mitte kohustuslik.
Andmekoosseisu ärikirjeldus on suunatud infosüsteemis töödeldavate andmete sisulisele kirjeldamisele. Ärikirjeldus on suunatud inimesele, ülevaate saamiseks infosüsteemis hoitavatest andmetest. Ärikirjeldus antakse andmeobjekti, mahuka andmekoosseisu puhul aga andmeobjektide kategooria tasandil ja tavaliselt ei ületa 20..30 elementi. Andmeobjekti või -kategooria kirjeldus koosneb nimetusest ja selgitusest. Ärikirjeldus koostatakse eesti keeles, pöörates erilist tähelepanu täpsele terminoloogiale ja sõnastuste mõistetavusele. Ärikirjeldusi kasutatakse RIHA otsingus infosüsteemide liidestajate poolt.
Andmekoosseisu tehniline kirjeldus on infosüsteemis töödeldavate või hoitavate andmete detailne, otseselt töötlusega seotud kirjeldus, nt andmebaasi detailne skeem.
Tehniline kirjeldus esitatakse ühel järgmistest viisidest: 1) viitena failile; 2) faili üleslaadimisega; 3) viitena API-le.
Tehniline kirjeldus võib olla esitatud SQL andmekirjelduskeele (Data Definition Language) skriptina, CSV-failina või muus formaadis.
Tehniline kirjeldus on suunatud infosüsteemide tehnilisele integraatorile.
Inimkasutaja liides peab võimaldama sujuvad liikumist erinevate vaadete ja rollide vahel. Kujundamisel on aluseks RIHA kujunduslahenduse prototüüp.
RIHA masinliidese (API) standardiseeritud, formaalne kirjeldus on koostatud vastavalt Open API Initiative (endine Swagger) nõuetele.
RIHA kood on avalik.
Kasutajaliidese URL-des järgitakse põhimõtteid:
Andmekvaliteedi saavutamine on RIHAs üks suuremaid väljakutseid. Andmekvaliteeti ei ole võimalik saavutada ainuüksi tehniliste vahenditega. Vaja on ka organisatsiooni, protsessi(de) ja metoodika arendamist.
Selged nõuded. RIHA osaks on protsess, millega identifitseeritakse RIHAs kontrollitavad nõuded, tuuakse need nõuded RIHA kasutajatele ilmutatud kujul välja ja kontrollitakse nõuete põhjendatust ning selgust.
Selge metoodika andmevälja täitmisel. Iga andmevälja täitmisel peab olema selge metoodika ja metoodika peab rakendusest olema kasutajale juhisena kättesaadav.
Hajusalt paigaldatud komponendid, aga samuti ka kesksüsteemi serveriteenused ja veebisirvijas paiknev kasutajarakendus suhtlevad üksteisega REST API-de kaudu.
API-de kaudu pakutakse võimalikult kõike RIHAsse kogutavat teavet.
Kasutatakse API first põhimõtet: kasutajaliideste ehitamisel tehakse samu andmeid töötlev API kas enne kasutajaliidest või vähemalt samaaegselt.
API-de kujundamisel lähtutakse API-de disaini juhise põhimõtetest ja terminoloogiast.
sõltuvus | versioon (kui on oluline) | komponent (eesliiteta RIHA-) |
---|---|---|
Angular | 4 | Browser |
Apache Maven | 3 | kõik Java komponendid |
Bootstrap | 4 | Browser, Help |
Bower | ||
Java 1.8 | OpenJDK | Browser, Storage, Assets |
Jekyll | Help | |
Node.js | 4 | kasutusel testimisel |
OpenLDAP | Browser | |
PostgreSQL | Storage | |
npm | kasutusel testimisel | |
Spring Boot | Browser, Storage | |
Yarn | ||
Ubuntu | 16 LTS |
RIHAs töödeldakse ka vähesel määral isikuandmeid. Isikuandmeid on vaja kaitsta. Eelkõige tuleb tagada, et: 1) hoitakse eesmärkide saavutamiseks minimaalselt vajalikke andmeid; 2) ligipääs tundlikele või eraelulistele isikuandmetele on piiratud. Käesolev jaotis kirjeldab isikuandmete töötluse ja kaitse olulisi äriprotsessilisi ja tehnilisi meetmeid RIHAs.
Isiku rollid RIHAs. Füüsilised isikud suhtestuvad RIHAga järgmistes rollides:
Isikute kohta hoitavad andmed:
Juurdepääs isikuandmetele RIHAs. Kontaktisik saab deklareerida oma andmed avalikult kättesaadavaks (kõik saavad RIHAs vaadata). Seejuures kontaktandmetele pääsevad ligi ainult autenditud töötajad. Kirjeldaja kohta näevad teavet ainult tema ise ja järgmised kirjeldajad.
Isikuandmete ajakohasuse tagamine. Edasiarendusvõimalus: Päringuga üle X-tee riigi personali- ja palgaarvestuse andmekogusse (SAP) kontrollitakse, kas kirjeldaja ja kontaktisik on asutusega seotud. Seda kontrolli tehakse nii uute kirjeldajate ja kontaktisikute lisamisele kui ka perioodiliselt andmete ajakohasuses tagamiseks.
Mõisted:
Tõrkekindluse saavutamise peamised meetodid on:
Vt:
‘No State To Share’. Serveriteenused tuleb projekteerida nii, et serveriteenuse paigaldamisel mitmes instantsis ei teki vajadust olekut (state) instantside vahel jagada.
,-.
`|'
/|\ Kasutaja
|
/ \
Veebisirvija +------------------+
| Kasutajarakendus |
| |
+--------+---------+
|
päring | HTTPS
v
Koormusjaotur F5
+ +
| |
--------+ +-----+
V V
+-----------+ +-----------+
|Serveri+ | |Serveri- |
|teenus | |teenus |
|Instants 1 | |Instants 2 |
+-----+-----+ +-----+-----+
| |
+-------+ +-----+
| |
V V
+---------------+
| |
| Andmehoidla |
| |
+---------------+
Kõrgkäideldavus andmehoidlas. Kõrgkäideldavus on oluline ka andmehoidlas, sest andmehoidla tõrge võib tingida vajaduse andmehoidla varukoopiast taastada. Taastamine võib võtta aega, samuti läheksid kaduma pärast viimast varundamist tehtud muudatused. Toetatud tehnoloogiatest on kõrgkäideldavust kõige lihtsam saavutada PostgreSQL andmebaasis. Vt:
Teostatud RIA taristus paigaldatud OpenLDAP serveri ja LDAP kliendi abil. Detailide kohta otsi vastavaid JIRA ticketeid.
RIHA ISKE turvaklass on K2T2S2 ja turvatase on M.
Käideldavus (K). Käideldavuse nõue K2 on suuresti tingitud isikuandmete kaitse seadusest §25 ning RIA-sisesest teenustasemeleppest (edaspidi SLA).
Terviklus (T). Tervikluse nõue T2 on tingitud infosüsteemide andmevahetuskihi määrusest.
Konfidentsiaalsus (S). Olemasoleva RIHA S1 tase on põhjendatud sellega, et RIHA sisaldab infot asutusesiseseks kasutamiseks, juurdepääs teabele on lubatav juurdepääsu taotleva isiku õigustatud huvi korral.
RIHA S2 tase on põhjendatud sellega, et RIHA sisaldab avalikku infot, infot asutusesiseseks kasutamiseks ning teavet, mille kasutamine on lubatud ainult teatud kindlatele kasutaja gruppidele ning juurdepääs teabele on lubatav juurdepääsu taotleva isiku õigustatud huvi korral. Ligipääse haldab RIHA teenusehaldur või infosüsteemide omanikud, asutused ise. AK tasemega on näiteks isikuandmed ja tehnilist kirjeldust sisaldav dokumentatsioon.
Riigi Infosüsteemi Amet · 2017-2018 · https://github.com/e-gov/RIHA-Index