Tag Archives: NIIS

X-Road REST tugi

X-Roadi REST toe kohta on ilmunud üksjagu ingliskeelseid artikleid, peamiselt NIISi (Nordic Institute for Interoperability Solutions) tehnoloogiajuhi Petteri Kivimäki sulest. Soovitan huvilistel kindlasti nendega tutvuda siin: https://www.niis.org/blog-summary. Sellegipoolest pidasin vajalikuks kirjutada ka lühikese emakeelse ülevaate, mida tähendab REST tugi X-Roadil ning mida tähendab see Eesti X-tee ökosüsteemi jaoks.

Natuke ajalugu ja ülevaadet

X-Roadi REST toe analüüsi ja disainiga hakati pihta 2018. aasta kevadel, kui toimusid küsitlused ning töötoad. Esimene REST toega X-Road versioon oli 6.21.0, mis tuli välja 2019. aasta mais. Esimesel versioonil olid mõned puudused, näiteks ei toetanud see turvaserveri OpenAPI abil teenuste kirjeldamist. Täielikum REST tugi tuli 2019. aasta oktoobris versioonis 6.22.0. Selles on juba võimalik teenuseid OpenAPI 3.0 abil kirjeldada, nende pääsuõiguseid teenusekaupa hallata. Lisaks tekkis ka REST metateenuste tugi (listMethods – näita kõiki teenuseid; allowedMethods – näita lubatud teenuseid; getOpenAPI – näita teenuse OpenAPI kirjeldust).

Olulised märkused X-Roadi REST toe kohta

SOAP ja REST protokollid on paralleelsed ning tõlkimist ei toimu.
  • X-Roadi REST ja SOAP protokollid on paralleelsed ning tõlkimist ei toimu. See tähendab, et kui teenusepakkuja soovib nii REST kui SOAP teenuseid pakkuda, tuleb rakendada mõlemat.
  • REST teenuseid saab turvaserveri kaudu publitseerida, kasutades OpenAPI 3.0 kirjeldust või URLi kaupa.
  • Teenusepakkuja poolel ei vaja REST teenused täiendusi, et neid X-Roadiga liidestada.
  • Kliendi poolel üle X-Roadi REST teenuseid tarbides tuleb URLiks kasutada teenuse X-Road identifikaatorit ning lisada X-Road-Client päis.
  • Võib kasutada mis iganes tüüpi päringu keha (XML, JSON jne).

Täpse protokollikirjelduse leiab siit: https://github.com/nordic-institute/X-Road/blob/develop/doc/Protocols/pr-rest_x-road_message_protocol_for_rest.md#4-message-format.

Käed külge ehk vaatame lähemalt, kuidas X-Roadi REST tugi praktikas välja näeb

X-Road Playground

