-
Notifications
You must be signed in to change notification settings - Fork 11
Käyttöoikeusmalli
eVakan käyttöoikeusmalli perustuu pääsääntöisesti käyttäjätyyppeihin, käyttäjärooleihin, ja lähdekoodin kautta kustomoitaviin käyttöoikeussääntöihin.
Erilaiset käyttäjät mallinnetaan eVakassa käyttäjätyypeillä (AuthenticatedUser
). Käyttäjätyyppi kuvaa minkälainen käyttäjä on kyseessä, millä tavalla käyttäjä on tunnistautunut, ja missä järjestelmän osassa käyttäjä operoi.
-
AuthenticatedUser.Citizen
: kuntalainen joka on joko tunnistaunut vahvasti (authLevel=CitizenAuthLevel.STRONG
) tai kevyesti (authLevel=CitizenAuthLevel.WEAK
). Tämä käyttäjä voi kutsua vain servicen/citizen/
-alkuisia API-endpointteja. -
AuthenticatedUser.Employee
: kunnan työntekijä tai palvelutuottaja. Tämä käyttäjä voi kutsua vain servicen/employee/
-alkuisia API-endpointteja. -
AuthenticatedUser.MobileDevice
: kunnan paritettu mobiililaite. Tämä käyttäjä voi kutsua vain servicen/employee-mobile/
-alkuisia API-endpointteja. Jos joku työntekijä on kirjautunut erikseen vielä PIN-koodilla, käyttäjätieto sisältää myös tiedon työntekijästä. -
AuthenticatedUser.Integration
: kolmannen osapuolen integraatio. Tämä käyttäjä voi kutsua vain servicen/integration/
-alkuisia API-endpointteja -
AuthenticatedUser.SystemInternalUser
: eVaka-järjestelmän sisäinen käyttäjä. Tätä käyttäjätietoa käytetään vain kutsuihin joita apigw tekee suoraan evaka-serviceen. Tämä käyttäjä voi kutsua vain servicen/system/
-alkuisia API-endpointteja. - ei käyttäjää: järjestelmässä on myös muutama API-endpoint joita voi kutsua ilman mitään sessiota tai käyttäjää. API-polut alkavat jollain näistä:
/citizen/public/
,/employee/public/
,/employee-mobile/public/
. Kaikki muut järjestelmän endpointit vaativat jonkin käyttäjätiedon.
eVakan käyttäjäroolit voidaan jakaa kahteen ryhmään: globaalit roolit, ja kohdistetut roolit. Roolit koskevat vain työntekijäkäyttäjiä (AuthenticatedUser.Employee
) ja ne ovat täysin eVakan omassa hallinnassa, eikä niitä päätellä esim. AD-kirjautumisen yhteydessä AD:sta.
Jokaisella käyttäjällä voi olla 0-N kpl globaaleja rooleja, ja nämä roolit liittyvät vain käyttäjään eivätkä siis liity esim. mihinkään tiettyyn alueeseen, yksikköön, tai ryhmään.
Globaalien roolien lisäksi käyttäjä voidaan luvittaa yhteen tai useampaan yksikköön kohdistetuilla rooleilla. Sama käyttäjä voi olla luvitettuna eri kohdistetulla rooleilla eri yksiköissä, mutta jokaista yksikköä kohden rooleja voi olla vain yksi. Yksi käyttäjä voi siis olla esim. johtaja yksikössä A ja VEO yksikössä B, mutta ei voi olla sekä johtaja että VEO yksikössä C.
Yksikköön kohdistettujen roolien lisäksi käyttäjä voidaan vielä luvittaa erikseen yksikön valittuihin ryhmiin. Tämä luvitus ei sisällä roolitietoa, vaan rooli "periytyy" yksikkötasolta. Esim. käyttäjällä voi olla STAFF
-rooli yksikössä A, ja hänet on luvitettu vielä erikseen ryhmään A1. Tässä skenaariossa käyttäjällä katsotaan olevan STAFF
-rooli yksikössä A, STAFF
-rooli ryhmässä A1, mutta ei mitään roolia saman yksikön toisessa ryhmässä A2.
ADMIN
REPORT_VIEWER
DIRECTOR
FINANCE_ADMIN
FINANCE_STAFF
SERVICE_WORKER
MESSAGING
Globaalit roolit koskevat vain työntekijäkäyttäjiä (AuthenticatedUser.Employee
), ja ne on tallennettu tietokantaan suoraan työntekijän riviin roles
-sarakkeeseen.
UNIT_SUPERVISOR
STAFF
SPECIAL_EDUCATION_TEACHER
EARLY_CHILDHOOD_EDUCATION_SECRETARY
Yksikkökohtaiset roolit koskevat vain työntekijäkäyttäjiä (AuthenticatedUser.Employee
), ja ne on tallennettu tietokantaan daycare_acl
-tauluun jossa yksi rivi kuvaa yhden käyttäjän yhtä roolia yhdessä yksikössä. Käyttäjällä voi olla myös daycare_group_acl
-taulussa rivejä, ja siellä yksi rivi kuvaa luvitusta yhden käyttäjän ja yhden ryhmän välillä, ja ryhmäluvituksen rooli periytyy daycare_acl
-taulun rivistä.
Nämä roolit ovat vanhoja ja sama tieto käyttäjästä mallinnetaan nykyään käyttäjätyypin avulla roolin sijaan:
-
MOBILE
: vanha paritetun mobiililaitteen rooli, nykyäänAuthenticatedUser.MobileDevice
-
END_USER
: vanha vahvasti kirjautununeen kuntalaisen rooli, nykyäänAuthenticatedUser.Citizen
, jollaauthLevel=CitizenAuthLevel.STRONG
-
CITIZEN_WEAK
: vahva kevyestä kirjautuneen kuntalaisen rooli, nykyäänAuthenticatedUser.Citizen
, jollaauthLevel=CitizenAuthLevel.WEAK
Muut vanhat roolit:
-
GROUP_STAFF
: vanha ryhmän henkilökunnan rooli, joka mallinnetaan nykyään antamalla yksikkötasollaSTAFF
-rooli ja lisäämäällä vielä erillinen luvitus ryhmään
eVakan käyttöoikeussäännöt liittyvät toimenpiteisiin, joilla kuvataan erilaisia operaatioita järjestelmässä. Tyypillisesti yksi API-endpoint liittyy aina tasan yhteen toimenpiteeseen, mutta joissain monimutkaisemmissa tapauksissa voidaan katsoa useamman toimenpiteen käyttöoikeuksia, esim. jos halutaan piilottaa paluudatasta osa tiedoista joiltain käyttäjiltä, tai jos endpoint aggregoi useampaa erityyppistä dataa eri käyttöoikeuksilla.
Toimenpiteet ovat joko kohdistettuja (ScopedAction
) tai kohdistamattomia (UnscopedAction
). Kun tarkistetaan kohdistetun toimenpiteen käyttöoikeuksia, tiedossa on käyttäjän lisäksi aina kohteesta joku tunniste kuten ID. Kohdistamattomissa toimenpiteissä tiedossa on vain käyttäjä.
Toimenpiteet on jaettu lähdekoodissa useaan enum-luokkaan jotka voidaan ryhmitellä kolmeen ryhmään:
-
Action.Global.X
. Kohdistamattomat toimenpiteet, jossaX
on yksi toimenpide. Esim.Action.Global.REPORTS_PAGE
, eli "saako käyttäjä nähdä raportit-sivua" -
Action.X.Y
. Kohdistetut toimenpiteet muille kuin kuntalaisille, jossaX
on toimenpiteen kohteen tyyppi jaY
toimenpide. Esim.Action.Unit.READ
, eli "saako käyttäjä lukea tietyn yksikön tietoja" -
Action.Citizen.X.Y
. Kohdistetut toimenpiteet kuntalaisille, jossaX
on toimenpiteen kohteen tyyppi jaY
toimenpide. Esim.Action.Citizen.Application.READ
, eli "saako käyttäjä lukea tietyn hakemuksen tietoja"
Koska jokainen toimenpide liittyy tyypillisesti vain yhteen endpointtiin, ei ole aina suoraviivaista hahmottaa mitä käyttäjä saa konkreettisesti tehdä ja mitä ei. Esim. jos käyttäjällä ei ole oikeutta tehdä Action.Unit.READ
-toimenpidettä, se ei tarkoita ettei käyttäjä voi nähdä yksikön tietoja missään päin järjestelmää, vaan sitä että tietyn "yksikön perustiedot"-endpointin käyttö on estetty.
Copyright 2017-2024 City of Espoo
Sisältö on lisensoitu LGPL-2.1-or-later -lisenssillä
- eVaka
- Yleinen arkkitehtuuridokumentaatio
- VTJ-integraatio
- Varda-integraatio
- Koski-integraatio
- Jamix-ruokatilausintegraatio
- Prosessikaaviot
- Henkilökunnan eVaka:
- Laskujen muodostus
- Laitimmaislaskenta
- Tarkempi tekninen dokumentaatio: