Autentimisteenus TARA · Ärikirjeldus · Tehniline kirjeldus · Viited
TARA-Stat on mikroteenus autentimisteenuse TARA kasutusstatistika tootmiseks ja vaatamiseks.
Käesolev dokument esitab tarkvara kirjelduse ja juhised tarkvara paigaldamiseks, hooldamiseks ja kasutamiseks.
Dokument on mõeldud TARA-Stat paigaldajale, käitajale ja kasutajale.
TARA-Stat-i on arendanud Riigi Infosüsteemi Amet.
Tähistused:
<tara-stat>
(TARA-Stat masina domeeninimi)<tara-stat-https-port>
(TARA-Stat veebirakenduse HTTPS serveri pordinumber)<tara-stat-tls-port>
(TARA-Stat veebirakenduse Syslog TCP TLS serveri pordinumber)TARA-Stat pakub:
Üldistatud arhitektuurijoonis (pordinumbrid on näitlikud):
TARA-Stat kasutajaliides statistikakasutajale:
TARA-Stat koosneb kahest komponendist:
komponent | tehniline nimi | otstarve |
---|---|---|
veebirakendus | tarastat |
Node.js rakendus, mis ühelt poolt võtab vastu logikirjed ja salvestab need logibaasi. Teiselt poolt arvutab kasutusstatistika ja esitab seda statistikakasutajale. Koosneb omakorda serveripoolsest osast ja kasutaja sirvikusse laetavast osast |
logibaas | mongod |
MongoDB andmebaas, kuhu salvestatakse logikirjeid |
Komponente käitatakse ühes masinas, Linux-i teenustena.
TARA-Stat-l on neli liidest:
liides | URL või nimi | otstarve |
---|---|---|
logikirje lisamise liides (otspunkt) | <tara-stat>:<tara-stat-tls-port> |
TCP otspunkt, mille kaudu TARA-Stat võtab TARA-Server-lt vastu logikirjeid |
statistika väljastamise (otspunkt) | https://<tara-stat>:<tara-stat-https-port>/stat |
HTTPS veebiliides, mille kaudu statistikakasutaja tutvub kasutusstatistikaga |
logibaasi haldamise liides | mongo |
MongoDB käsureaklient, millega vajadusel saab puhastatada logibaasi aegunud kirjetest ja teha muud haldust |
elutukse liides | https://<tara-stat>:<tara-stat-https-port>/status |
HTTPS otspunkt, millelt saab pärida kinnitust TARA-Stat elusoleku kohta |
TARA-Stat suhtleb 5 välise osapoolega.
väline osapool | selgitus |
---|---|
statistikakasutaja | autentimisteenust TARA käitava organisatsiooni teenistuja - teenusehaldur või tootejuht- kes vajab teavet teenuse kasutamise mahu, sh trendide kohta. Statistikakasutajale tuleb pakkuda statistikat. Eriti vajalik on teave teenuse tarbimismahtudest klientrakenduste lõikes. Statistikakasutajal peab olema võimalik ette anda periood, mille kohta statistika arvutatakse. Statistikakasutajal ei tohi olla võimalust logi muuta. Kuna statistika on üldistatud ega sisalda isikuandmeid, lähtume statistika otspunkti turvamisel, et otspunkt on avatud organisatsiooni sisevõrgus, kõigile töötajatele. |
TARA-Server | saadab TARA-Stat-i logikirjeid. TARA-Server võib olla paigaldatud mitmes instantsis. |
andmehaldur | inimene, kes, kasutades MongoDB standardvahendit - käsurealiidest mongo - saab vajadusel logibaasist aegunud kirjeid kustutada. Aegunud logikirjeid saab kustutada ka statistikakasutaja. Seetõttu see roll on varuvõimalus. |
admin | inimene, kes paigaldab tarkvara, loob andmebaasi kasutajatele (TARA-Server, andmehaldur) kontod ja annab pääsuõigused. |
monitooringusüsteem | saab TARA-Stat-le saata “elutuksepäringu”. TARA-Stat vastab, kas ta toimib. |
Logikirje lisamise otspunkt võtab TARA-Serverilt vastu Syslog vormingus kirjeid autentimissündmuste kohta. Logikirje tuum on JSON-vormingus.
Kirje:
TCP
protokolliga URL-ile <tara-stat>:<tara-stat-tls-port>
, kus <tara-stat>
on TARA-Stat-i domeeniniminewline
(0x0a0
)1) autentimise alguse sündmuse logimisel:
{
"time" : "<kuupäeva formaat>",
"clientId" : "openIdDemo",
"method" : "banklink",
"bank" : "SEB",
"operation" : "START_AUTH"
}
2) autentimise eduka lõpu logimisel:
{
"time" : "<kuupäeva formaat>",
"clientId" : "openIdDemo",
"method" : "banklink",
"bank" : "SEB",
"operation" : "SUCCESSFUL_AUTH"
}
3) autentimise ebaeduka lõpu logimisel:
{
"time" : "<kuupäeva formaat>",
"clientId" : "openIdDemo",
"method" : "banklink",
"bank" : "SEB",
"operation" : "ERROR",
"error" : "INTERNAL_ERROR",
}
time
, clientId
, method
ja operation
peavad saadetavas päringus olema alati. bank
on kohustuslik ainult juhul kui tegemist on pangalingi kirjega (method
väärtus on banklink
). Kui mõni neist on puudu, siis tagastab TARA-Stat veateate Valesti moodustatud logikirje
. Element error
ei ole kohustuslik; see lisatakse TARA-Stat-i ainult siis, kui operation
väärtus on ERROR
.TARA-Stat võtab saadetud kirjest olulised väljad, moodustab nendest logikirje ja salvestab logibaasi (MongoDB).
Logibaasi salvestatakse kirje vormingus:
{
"time": "<ISO 8601 kuupäev>",
"clientID": "<klientrakenduse nimi>",
"method": "<autentimismeetod>",
"bank": "<panga kood>",
"operation": "<sündmuse koodnimetus>",
"error": "<veateade>"
}
kus:
ISO 8601 kuupäev
on ajatempel kujul 2018-04-28
, millele võib järgneda kellaaja osaSTART_AUTH
- autentimine alanudSUCCESSFUL_AUTH
- autentimise edukas lõppERROR
- autentimise ebaedukas lõppoperation
väärtus ERROR
).Statistika väljastamise otspunkti e statistikakasutaja UI kaudu saab kasutaja tutvuda TARA kasutusstatistikaga.
https://<tara-stat>/stat:<tara-stat-https-port>
2018-04
valib 2018. a aprilli logikirjedSamas saab ka aegunud logikirjeid kustutada. See toimub perioodi etteandmisega. Enne kustutamist küsitakse kinnitust. Selline kustutamine on otstarbekas, kuna tõendusväärtus ega pikaajalisem säilitamine pole kasutusstatistika logi puhul eesmärk.
TARA-Stat paigaldamiseks ja käitamiseks on vaja järgmisi võtmeid ja salasõnu (saladusi):
kasutaja vm õiguste subjekt (principal) | selgitus | kredentsiaali(de) tüüp | kus määratakse või kuhu paigaldatakse | kus kasutatakse |
---|---|---|---|---|
admin |
Ubuntu kasutaja, kes paigaldab tarkvara ja teeb muid haldustoiminguid | salasõna | määratakse VM op-süsteemi paigaldamisel | adminitoimigutes VM-is |
tarastat |
Ubuntu kasutaja, kelle alt käivitatakse TARA-Stat veebirakendus | salasõna | TARA-Stat veebirakenduse seadistamisel | TARA-Stat veebirakenduse käitamisel |
mongod |
Ubuntu kasutaja, kelle alt käitatakse MongoDB andmebaas | salasõna | MongoDB paigaldamisel | MongoDB käitamisel |
userAdmin |
MongoDB kasutaja, kes haldab MongoDB kasutajaid. Seda rolli täidab VM admin | salasõna | MongoDB paigaldamisel | MongoDB kasutajakontode haldamisel |
rakendus |
TARA-Stat veebirakenduse konto MongoDB-s | salasõna | määratakse MongoDB paigaldamisel, kantakse ka TARA-Stat veebirakenduse konf-i | TARA-Stat-i poolt pöördumisel MongoDB poole |
andmehaldur |
MongoDB konto, mille alt kustutatakse aegunud logikirjeid. Andmehalduri rolli täidab VM admin | salasõna | MongoDB paigaldamisel | MongoDB logibaasi haldamisel |
https://<tara-stat> |
TARA-Stat veebirakendus HTTPS serverina | organisatsiooni CA poolt väljaantud või self-signed sert ja privaatvõti | TARA-Stat veebirakenduse seadistamisel | Sirviku pöördumisel TARA-Stat-i poole |
TARA-Stat TCP TLS server |
TARA-Stat veebirakendus TCP TLS serverina | self-signed sert ja privaatvõti | TARA-Stat veebirakenduse seadistamisel | TARA-Serveri pöördumisel TARA-Stat-i poole |
Statistikakasutaja on TARA-Stat-i suhtes anonüümne inimene. Ta pöördub sisevõrgust TARA-Stat veebirakenduse statistika väljastamise otspunkti poole. Statistikakasutajat ei autendita, juurdepääs piiratakse kontekstiga.
Kaustastruktuur
/opt/tara-stat
/tara-stat -- TARA-Stat rakendus
index.js -- TARA-Stat veebirakendus
/config/
/config.js -- TARA-Stat konf-ifail
/keys -- kaust TARA-Stat võtmete ja
sertide hoidmiseks
https://github.com/e-gov/TARA-Stat
– avalik koodirepo` docs` - avalik dokumentatsioon
/opt/tara-stat/tara-stat/log.txt
– TARA-Stat veebirakenduse logi/lib/systemd/system/tarastat.service
– TARA-Stat veebirakenduse systemd haldusüksuse kirjeldusfail
/etc/mongod.conf
– MongoDB konf-ifail/var/log/mongodb/mongod.log
– MongoDB logivar/lib/mongodb
– MongoDB andmebaasifailid/lib/systemd/system/mongod.service
– MongoDB systemd haldusüksuse kirjeldusfailTootmissõltuvused:
sõltuvus | versioon | selgitus, sh milleks vajalik |
---|---|---|
backend: | ||
Ubuntu | 16 LTS | suure tõenäosusega sobib ka hilisem |
Node.js | 8.x | veebirakenduse platvorm |
body-parser | standardne | HTTP päringu parsimisvahend, kasutusel veebirakenduses |
ejs | standardne | templiidimootor, kasutusel veebirakendus |
express | standardne | HTTP päringute marsruuter, kasutusel veebirakendus |
rwlock | standardne | lukuhalduri teek, kasutusel veebirakenduses |
mongod | standardne | MongoDB klient, kasutusel veebirakenduses |
MongoDB | 4.0.4 | logibaas |
frontend: | ||
HTML5, CSS3, Javascript | ||
jQuery | ||
Material Design ikoonid |
Arendussõltuvused:
sõltuvus | versioon | selgitus, sh milleks vajalik |
---|---|---|
GitHub | avalik koodirepo | |
Jekyll | avaliku dok-ni publitseerimine |
Märkus. “Standardne” tähendab laialt kasutatavat, stabiilset teeki, millest npm
abil paigaldatakse viimane versioon. Kui versioon on tühi, siis kasutatakse standardseid võimalusi, mis ei nõua sidumist konkreetse versiooniga.
Konfigureeritakse järgmiste failidega:
fail | eesmärk ja kasutamine |
---|---|
/opt/tara-stat/config/config.js |
veebirakenduse konf-n. |
/opt/tara-stat/config/keys |
veebirakenduse konf-n. |
/etc/mongod.conf |
MongoDB konf-n. Kasutatakse MongoDB distributsiooni vaikimisi konf-i. Käsitsi konf-mine on vajalik siis, kui tahetakse muuta tundlike taristuparameetrite vaikeväärtusi (nt porti). |
TARA-Stat konfiguratsiooni hoitakse eraldi, mitteavalikus repos.
TARA-Stat paigaldatakse ühes instantsis, ühte masinasse. Kõrgkäideldavus ei ole TARA-Stat praeguses teostuses eesmärk. Tõrke korral tekib küll statistikas auk, kuid ärivajaduse rahuldamiseks on aktsepteeritav ka mõneti lünklik statistika.
Paigalduse üldine käik:
Täpsem teave ei ole avalik.
Vaja on tagada:
TARA-Stat kuulab HTTPS ühendusi pordil
Nii TARA-Stat veebirakendus kui ka MongoDB käitatakse systemd hallatavate teenustena. Teenused käivitatakse ja seisatakse standardsete systemctl
käskudega, nt:
sudo systemctl start mongod
(käivita teenus mongod
)
sudo systemctl stop tarastat
(peata teenus tarastat
)
Teenuste tarastat
ja mongod
käivitamise järjekord ei ole oluline. Kuid peab arvestama, et tarastat
sõltub mongod
-st - kui logibaas ei ole üleval, siis ei saa logikirjeid salvestada ega statistikat väljastada.
Päringu https://<tara-stat>/status
saamisel kontrollib TARA-Stat oma logibaasi ülevalolekut. Kui logibaas on üleval, siis tagastatakse HTTP vastus 200
OK
,
vastasel korral 500
Internal Server Error
.
TARA-Stat ülevalolekut saab lõppkasutaja seisukohast kontrollida nii:
https://<tara-stat>:<tara-stat-https-port>
.Märkus. Kui rakendus peaks teatama, et ühendus ei ole turvaline, siis see on tingitud self-signed serdist. Aktsepteeri turvaerind. Ilmub rakenduse avaleht. Kui paigaldatud on organisatsiooni CA poolt väljaantud sert, siis teadet ei tule.
TARA-Stat masinas saab teenuste tarastat
ja mongod
ülalolekut kontrollida:
systemctl status tarastat
(kuva teenuse tarastat
staatus)
systemctl status mongod
(kuva teenuse mongod
staatus)
Probleemide lahendamiseks saab kasutada teenuse enda logisid (vt jaotis “Olulised asukohad”):
sudo journalctl -u tarastat
(tarastat
koondlogi vaatamine vahendiga journalctl
)
tail /opt/tara-stat/tara-stat/log.txt
– TARA-Stat veebirakenduse logi
tail /var/log/mongodb/mongod.log
(andmebaasisüsteemi logi)
Kui tekib vajadus välja selgitada, mis seisus on MongoDB andmebaasi sisu või või logibaasi tühjendada, siis tee järgmist:
mongo -u andmehaldur -p changeit -authenticationDatabase users;
(ava MongoDB käsureavahend, logides sisse kasutajaga andmehaldur
)
(kui autentimine pole sisse lülitatud, siis lihtsalt mongo
)
use logibaas
(lülitu logibaasile)
show collections
(peab näitama: autentimised
)
db.autentimised.count()
(kuva kirjete arv logibaasis)
db.autentimised.find().sort({_id:1}).limit(5);
(kuva 5 viimast kirjet)
db.autentimised.remove({})
(tühjenda logibaas)
exit
(välju CLI-st)
Andmebaasi kasutajate haldamiseks tuleb käsureavahendisse sisse logida administraatorina:
mongo -u userAdmin -p changeit -authenticationDatabase admin
(ava MongoDB käsureavahend, logides sisse kasutajaga userAdmin
)
show dbs
(kuva andmebaasid. Loetelus peab olema admin
ja logibaas
)
use admin
(lülitu andmebaasile admin
)
show users
(kuva kasutajakontod valitud andmebaasis; peab näitama kasutajat admin
)
use users
(lülitus andmebaasile users
)
show users
(kuva kasutajakontod andmebaasis users
; peab näitama kasutajaid andmehaldur
ja rakendus
)
db.auth("andmehaldur", "changeit")
(logi sisse andmehaldurina)
Vaata lisaks:
TARA-Stat kasutajaliides on avatud ainult asutuse töötajatele.
Sirvikus ava https://<tara-stat>:<tara-stat-https-port>
.
Testimisvahendeid toodangus ei kasutata. Neid võib repo sisuga koos tootmismasinasse kopeerida, kuid neid ei ole vaja (ega tohigi) skriptidega ega muul viisil aktiveerida.
LogikirjeteSaatmiseTest.js
on lihtne Node.js rakendus, mis etendab logikirjeid TARA-Stat logibaasi saatvat TARA-Server-it.
Testrakendus kasutab TARA-Stat konf-ifaili config.js
ja võtmeid.
Testrakenduse võib käivitada TARA-Stat-ga samas masinas.
Soovi korral võib testrakenduse paigaldada eraldi masinasse. Selleks tuleb täita kõik ülalkirjeldatud paigaldussammud, v.a MongoDB paigaldamine.
Testrakenduse käivitamiseks sisesta:
cd /opt/tara-stat/tara-stat/TEST
nodejs LogikirjeteSaatmiseTest
Iga käivitamisega genereeritakse juhuslikult teatud arv logikirjeid ja saadetakse TARA-Stat logibaasi.
TARA-Stat-is on rakendatud järgmised turvavalikud.
rakendus
). Andmebaasikasutaja autenditakse. Kasutusel on MongoDB vaikimisi autentimismehhanism - soolaga salasõna põhine.tarastat
ja mongod
).Kaitse on rakendatud ohuvektorile: rakenduse kokkujooksmine vales vormingus andmete saatmisel logikirjete vastuvõtmise otspunkti (puhvri ületäitumine eraldajateta kirjete puhul; viga JSON-kirje parsimisel).
Vajadusel vt taustaks:
TARA-Stat-i võib logikirjeid saata mitu TARA-Serveri instantsi.
TARA-Stat ise ei ole mõeldud mitmes instantsis paigaldamiseks. Mitmes instantsis paigaldamine oleks küll võimalik, kuid kasutusstatistika koguneks siis instantside kaupa.
Sirviku teated:
teade v käitumine | võimalik põhjus |
---|---|
connection refused |
rakendus on maas |
Veebirakenduse veateated:
kood | veateade | vea lahendamise soovitus |
ERR-01 | Logibaasiga ühendumine ebaõnnestus | Kas MongoDB töötab? Kas TARA-Stat veebirakendus on logibaasiga ühendumiseks seadistatud? |
ERR-02 | Viga logibaasist lugemisel | Kas MongoDB töötab? |
ERR-03 | Valesti moodustatud logikirje | Kontrollida logikirje saatmist TARA-Serveris |
ERR-04 | Logibaasi poole pöörduja autentimine ebaõnnestus | Kontrollida API kasutajanime ja võtit |
ERR-05 | Kirjutamine logibaasi ebaõnnestus | Kontrollida kettamahtu ja kirjutamisõigusi |
ERR-06 | Kustutamine ebaõnnestus | Pöördu rakenduse halduri poole |
Riigi Infosüsteemi Amet · 2018-9 · https://github.com/e-gov/TARA-Stat