BEB - Beheren van entiteiten en bevoegdheden
Inleiding
Dit document beschrijft de entiteiten en bevoegdheden op de beheerschermen. De beheerschermen bevat o.a. gegevens van domeinen, applicaties, applicatieinstanties, gebruikers (beheerders), applicatierollen, en logging. Verschillende gegevens zijn tevens bepalend voor het verlenen van toegang tot resources.
Vooraf zijn vanuit discussie tussen testteam en architectuur verschillende eisen en wensen aangegeven. Tijdens het ontwikkelproces met Itzos zijn hierop enkele aanpassingen of keuzes gemaakt om een werkbaar geheel te krijgen. Voor logging van de beheerschermen waren de eisen zeer minimaal en is de logging naar beste inzicht vorm gegeven.
Beschrijving
Applicatierollen en autorisatieregels (zie ook KT-TOP-005).
Rollen en autorisatieregels kunnen vastgelegd worden. De naam van de rol is uniek en niet wijzigbaar. Binnen de rol moet per resource vastgelegd kunnen worden of een Create, Read, Update en Delete actie is toegestaan. Daarnaast moet bij Read, Update en Delete aangegeven worden of dit alleen voor de resource is toegestaan die de applicatieinstantie zelf heeft aangemaakt (OWN), of dat de applicatieinstantie de actie op al deze resources in hetzelfde domein mag uitvoeren (ALL).
Dit is een domein- en applicatie onafhankelijke taak. Vastlegging wordt uitgevoerd door Support (de systeembeheerder).
N.B. De 'GRANTED' optie is i.v.m. complexiteit niet gebouwd in de Itzos omgeving.
N.B. Er zijn nog geen procesafspraken gemaakt over hoe we in de praktijk om moeten gaan met rollen en autorisatieregels. Voor nu gaan we uit van een rol die beperkt is tot de resources (en de CRUD acties hierop) die gelijk is aan waarvoor applicatie geaccepteerd is/wordt.
N.B. Het is nog niet mogelijk om applicatierollen, die niet in gebruik zijn, te beëindigen/verwijderen. (bevinding)
Domein
Het domein bevat (minimaal) de volgende gegevens/attributen:
- Een unieke domein identifier. (Deze is aanwezig, maar niet zichtbaar op het scherm.)
- Een (leesbare) naam van het domein. (verplicht, en niet wijzigbaar).
- Maximaal 32 karakters.
- Toegestaan: alfanumeriek, spatie, uitroepteken, underscore, minteken en punt.
- Url van de autorisatieserver (verplicht, begint met 'https'). (Eventuele spaties en hoofletters zijn uit domeinnaam verwijderd. Dit geldt ook voor de urls hieronder.)
- Url van de endpoint van de autorisatieserver (verplicht, begint met 'https').
- Url van de FHIR server (verplicht, begint met 'https').
- Contactpersoon voor het domein :
- Naam (verplicht)
- Email (verplicht)
- Telefoonnummer (optioneel).
Daarbij bevat het domein ook gegevens van de bijbehorende domeinbeheerders, applicatieinstanties, connectieaanvragen en logging.
N.B. Het domein kan ingevoerd worden door de systeembeheerder nadat Itzos ook het complexe proces aan de 'achterkant' van het domein heeft ingericht. Een nieuw domein moet dus altijd aangevraagd worden bij Itzos.
N.B. Het vullen van de drie technische velden (autorisatieserver, endpoint autorisatieserver en FHIR server) wordt bij aanmaken domein niet afgedwongen. Dit is procedureel opgelost.
Applicatie
De applicatie bevat (minimaal) de volgende gegevens/attributen:
- Een unieke applicatie identifier. (Deze is aanwezig, maar niet zichtbaar op het scherm.)
- Een (leesbare) naam van de applicatie (verplicht, en niet wijzigbaar).
- Maximaal 32 karakters.
- Toegestaan: alfanumeriek, spatie, uitroepteken, underscore, minteken en punt.
- (Deze wordt automatisch gevuld bij aanmaken en is niet wijzigbaar.)
- Eén of meer rollen. Te selecteren uit de lijst van (actieve) rollen. Minimaal 1 rol verplicht. (Bevinding: Deze is na aanmaken van de applicatie niet meer te wijzigen.)
- Contactpersoon voor de applicatie :
- Naam (verplicht)
- Email (verplicht)
- Telefoonnummer (optioneel).
Daarbij bevat de applicatie ook gegevens van de bijbehorende applicatiebeheerders en connectieaanvragen.
Applicatieinstantie
Een applicatieinstantie is geen zelfstandige eenheid, maar de entiteit van de applicatie binnen een domein. Deze ontstaat als de applicatiebeheerder en zgn. connectieaanvraag doet vanuit de applicatie (status 'Actief' of 'In onderhoud') aan een domein, en de domeinbeheerder van dat domein deze connectieaanvraag (met status 'open') accepteert.
Een geaccepteerde connectieaanvraag wordt een applicatieinstantie en krijgt daarmee ook een ClientID en een resource Device. (In Itzos omgeving heeft het Device dezelfde id als de ClientID van de applicatieinstantie.). De connectieaanvraag is verdwenen uit de lijst van connectieaanvragen.
Indien de domeinbeheerder de connectieaanvraag weigert, dan wordt er geen applicatieinstantie aangemaakt en wordt dus de toegang tot het domein geweigerd. De connectieaanvraag blijft in de lijst van connectieaanvragen staan met de status 'geweigerd', en kan ook niet meer geaccepteerd worden.
Indien de applicatie reeds een connectieaanvraag heeft gedaan, dus bij status 'open', 'geaccepteerd' of 'geweigerd', is het niet meer mogelijk voor de applicatie een nieuwe connectieaanvraag te doen. De volgende melding verschijnt: 'Applicatieinstantie bestaat al.' Indien de aanvraag is afgewezen, verschijnt melding: “Er is eerder een connectieaanvraag ingediend. Het is niet mogelijk dit nogmaals te doen.”.
Een connectieaanvraag kan niet geaccepteerd worden als de applicatie de status 'Afgesloten' heeft. De volgende melding verschijnt bij het accepteren: "De Connectieaanvraag kan niet geaccepteerd worden, de applicatie heeft de status 'Afgesloten'."
Note: De systeembeheerder kan beide acties ook uitvoeren, maar mag dat procedureel níet.
Connectieaanvraag bevat (minimaal) de volgende gegevens/attributen:
- Een JWKS uri. Is een unieke resource identifier dat refereert naar een applicatie JSON Web Key Set bestand dat (roulerende) publieke sleutels van de applicatie bevat. Veld bevat controle of deze bereikbaar is. Getoonde melding: 'De JWKS URL is niet bereikbaar; controleer of de URL correct is.' Er zal geen controle plaatsvinden als het veld leeg gelaten wordt. Reden voor het leeg laten van het veld kan zijn als IT-deelnemer het ClientId van de applicatieinstantie nodig heeft om een JWKS uri aan te maken. De JWKS uri moet daarna alsnog toegevoegd worden aan de applicatieinstantie om deze te kunnen gebruiken.
- De redirect_uri(s). Max. 3 uri's mogelijk. Is optioneel veld, maar moet wel ingevuld worden om een SHOF launch uit te kunnen voeren.
- De applicatienaam (wordt automatisch overgenomen en is niet wijzigbaar).
- Eén rol die gekoppeld is aan de applicatie. Het is niet mogelijk om een andere rol te selecteren, dan die bij de applicatie is vastgelegd.
- Domein waarnaar de connectieaanvraag gestuurd wordt. Het domein wordt geselecteerd uit een lijst van domeinen met status 'Actief' en 'In onderhoud'.
Indien de connectieaanvraag is ingediend, zijn alleen de velden JWKS uri en status aan te passen door geautoriseerden. De andere velden zijn niet muteerbaar.
Een ingediende connectieaanvraag krijgt automatisch een (leesbare) naam voor de aan te maken applicatieinstantie (zie onder 'applicatieinstantie').
Mailnotificatie connectieaanvraag:
- Het indienen van een connectieaanvraag resulteert in een mailnotificatie naar alle domeinbeheerders die vastgelegd zijn bij het domein uit de connectieaanvraag.
- Onderwerp: Nieuwe connectieaanvraag voor domein <domeinnaam> op <omgeving>
- Tekst: Er is een connectieaanvraag ingediend voor applicatie <applicatienaam> in uw domein <domeinnaam>.
- Het accepteren van een connectieaanvraag resulteert in een mailnotificatie naar de indiener van de connectieaanvraag.
- Onderwerp: Connectieaanvraag geaccepteerd.
- Tekst: Uw aanvraag om applicatie <applicatienaam> toe te voegen aan domein <domeinnaam> is geaccepteerd.
- Voor de applicatie-domein combinatie zijn de volgende gegevens geregistreerd:
Applicatieinstantie: <naam applicatieinstantie>
Client-Id: <client-id>.
Omgeving: <omgeving>
- Het weigeren van een connectieaanvraag resulteert in een mailnotificatie naar alle applicatiebeheerders die vastgelegd zijn bij de applicatie.
- Onderwerp: Connectieaanvraag geweigerd
- Tekst: Uw aanvraag om applicatie <applicatienaam> toe te voegen aan domein <domeinnaam> op <omgeving> is afgewezen.
Voor deze functionaliteit is de omgeving uitgebreid met een mailserver.
De applicatieinstantie bevat (minimaal) de volgende gegevens/attributen:
- Een unieke client identifier (Client ID) (format: UUID).
- Een (leesbare) naam (format: <applicatienaam>@<domeinnaam>, max 128 karakters, wordt automatisch gegenereerd en is niet wijzigbaar).
- Een (logische) naam. (Deze is aanwezig, maar niet zichtbaar op het scherm.)
- De JWKS uri. Is een unieke resource identifier dat refereert naar een applicatie JSON Web Key Set bestand dat (roulerende) publieke sleutels van de applicatie bevat.
- De redirect_uri(s). Max. 3 uri's mogelijk. Is optioneel veld, maar moet wel ingevuld worden om een SHOF launch uit te kunnen voeren.
- De domeinnaam.
- De applicatienaam.
- De rol.
Het overzicht van applicatieinstanties bevat ook een datum van aanmaken, maar dit is geen onderdeel van het detailscherm.
Logging - view AuditEvents
In het domein is het mogelijk om de resource AuditEvent in te zien. Iedere beheerder die toegang heeft tot het domein, kan de AuditEvents inzien. Ook als het domein de status 'afgesloten' heeft.
Algemeen:
- Het overzichtsscherm wordt standaard met een lege respons getoond en pas gevuld na het invoeren van een zoekactie.
- Er wordt maximaal 100 resultaten getoond op het scherm, met vervolgschermen tot maximaal 1000 resultaten. Levert de zoekopdracht meer dan 1000 resultaten op dan verschijnt een melding om de zoekfilters te verfijnen.
- Sortering is standaard op datum van nieuw naar oud.
- Het zoeken moet, net als elke GET actie, een AuditEvent aanmaken.
- Het moet mogelijk zijn om van de resultaten van de zoekopdracht een csv bestand te maken. (Dit bevat dus alleen de informatie van het overzicht, niet van de details. Bevat dus max. 1000 records.)
Het overzichtsscherm logging bevat de volgende gegevens boven de kolommen:
- DeviceId (resource-origin)
- Datum (lastUpdated)
- RequestId
- TraceId
- CorrelationId
- Actie (type)
- Resultaat (outcome)
Het detailscherm toont de hele resource AuditEvent in Json format.
Zoeken van de logging is mogelijk op:
- DeviceId (resource-origin), zodat op applicatieinstantie gefilterd kan worden.
- Datum/tijd, vanaf - t/m (lastUpdated). Verplicht veld van maken i.v.m. performance. Standaard datum van vandaag t/m vandaag vullen.
- RequestId.
- TraceId.
- CorrelationId.
- Actie (type), zodat op type gefilterd kan worden.
- Resultaat (outcome), zodat bijvoorbeeld alleen op fouten (<>0) gefilterd kan worden.
Logging - Beheerschermen
De applicatie Beheerschermen bevat een loggingscherm van de acties die op de beheerschermen worden uitgevoerd. Dit betreft het inloggen en uitloggen van beheerders, en alle create, update en delete acties die op de gegevens in de beheerschermen worden uitgevoerd.
Algemeen:
- Het overzichtsscherm wordt standaard met een lege respons getoond en pas gevuld na het invoeren van een zoekactie.
- Sortering is standaard op datum van nieuw naar oud.
Het overzichtsscherm logging bevat de volgende gegevens boven de kolommen:
- Datum/tijd.
- Resultaat.
- Gebruiker.
- Actie.
Het detailscherm toont de hele logging in Json format. De inhoud is afhankelijk van het soort logging.
Zoeken van de logging is mogelijk op:
- Datum/tijd, vanaf - t/m. Verplicht veld i.v.m. performance. Standaard datum van vandaag t/m vandaag vullen.
- Er kan geselecteerd worden uit een lijst, waarin gekozen kan worden voor logging van acties die goed gegaan zijn, of acties die fout gegaan zijn.
- Vrij veld waar de user van de beheerder ingevuld kan worden. De volledige user moet ingevoerd worden.
- Er kan geselecteerd worden uit een lijst met verschillende activiteiten.
N.B. De logging van foute inlog door beheerders is niet opgenomen in de logging van de Beheerschermen. Dit wordt gelogd in de tooling van KT Support.
BEB - Eisen (en aanbevelingen) Beheren van entiteiten en bevoegdheden
# | Eis |
---|---|
001 | Naam applicatierol is uniek en niet wijzigbaar. |
002 | Een applicatierol bevat een verzameling autorisatieregels. |
003 | Autorisatieregels: Per resource wordt vastgelegd of CRUD actie toegestaan is. |
004 | Autorisatieregels: Per RUD actie wordt vastgelegd of dit alleen mag voor 'eigen' resource (OWN) of voor alle van deze resources in domein (ALL). |
005 | Beheer applicatierollen is onafhankelijk van domein of applicatie uit te voeren. |
006 | Alleen de systeembeheerder heeft rechten om rollen te beheren. |
007 | Domein bevat unieke identifier. |
008 | Domein bevat de genoemde attributen met restricties. |
009 | Alleen de systeembeheerder heeft rechten om een domein aan te maken. |
010 | Applicatie bevat unieke identifier. |
011 | Applicatie bevat de genoemde attributen en restricties. |
012 | Alleen de systeembeheerder heeft rechten om een applicatie aan te maken. |
013 | De applicatiebeheerder (of systeembeheerder) kan een connectieaanvraag indienen van de applicatie. De applicatie mag dan niet de status 'Aanmaken' of 'Afgesloten' hebben. |
014 | De domeinbeheerder (of systeembeheerder) kan een connectieaanvraag accepteren/weigeren. |
015 | Geaccepteerde connectieaanvraag wordt een applicatieinstantie binnen het domein en krijgt daarmee ook een ClientId en Device. |
016 | Van een geweigerde connectieaanvraag wordt nooit een applicatieinstantie gemaakt, en kan daarna ook niet meer geaccepteerd worden. |
017 | In de connectieaanvraag kan slechts één rol, die vastgelegd is bij de applicatie, gekozen worden. |
018 | Het is voor een applicatie niet mogelijk meer dan één connectieaanvraag uit te voeren naar hetzelfde domein. |
019 | Het is te adviseren om een bereikbaarheids controle uit te voeren van de jwks uri. |
020 | De connectieaanvraag bevat genoemde attributen en restricties. |
021 | Proces van connectieaanvraag bevat genoemde mailnotificaties. |
022 | De applicatieinstantie bevat genoemde attributen en restricties. |
023 | Loggingscherm (view AuditEvents) moet de elementen bevatten voor zoeken zoals beschreven en de beschreven elementen ook tonen boven de kolommen in het overzicht. |
024 | Loggingscherm (view AuditEvents): Zoekacties kunnen worden uitgevoerd op beschreven elementen. |
025 | Loggingscherm (view AuditEvents): Zoekresultaten per scherm is max. 100, in totaal max. 1000 (in vervolgschermen). Bij meer dan 1000 zoekresultaten verschijnt melding om zoekfilter te verfijnen. |
026 | Loggingscherm (view AuditEvents): Elke zoekactie moet resulteren in een nieuwe AuditEvent. |
027 | Loggingscherm (view AuditEvents): Het overzicht van resultaten kan geëxporteerd worden naar een csv bestand. |
028 | Loggingscherm (view AuditEvents), optioneel: Mogelijkheid om te selecteren/filteren om logregels te archiveren. (Specificaties moeten hiervoor nog uitgewerkt worden.) |
029 | Logging (beheerschermen): Elke wijziging die via een beheerscherm wordt doorgevoerd moet door het systeem gelogd worden (wie, wanneer, wat). |
030 | Logging (beheerschermen): Voor statuswijzigingen moet min. het volgende worden vastgelegd: reden, datum/tijdstip, rol en naam van uitvoerend persoon. |
031 | Voor elke entiteit (record), die onder beheer valt, zoals rollen, domeinen, applicaties, applicatieinstanties, enz., wordt door het (beheer) systeem een uniek logische id aangemaakt en uitgegeven, om de entiteit uniek te kunnen identificeren. |
032 | Een uitgegeven logische id is NOOIT en te nimmer wijzigbaar. |
033 | Bij verwijderen van gegeven middels 'prullenbak' wordt altijd om een extra bevestiging gevraagd. |