X-Road Playground (https://x-road.global/xroad-playground) on avalik, eelkonfigureeritud X-Roadi instants, kus igaüks saab serveritesse sisse logida, vaadata kasutajaliideseid ning proovida teenuste kasutamist. Seal on kaks turvaserverit, üks kliendi ja teine teenusepakkuja jaoks.

curl -X GET -H 'X-Road-Client: PLAYGROUND/COM/1234567-8/TestClient' -i 'http://testcomss01.playground.x-road.global/r1/PLAYGROUND/GOV/8765432-1/TestService/XRoadStatistics/instances/EE'
HTTP/1.1 200 OK
Content-Type: application/json
Date: Mon, 16 Mar 2020 19:14:58 GMT
x-amzn-RequestId: bfba3f8e-1320-4cd4-90af-1d9f72c215f0
Access-Control-Allow-Origin: *
x-amz-apigw-id: Jf134ErGliAFpsQ=
X-Amzn-Trace-Id: Root=1-5e6fd032-111f48f9d6707fee6941f1bc;Sampled=0
X-Cache: Miss from cloudfront
Via: 1.1 2dd06bdee724b9634ae1c7344568391c.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: LHR3-C1
X-Amz-Cf-Id: -z4xR3eB60A7T2iDIBHhdfQ3gnCFpykjp5iQarKBzYfO2Jrbhy5iAw==
x-road-id: PLAYGROUND-211fbfe2-6cc5-42e8-9a48-6597beeed41f
x-road-client: PLAYGROUND/COM/1234567-8/TestClient
x-road-service: PLAYGROUND/GOV/8765432-1/TestService/XRoadStatistics
x-road-request-id: d6de009b-6fa7-4e6d-bfa2-257ee31a7662
x-road-request-hash: 7QHt+NycbfDzGeYIYuC+fFlLHP6GrJk7aYmxNSy+463mtHKm3ZfAbrsvwbwEzI4aqWyNH/1xSj/wrE+J4w7ElQ==
Content-Length: 277

{"memberClasses":[{"memberClass":"GOV","memberCount":190},{"memberClass":"COM","memberCount":420},{"memberClass":"NGO","memberCount":40},{"memberClass":"NEE","memberCount":12}],"instanceIdentifier":"EE","date":"2020-03-15","subsystems":1105,"securityServers":174,"members":662}%

Võtame selle päringu tükkideks.

  • http://testcomss01.playground.x-road.global/r1/ on kliendi turvaserveri REST liides.
  • PLAYGROUND/GOV/8765432-1/TestService/XRoadStatistics/instances/EE on tarbitava teenuse identifikaator, kus PLAYGROUND on X-Road instants (X-tee toodangukeskkond on näiteks “EE”)
    • GOV on memberClass
    • 8765432-1 on memberCode (X-tee puhul tavaliselt registrikood)
    • TestService on alamsüsteemi kood
    • XRoadStatistics on teenuse kood
    • instances/EE on REST API liides, kus on öeldud, et “EE” on instants, mille kohta statistikat tahame
  • ‘X-Road-Client: PLAYGROUND/COM/1234567-8/TestClient’ on päringu päis, mis sarnaselt URLi loogikaga defineerib kliendi alamsüsteemi, mille kaudu päringu sooritame.

Muud X-Road päised tagastab teenusepakkuja turvaserver omast tarkusest, teenusepakkuja infosüsteemil pole vaja nende pärast muretseda.

Siin on turvaserveris näha teenust, mida just välja kutsusime

Standalone Security Server Docker image

Järgmine samm oleks proovida ise mõnd REST teenust X-Roadiga liidestada. Standalone Security Server Docker image [KR1] [JŠ2] (https://hub.docker.com/r/niis/xroad-security-server-standalone) on spetsiaalne turvaserveri image, mis ongi katsetamiseks mõeldud. See on eelkonfigureeritud ning pakub lihtsat viisi proovida mõnd teenust turvaserveriga liidestada. Selle kasutamiseks on vajalik, et arvutisse oleks paigaldatud Docker. Juhendi Dockeri paigaldamiseks leiab siit: https://www.docker.com/products/docker-desktop.

Laeme alla image’i ning käivitame selle.


docker pull niis/xroad-security-server-standalone
docker run -p 4000:4000 -p 80:80 --name ss niis/xroad-security-server-standalone:latest
2020-03-16 19:38:52,426 INFO exited: xroad-autologin (exit status 0; expected)

Kui see jõuab järgmise reani, saab turvaserveri kasutajaliidesesse sisse logida aadressil https://localhost:4000. Kasutajanimi on “xrd” ja parool on “secret”.

Turvaserverisse on registreeritud kaks alamsüsteemi:

  • CS/ORG/1111/TestClient
  • CS/ORG/1111/TestService

Proovime nüüd selle turvaserveriga liidestada avaliku Petstore REST API: http://petstore.swagger.io:8080/ ning seejärel teha X-Roadi kaudu päringut selle pihta.

Kõigepealt lisame TestService alamsüsteemile teenuse ja aktiveerime selle. Kasutame selleks Petstore OpenAPI 3.0 kirjeldust, mis asub siin: http://petstore.swagger.io:8080/api/v3/openapi.json.

Seejärel anname CS/ORG/1111/TestClient alamsüsteemile õiguse teenuseid kasutada. Siin saaks liideste ja meetodite kaupa õiguseid anda, aga lihtsuse huvides anname kõigele.

Nüüd on alamsüsteemil CS/ORG/1111/TestClient õigus seda teenust kasutada. Proovime ühe lemmiklooma tellimuse esitada, kasutades POST store/order teenust.

Swaggeri kaudu saame info, kuidas teenust otse välja kutsuda

curl -X POST "http://petstore.swagger.io:8080/api/v3/store/order" -H "accept: application/json" -H "Content-Type: application/json" -d "{\"id\":10,\"petId\":198772,\"quantity\":7,\"shipDate\":\"2020-03-16T19:53:23.676Z\",\"status\":\"approved\",\"complete\":true}"

Turvaserveri kaudu päringu tegemiseks peame muutma URLi, et pöörduda turvaserveri REST liidese pihta ning defineerima seal teenuse, mille poole pöörduda. Ehk URLiks saab:

http://127.0.0.1:80/r1/CS/ORG/1111/TestService/pets/store/order

Lisaks on meil päises vaja defineerida alamsüsteem, mille kaudu päringu sooritame:

X-Road-Client: CS/ORG/1111/TestClient

Päring ja vastus näevad välja sellised:

curl -X POST "http://127.0.0.1:80/r1/CS/ORG/1111/TestService/pets/store/order" -H "X-Road-Client: CS/ORG/1111/TestClient" -H "accept: application/json" -H "Content-Type: application/json" -d "{\"id\":10,\"petId\":198772,\"quantity\":7,\"shipDate\":\"2020-03-16T19:53:23.676Z\",\"status\":\"approved\",\"complete\":true}"
{"id":10,"petId":198772,"quantity":7,"shipDate":"2020-03-16T19:53:23.676+0000","status":"approved","complete":true}%

Kokkuvõte

Nagu näha, ei ole REST teenuste X-Roadiga liidestamiseks lisaarendusi vaja teha. Ka kliendi poolel on vajalikud täiendused minimaalsed.

Praegu paistab X-teel toodangukeskkonnas 4078 SOAP teenust ning 0 REST teenust (andmed siit: https://x-tee.ee/catalogue/EE) . Kas see tähendab, nüüd peaks hakkama vanu teenuseid RESTful teenusteks ümber arendama? Ei. SOAP tugi ei ole kuhugi kadumas. Siin on mõned ideed REST teenuste arendamiseks:

  • Kui planeerite uue infosüsteemi või uute teenuste arendust, siis kaaluge RESTful teenuste arendamist – need saab X-teele publitseerida lisaarendusteta ning nii teie kui ka teie klientide arendajad tänavad teid.
  • Kui teil on juba RESTful teenuseid, mis on X-teega liidestatud adapteri abil, siis kaaluge nende X-teele publitseerimist paralleelselt SOAP teenustega.
  • Suhelge oma klientidega ning uurige nende soove ja vajadusi.

Kuigi X-Road ise ei tõlgi REST ↔ SOAP sõnumeid, siis NIIS pakub lihtsat adapterit, mis piiratud kasutusjuhtudel võib hädast välja aidata: https://github.com/nordic-institute/REST-adapter-service.

Kui soovid olla rohkem kursis X-Roadi arengutega, siis selleks on mitu võimalust.

NIISi sotsiaalmeedia

NIISi GitHub

Saad ka liituda X-Road kogukonnaga

NIISi koduleht

Kui sa soovid detailsemalt infot X-Roadi kohta, siis saad luua endale konto NIISi Jiras ning jälgida sprinte

Jürgen Šuvalov
X-tee tootejuht

Ülevaade X-Roadi kogukonnaüritusest Helsingis

Eesti kui digiriigi edu sõltub paljuski X-teest, mis võimaldab riigiasutustel ja ettevõtetel efektiivselt ja turvaliselt andmeid vahetada. X-tee on juba aastaid Eesti müügiartikkel ning riigid üle maailma kas juba kasutavad sama tarkvara või astuvad samme, et see kasutusele võtta. 6. septembril Helsingis sai Eestist alguse saanud kogukond kokku. Ürituse ülevaate kirjutas X-tee tootejuht Jürgen Šuvalov.

Septembri esimese reede varahommikul moodustasid suure osa Tallink Mega Stari Comfort Lounge külalistest X-Road Community liikmed. Tunne oli nagu tegemist oleks suguvõsa kokkutulekuga – kohal olid muuhulgas Heiko Vainsalu ja Riho HiiepuuRoksnetist, Tuuli Pärenson Goforest, Marko Valing ja Karl Talumäe Planetwayst, Andres Kütt Proud Engineersist ja suurem osa RIA andmevahetuse osakonnast. Meiega oli kaasas ka Martin Undusk, kes oli muide esimene X-tee tootejuht RIAs (kuni 2012. aastani). Üritus toimus Clarion Hotel Helsinkis ning seda korraldas Nordic Institute for Interoperability Solutions (NIIS). Üritusel oli 150 osalejat 22 riigist.

Ürituse programm

Üritus algas keynote’idega. NIISi CTO ehk tehnoloogiate juht Petteri Kivimäki tutvustas NIISi arendusmudelit ja X-Roadi teekaarti. X-Road versioon 6 teekaardil on märkimisväärsemateks arendusteks uus REST API-l põhinev kasutajaliides ja REST sõnumiprotokolli täiendamine. Järgmine aasta algab X-Road versioon 7 “Unicorn” arendus ning uue versiooni olulisemateks märksõnadeks on:

  • kasutusmugavus
  • uued teenuste kasutamise ja pakkumise viisid (nt Pub/Sub)
  • modulaarsus ja skaleeritavus
  • pilveteenuste tugi
  • ühilduvus EU koosvõime initsiatiividega

NIISI CDO ehk disaini juht Geroli Peedu tutvustas X-Road v7 loomiseks kasutatavat kasutajakeskset teenusdisaini. 


Petteri Kivimäki tutvustamas X-Road teekaarti

Geroli Peedu rääkimas kasutajakesksest disainist

Pärast teda astus lavale Planetway Europe tehnoloogiate juht (CTO) Masakazu Ohtsuka. Planetway on erasektori ettevõtte, kes muuhulgas pakub Jaapani erasektorile X-Roadil põhinevat PlanetCross teenust. Masakazu tutvustas Planetway loodud X-Roadil põhinevat nõusolekuteenust. Ettekanne sisaldas ka live demo, kus kasutaja sai anda telefoni rakenduse kaudu nõusoleku kinnisvaraettevõttele oma andmete küsimiseks teisest kinnisvaraettevõttest.

Eleringi digitaliseerimise arendusjuht Georg Rute tutvustas Estfeedi. Estfeed ühendab energia andmelaod ning võimaldab energiamüüjatel ja teistel teenustel saada ligi tarbijate mõõteandmetele ühest kohast, pakkudes võimalust jaeturud ühendada. Estfeed baseerub X-Roadil andmevahetuse turvalisuse ja jälgitavuse tagamiseks ning lisab X-Roadile vajaliku funktsionaalsuse, et kodanik saaks anda nõusoleku oma andmete jagamiseks. Elering tahab Estfeedi üle Euroopa skaleerida ning isikuandmete kaitse üldmäärus GDPR, peagi jõustuv Puhta Energia Pakett ja noorte loodussõbralikumad tarbimiseelistused loovad eelduse, et turul tekiks sellise teenuse järele nõudlus.


Masakazu Ohtsuka tutvustamas Planetway nõusolekuteenust 

Georg Rute tutvustamas Estfeedi

Paneelarutelul räägiti piiriülese andmevahetusest kasutuslugudest ja õppetundidest. Ville Hyyryläinen tutvustas Emonumi, mis keskendub digitaalse päranduse teenusele, pärides kasutajate surma andmeid rahvastikuregistritest. Räägiti ka piiriülese andmevahetuse takistustest, mis on rohkem juriidilised ja organisatsioonides kinni kui tehnilised. Tõdeti ka, et Euroopas ühte koosvõimelist andmevahetuse lahendust ilmselt kasutada ei saa, kuid meie andmevahetusplatvormid peavad olema võimelised integreeruma.


Paneellarutelu: Ville Hyyryläinen, Miia Mänd, Petteri Kivimäki, Ines Costa

Pärast lõunapausi jätkusid ettekanded kolmes paralleelses sessioonis. Mina kuulasin X-Road REST toe, turvaserveri uue kasutajaliidese, turvaserveri admin API ja pilveteenuste toe ettekandeid. Kuigi enamik teemasid olid mulle NIISi töörühmas osalemise tõttu üpris tuttavad, siis oli hea kuulata teiste küsimusi ja arvamusi neil teemadel.

REST tugi (representational state transfer – kaasaegsem veebiteenuste arhitektuuristiil) tuli X-Roadile esmakordselt 2019. aasta aprillis ning kuigi see on juba praegu toodangukõlbulik, tulevad talle veel järgmises reliisis mõned täiendused, mis teevad REST teenuste pakkumise ja tarbimise veel mugavamaks.

Turvaserveri uus kasutajaliides sai värske ilme ning seekord lähtuti disainis eelkõige kasutajate reaalsetest vajadustest ja soovidest. Kui varem pidi kasutaja näpuga dokumentatsioonis järge ajama, siis uus disain suunab kasutajaid õigesse kohta ning pakub vajadusel rakenduses sees lisainfot tegevuste sooritamiseks.


Turvaserveri uus kasutajaliides – kliendi lisamine turvaserverisse on tehtud viisardiks

Praegune kasutajaliides on tugevalt seotud backendiga. Uus kasutajaliides kasutab aga RESTful APIsid, mis tähendab, et edasijõudnumad kasutajad ei pea enam käsitsi klikkimas käima, et vajalikke haldustegevusi sooritada. See on eriti kasulik näiteks konfigureerimise automatiseerimisel või siis kui on vaja hallata turvaserverite klastrit.

Kuigi Eesti avalikus sektoris on pilve kasutamine mõnevõrra keeruline, siis paljud välismaa asutused ning erasektor ootavad pingsalt, et X-Road tarkvara saaks utiliseerida erinevaid pilveteenuste IaaS ja PaaS lahendusi. Nende puudumine teeb X-Roadi laiema levitamise raskeks. Kuna Amazon AWS-il on hetkel kõige suurem turuosa, siis on X-Roadi puhul alustatud AWSi teenuste toega. Esmajoones luuakse tugi AWS RDS (andmebaas teenusena) ja AWS CloudHSM (HSM teenusena) jaoks, kuna vajadus nende järele on suurim. Kuid uuritakse ka muude teenuste toetamist.


Paralleelselt pilveteenuste toe ettekandega rääkis teises sessioonis Sander Randorg nõusolekuteenuse arendusest Eestis.

Pärast ettekandeid toimus paralleelselt kolm töötuba – lokaalse X-Road arenduskeskkonna püstipanek, X-Road v7 disain ja planeerimine ja X-Road REST tugi 3.0. Mina osalesin X-Road v7 disaini töötoas.

Osalejad jaotati tiimidesse ning neil paluti valida teema, mille üle arutleda. Teemadeks olid:

  • Andmevahetuse mustrid
  • Liitumisprotsess
  • Raporteerimine ja analüütika
  • Toetatud platvormid
  • Usaldustasemed

Meie tiim valis teemaks toetatud platvormid. Tulemus ei olnud kuigi üllatav – leidsime, et Ubuntu ja Red Hat support peab säilima, sest paljudel klientidel ei ole konteinerplatvormide käitamise kompetentsi. Samas X-Roadi laienemiseks ja kaasaegsemate tehnoloogiastackidega klientide jaoks on vajalik modulaarsem arhitektuur, selgemad masinliidesed ja konteinerplatvormide ja pilveteenuste tugi.

Andmevahetuse mustrite osas leiti, et Pub/Sub tugi oleks kasulik. Usaldustasemete osas olid vastuoksuslikud arvamused – üks tiim leidis, et erinevate tasemetega sertifikaatide võimaldamine vähendaks liitumisbarjääri ning toetaks paindlikkust, teine tiim oli aga arvamusel, et usaldustasemete osas ei tohiks paindlikkust turvakaalutlustel lubada.

RIA andmevahetusosakonna inimesed arutlemas usaldustaseme üle

Jan Raik usaldustasemete teema tulemusi ette kandmas

Jürgen Šuvalov ja Marko Valing toetatud platvormide teema tulemusi ette kandmas

Töötubadega lõppes konverentsi töine osa ning üritus jätkus hotelli Sky Roomis haaravate vestlustega. Enne üles siirdumist tegime veel Islandiga cross-border beer exchange’i.

Üritust kokku võttes meeldis mulle enim rahvusvahelise koostöö atmosfäär. X-Road on nüüd maailmas üsna laialt levimas, aga puhtalt Slackis ja GitHubis vesteldes on seda raske tajuda. Kokku tulles ja näost näkku suheldes on aga selge, et X-Road on midagi palju enamat kui kahe Balti riigi avatud lähtekoodiga projekt. 

Ja kui kõik plaanipäraselt läheb, siis järgmise aasta X-Road Communty Event toimub Islandil.


X-Road World Map – rohelised ja sinised on riigis, kus X-Road on kasutuses. Kollased on konsulteerimas/planeerimas.

Ürituse pildid

Ürituse ettekanded

X-Road Community

Jürgen Šuvalov
X-tee tootejuht