Document D-8 Ministerie van Infrastructuur en Milieu IMEA - Katern - Service Gerichte Architectuur Versie 1.0 Datum Status 15 juli 2014 Definitief Definitief | IMEA - Katern - Service Gerichte Architectuur | Versie 1.0 Colofon Versie 1.0 Contactpersoon Paul Leunissen M 06 - 5250 6691 [email protected] Ministerie van Infrastructuur en Milieu Hoofddirectie Financiën, Management en Bedrijfsvoering Directie Concern Informatievoorziening Afdeling Architectuur en Informatie Management Team Architectuur Koningskade 4 Postbus 20906 2500 EX Den Haag Auteurs Peter Visser Stephen Oostenbrink Pagina 2 van 38 Definitief | IMEA - Katern - Service Gerichte Architectuur | Versie 1.0 Inhoud 1 Inleiding ........................................................................................................... 5 1.1 Identificatie .................................................................................................................. 5 1.2 Leeswijzer .................................................................................................................... 5 1.3 Doel van dit document .................................................................................................... 5 1.4 Referenties ................................................................................................................... 5 1.5 Afkortingen en begrippen ................................................................................................ 5 2 Service Gerichte Architectuur .............................................................................. 6 2.1 Inleiding ...................................................................................................................... 6 2.1.1 Architectuurkeuze Service Gerichte Architectuur .................................................................. 7 2.2 Servicecontract ............................................................................................................. 7 2.3 Performance ................................................................................................................. 8 2.4 Onderscheid externe en interne informatie-uitwisseling......................................................... 9 2.4.1 Externe informatie-uitwisseling ........................................................................................ 9 2.4.2 Interne informatie uitwisseling ......................................................................................... 9 2.4.3 Architectuurkeuze onderscheid interne en externe informatie-uitwisseling .............................. 10 2.5 Stelsel van ESB’s met het Centraal Aansluitpunt ................................................................ 10 2.6 Centraal Aansluitpunt ................................................................................................... 11 2.6.1 Architectuurkeuze stelsel van ESB’s met een Centraal Aansluitpunt ....................................... 12 2.7 Domein specifieke koppelingen....................................................................................... 13 2.8 Beveiliging ................................................................................................................. 13 2.9 Versies ...................................................................................................................... 14 2.9.1 Architectuurkeuze ondersteuning versies.......................................................................... 14 3 Service gerichte architectuur: verdieping ............................................................ 15 3.1 Servicelagenmodel ....................................................................................................... 15 3.1.1 Interactiekanalen ......................................................................................................... 17 3.1.2 Processervices ............................................................................................................ 17 3.1.3 Business services ......................................................................................................... 17 3.1.4 Technische services...................................................................................................... 18 3.1.5 Backend ..................................................................................................................... 18 3.2 Service principes ......................................................................................................... 19 3.3 Communicatieprincipes ................................................................................................. 19 3.4 Ontwerpprincipes ......................................................................................................... 20 3.5 Proces en compositie .................................................................................................... 21 3.5.1 Orkestratie ................................................................................................................. 21 3.5.2 Taken service.............................................................................................................. 21 3.5.3 BPEL4People ............................................................................................................... 21 4 Informatie-uitwisseling ..................................................................................... 22 4.1 Inleiding .................................................................................................................... 22 4.2 Informatie-uitwisseling lagenmodel ................................................................................. 22 4.3 Elektronisch berichtmodel ............................................................................................. 24 5 Informatie-uitwisseling: verdieping .................................................................... 26 5.1 Enterprise service bus .................................................................................................. 26 5.2 Koppelvlak ................................................................................................................. 28 5.3 Endpoints ................................................................................................................... 28 5.4 Beveiliging ................................................................................................................. 29 5.5 Herleidbaarheid ........................................................................................................... 30 Pagina 3 van 38 Definitief | IMEA - Katern - Service Gerichte Architectuur | Versie 1.0 6 Informatie-uitwisseling: standaard uitwisselingsformaat ....................................... 31 6.1 Inleiding .................................................................................................................... 31 6.2 StUF berichtenstandaard ............................................................................................... 31 6.3 StUF protocolbindingen ................................................................................................. 32 6.4 StUF horizontale sectormodellen ..................................................................................... 32 6.5 StUF verticale sectormodellen ........................................................................................ 32 6.5.1 Architectuurkeuze standaard informatie-uitwisseling .......................................................... 32 7 Informatie-uitwisseling: e-Overheid bouwstenen ................................................. 33 7.1 Beschikbare bouwstenen ............................................................................................... 33 7.2 Diginetwerk ................................................................................................................ 33 7.3 Digikoppeling .............................................................................................................. 33 7.4 Digipoort .................................................................................................................... 34 7.4.1 Architectuurkeuze generieke bouwstenen voor informatie-uitwisseling ................................... 34 8 Bijlage A: Informatie-uitwisselingsmodel uitgebreid ............................................. 35 9 Bijlage B: PKIoverheid certificaten ..................................................................... 36 Pagina 4 van 38 Definitief | IMEA - Katern - Service Gerichte Architectuur | Versie 1.0 1 Inleiding 1.1 Identificatie Dit document beschrijft de eisen die het Ministerie van Infrastructuur en Milieu (IenM) stelt aan de Service Gerichte Architectuur (SGA). Een systeem dat hieraan voldoet mag uitgerold worden naar het IenM domein. 1.2 Leeswijzer Om dit document te begrijpen wordt geadviseerd het document geheel door te nemen. 1.3 Doel van dit document Het doel van dit document is om leveranciers te informeren over de eisen waaraan een systeem opgezet op basis van SGA principes moeten voldoen. 1.4 Referenties De volgende documenten zijn relevant om dit document goed te begrijpen. # 1 2 3 1.5 Referentie Afkortingen en begrippen SP Aansluitvoorwaarden Document IenM - Standaard Platform - Afkortingen en begrippen – v1.0.docx IMEA - Katern - Standaard Platform - v1.0.docx IenM - SP Koppelingen - Eisen - v1.0.docx Afkortingen en begrippen Zie voor een toelichting op de gehanteerde afkortingen en begrippen het document [Afkortingen en begrippen]. Pagina 5 van 38 Definitief | IMEA - Katern - Service Gerichte Architectuur | Versie 1.0 2 Service Gerichte Architectuur 2.1 Inleiding In een Service Gerichte Architectuur (SGA) wordt gedacht in en gewerkt met services en is het denken in aparte, alles omvattende systemen losgelaten. Een systeem wordt niet langer gezien als een op zichzelf staand geheel dat zelfstandig en los van andere systemen functioneert, maar als een samenstel van services. Een service is een zelfstandig stuk functionaliteit en bijbehorende data, met een goed gedefinieerd en gestandaardiseerd koppelvlak, dat onafhankelijk werkt van de front- en backend systemen die gebruik maken van die functionaliteit. Een service is technologie, leverancier en productneutraal, waardoor systemen met verschillende onderliggende technieken kunnen samenwerken. Door die onafhankelijkheid kan in een afnemend systeem een service eenvoudig vervangen worden door een nieuwe versie van dezelfde service of door een andere service. Daarnaast kan de service implementatie of achterliggend systeem gewijzigd worden zonder het koppelvlak te wijzigen. Dit geeft flexibiliteit bij het inrichten en aanpassen van systemen. Een afnemend systeem ‘roept’ een service aan door een bericht naar een service te sturen, waarna de service de gevraagde actie uitvoert en het resultaat via één of meerdere berichten ‘teruggeeft’. De service kan, zo nodig, via services weer gebruik maken van functionaliteit van andere systemen, en zelfs van functionaliteit van systemen van andere organisaties. Een SGA zorgt voor ontkoppeling van proces en functionaliteit. Het proces dat gevoelig is voor verandering, en de functionaliteit en data die minder gevoelig zijn voor verandering. Hierdoor is het proces eenvoudig aan te passen zonder dat aanpassing van functionaliteit nodig is. En het is eenvoudiger om dezelfde functionaliteit te delen met anderen en via andere kanalen beschikbaar te stellen zoals via mobiele toepassingen met een eigen interface (tablets en apps). Binnen de Service Gerichte Architectuur is de enterprise service bus (ESB) een belangrijk onderdeel. De informatie-uitwisseling - het ‘aanroepen’ - verloopt via een ESB. Een ESB is een infrastructuur component en vormt de technische backbone van een Service Gerichte Architectuur. Eindgebruikers maken via een gebruikersinterface, ofwel interactie kanaal, gebruik van een applicatie. De gebruikersinterface zorgt voor de interactie met de gebruiker. Voor bedrijven en overheidsorganisaties die de ‘eigen’ applicaties niet direct willen of kunnen koppelen met services, wordt een portaal aangeboden. Het portaal maakt gebruik van dezelfde services als bedrijven en overheidsorganisaties die hun systemen direct koppelen. Hierdoor is alle functionaliteit zowel via een webbrowser als via ‘eigen’ applicaties toegankelijk. Op deze wijze wordt gegarandeerd dat het resultaat hetzelfde is ongeacht of een actie wordt geïnitieerd vanuit het webportaal of vanuit een afnemend systeem. De toegang tot de webgebaseerde gebruikersinterface, het webportaal, loopt via internet. Om communicatie tussen de webbrowser en het portaal af te schermen wordt gebruik gemaakt van een beveiligde verbinding. Pagina 6 van 38 Definitief | IMEA - Katern - Service Gerichte Architectuur | Versie 1.0 Figuur 1. Voorbeeld van een systeem bestaande uit een samenstel van services In een SGA is het noodzakelijk om nieuwe systemen volledig servicegericht te ontwerpen. Daarbij wordt zoveel mogelijk gebruik gemaakt van bestaande services (hergebruik). De functionaliteiten van het systeem moeten zo ontwikkeld worden, dat deze eenvoudig als services te ontsluiten zijn. 2.1.1 Architectuurkeuze Service Gerichte Architectuur Bij het ontwikkelen van systemen worden Service Gerichte Architectuur principes toegepast. Motivering Een systeem kan eenvoudig aangepast worden aan veranderende behoeften. SGA principes zorgen voor flexibiliteit en maakt het systeem beter onderhoudbaar, aanpasbaar en herbruikbaar. De modulaire servicegerichte opzet (componenten) biedt de mogelijkheid om de ontwikkeling op te delen in overzichtelijke releases. Componenten kunnen onafhankelijk van elkaar (door)ontwikkeld en in productie genomen worden. Wijzigingen kunnen eenvoudig, met minimale impact en tegen relatief lage kosten doorgevoerd worden. Het gebruik van Service Gerichte Architectuur wordt gestimuleerd vanuit NORA. 2.2 Servicecontract Een belangrijk aspect van een service is dat de afspraken die de afnemer en aanbieder maken, worden vastgelegd in een overeenkomst, een contract. Het contract is in begrijpelijke taal en beschrijft de service in termen van: wat de service doet, input, output, mogelijke foutmeldingen, semantiek van uitgewisselde informatie, service level agreement (SLA) en quality of service (QoS). Een contract kan elementen bevatten die specifiek zijn voor een bepaalde afnemer. Er staan ook niet functionele eisen in zoals maximale responsetijd, beschikbaarheid, betrouwbaarheid, hoe de service omgaat met transacties en de intensiteit waarmee Pagina 7 van 38 Definitief | IMEA - Katern - Service Gerichte Architectuur | Versie 1.0 de service bevraagd mag worden. Vanuit het perspectief van een service afnemer beschrijft een contract alles wat de afnemer moet weten om de service te kunnen gebruiken. 2.3 Performance Services zijn geschikt voor real time verwerking. Dit stelt hoge eisen aan de beschikbaarheid, verwerkingstijd, doorlooptijd en responsetijd van services. Bij het meten van de performance van services zijn drie aspecten van belang: de verwerkingstijd, de doorlooptijd en de responsetijd. Deze zijn in de volgende figuur weergegeven. Figuur 2. Verwerkingstijd, doorlooptijd en responsetijd Definities Verwerkingstijd: de tijd die een koppeling op de ESB intern nodig heeft om een vraagbericht te verwerken. Hierbij worden de verwerkingstijden van vraag- en antwoordbericht bij elkaar opgeteld. Doorlooptijd: de tijd die een koppeling nodig heeft om een vraagbericht te verwerken en het antwoordbericht samen te stellen. Hierin zit dus ook de tijd die de service aanbieder nodig heeft om te antwoorden. Responsetijd: de tijd vanaf het moment dat een service afnemer (client) een koppeling op de ESB aanroept tot het moment dat het antwoordbericht door de service afnemer ontvangen wordt. Hierin zit ook de tijd die de ESB en de aanbieder nodig hebben om te antwoorden en de netwerk latency (netwerkvertraging). Het is belangrijk om de tijd voor eindgebruikers zo kort mogelijk te houden. Vanuit oogpunt van usability wordt een responsetijd van 6-8 seconden acceptabel geacht. Het gaat hierbij om de tijd die de eindgebruiker ervaart achter het scherm. Dit betekent dat de tijd die een services aanbiedend systeem heeft om een synchrone vraagbericht te verwerken, rekening houdend met latency (vertraging door tussenliggende schakels en netwerk), maximaal 1 seconde mag zijn. Heeft een service meer verwerkingstijd nodig dan dient er gebruik gemaakt te worden van asynchrone communicatie. Voor het in productie nemen van services dienen deze altijd een performancetest te ondergaan om zeker te stellen dat er voldaan wordt aan de gestelde prestatie-eisen. Hierbij dient rekening gehouden te worden met effecten van het verwachte aantal gelijktijdige acties, aanroepen van gecombineerde services, etc. Pagina 8 van 38 Definitief | IMEA - Katern - Service Gerichte Architectuur | Versie 1.0 2.4 Onderscheid externe en interne informatie-uitwisseling Bij de informatie-uitwisseling wordt onderscheid gemaakt tussen uitwisselen met interne en externe systemen. 2.4.1 Externe informatie-uitwisseling Voor externe informatie-uitwisseling wordt gebruik gemaakt van overheidsbrede bouwstenen en standaarden zoals Digikoppeling, Diginetwerk, PKIoverheid certificaten, StUF, etc. Figuur 3. Koppelvlak met externe systemen Definities Een informatiemodel beschrijft de objecttypen en hun definities en eigenschappen binnen een bepaald domein. Dit vereenvoudigt de uitwisseling van informatie. Een berichtmodel beschrijft de berichten waarmee gegevens van het informatiemodel worden uitgewisseld. Een berichtdefinitie beschrijft de daadwerkelijke inhoud van de berichten die uitgewisseld worden. 2.4.2 Interne informatie uitwisseling Interne systemen worden afgeschermd van de complexiteit van externe informatieuitwisseling. Bij interne informatie-uitwisseling zijn overheidsbrede standaarden niet van toepassing en wordt informatie uitgewisseld op basis van ‘lichtgewicht’ services en IenM specifieke standaarden. Pagina 9 van 38 Definitief | IMEA - Katern - Service Gerichte Architectuur | Versie 1.0 Figuur 4. Interne en externe systemen ontkoppelen door gebruik te maken van intern en extern koppelvlak 2.4.3 Architectuurkeuze onderscheid interne en externe informatie-uitwisseling Er is gekozen voor een onderscheid tussen interne en externe informatieuitwisseling waardoor interne systemen worden afgeschermd van de complexiteit van externe informatie-uitwisseling. Motivering De interne informatie-uitwisseling wordt eenvoudiger. De overhead van de interne informatie-uitwisseling wordt beperkt (lichtgewicht). Voor de interne informatie-uitwisseling kan een eigen modellering worden gehanteerd met eigen informatiemodellen en bijbehorende berichtenmodellen (intern koppelvlak versus extern koppelvlak). Interne systemen worden afgeschermd van wijzigingen in de externe informatie-uitwisseling. 2.5 Stelsel van ESB’s met het Centraal Aansluitpunt IenM maakt gebruik van verschillende infrastructuren voor het hosten van systemen. Elke infrastructuur beschikt over een eigen ESB. Samen vormen deze ESB’s een stelsel dat de interne informatie-uitwisseling verzorgt met behulp van lichtgewicht berichten. Interne systemen en ESB’s worden afgeschermd van de complexiteit van het koppelen met externe services door middel van het Centraal Aansluitpunt. Het Centraal Aansluitpunt faciliteert de informatie-uitwisseling met externe services. Het betreft zowel informatie-uitwisseling van binnen naar buiten als van buiten naar binnen. In de volgende figuur is de basisopzet van het stelsel van ESB’s met het Centraal Aansluitpunt weergegeven. Pagina 10 van 38 Definitief | IMEA - Katern - Service Gerichte Architectuur | Versie 1.0 Figuur 5. Stelsel van ESB’s met het Centraal Aansluitpunt 2.6 Centraal Aansluitpunt Vanuit het Centraal Aansluitpunt wordt de koppeling met een externe service eenmalig geconfigureerd, bijvoorbeeld met een basisregistratie. Interne systemen koppelen via het stelsel van ESB’s met het Centraal Aansluitpunt. De services waarmee interne systemen basisregistraties bevragen stellen afnemers in staat om een eenvoudige vraag te stellen, bijvoorbeeld “Geef mij de gegevens behorende bij postcode huisnummer”. Dit vraagbericht gaat via het stelsel naar het Centraal Aansluitpunt. Het Centraal Aansluitpunt vertaalt dit intern vraagbericht naar een extern vraagbericht. Het ontvangen extern antwoordbericht wordt door het Centraal Aansluitpunt vertaald naar een eenvoudig intern antwoordbericht. Intern wordt gebruik gemaakt van een eigen informatiemodel met bijbehorend berichtenmodel. Vertaling gebeurt door het Centraal Aansluitpunt. Hiermee worden de IenM systemen en de externe systemen ontkoppeld en worden wijzigingen in externe koppelvlakken zoveel mogelijk opgevangen in het Centraal Aansluitpunt. Het Centraal Aansluitpunt beschikt over verschillende adapters. Deze adapters ondersteunen de Digikoppeling protocollen ebMS en WUS, aangevuld met de Digikoppeling Grote Berichten. Indien nodig vertaalt een andere adapter de interne berichten naar het StUF protocol en vice versa. Externe koppelingen die gebruik maken van Digikoppeling of StUF lopen altijd via het Centraal Aansluitpunt. Pagina 11 van 38 Definitief | IMEA - Katern - Service Gerichte Architectuur | Versie 1.0 Figuur 6. Centraal Aansluitpunt Het Centraal Aansluitpunt biedt daarnaast nog aanvullende functionaliteit zoals het bijhouden van audit informatie1, archiveren van berichten, monitoren (gebruiksstatistieken) en het centraal opslaan en ontsluiten van een kopie van basisregistratie informatie. Deze centrale kopie wordt gebruikt indien een basisregistratie niet beschikbaar is of als de reactietijd bij het bevragen langer is dan in de SLA afgesproken. Het Centraal Aansluitpunt is ingericht op basis van een zogenoemde ESB. 2.6.1 Architectuurkeuze stelsel van ESB’s met een Centraal Aansluitpunt De ESB’s in de IenM infrastructuren vormen samen een stelsel van ESB’s dat de interne informatie-uitwisseling verzorgt. Door het Centraal Aansluitpunt wordt het stelsel afgeschermd van de complexiteit van het koppelen met externe services. Motivering Communicatie tussen interne en externe systemen wordt gecentraliseerd en gefaciliteerd door het Centraal Aansluitpunt. Het ontsluiten van basisregistraties wordt doeltreffender en goedkoper, omdat een externe koppeling slechts eenmaal gelegd hoeft te worden. In het Centraal Aansluitpunt worden kennis en expertise gebundeld over basisregistraties, Digikoppeling, StUF, Diginetwerk, Digipoort, informatie- en berichtmodellen, etc. De inspanning om individuele systemen te koppelen worden lager, omdat de leveranciers van deze systemen niet hoeven te beschikken over deze specifieke kennis en expertise. 1 Welk systeem en of persoon bevraagt een service. Pagina 12 van 38 Definitief | IMEA - Katern - Service Gerichte Architectuur | Versie 1.0 Figuur 7. Interne systemen ontkoppelen van de complexiteit van het koppelen met externe services 2.7 Domein specifieke koppelingen Als het centraal leggen van een koppeling niet bijdraagt aan de doelstellingen: bundelen expertise, verhogen beheerbaarheid en flexibiliteit en beperken van afhankelijkheden van wijzigingen in (externe) koppelvlakken, dan wordt deze koppeling niet vanuit het Centraal Aansluitpunt gelegd, maar vanuit een ESB in het specifieke domein. Het leggen van koppeling vanuit een specifiek domein kan ook gewenst zijn vanwege het beperken van afhankelijkheden tussen domeinen, het lokaal houden van communicatie (latency beperken), of als daarvoor specifieke domeinkennis vereist is. Ten overvloede: Communicatie met externe systemen loopt altijd via het Centraal Aansluitpunt. 2.8 Beveiliging De beveiliging richt zich primair op de gegevensuitwisseling tussen organisaties en is gebaseerd op het concept van vertrouwde domeinen. Het concept van de vertrouwde domeinen gaat er van uit dat binnen een vertrouwd domein de beveiligingsmaatregelen aan de informatiebeveiligingseisen voldoen, waardoor service afnemers en service aanbieders elkaar kunnen vertrouwen. Voor de gegevensuitwisseling binnen haar vertrouwde domein kan iedere organisatie zelf bepalen welke beveiligingsmaatregelen zij neemt. Autorisatie en beveiligingsmaatregelen bepalen welke services beschikbaar zijn voor een services afnemend systeem. Per service wordt bepaald of deze naar buiten toe beschikbaar is en welke beveiligingsmaatregelen nodig zijn. Dat een services afnemend systeem geautoriseerd is voor een service, betekent nog niet dat het afnemende systeem geautoriseerd is voor alle data van die service. Een service moet garanderen dat een afnemend systeem alleen toegang heeft tot data Pagina 13 van 38 Definitief | IMEA - Katern - Service Gerichte Architectuur | Versie 1.0 waartoe dit services afnemende systeem geautoriseerd is, dit wordt ook wel filteren genoemd. Filteren kan afhankelijk van de service op basis van organisatie, rol en gebruiker gebeuren. Bij elke serviceaanroep moet het mogelijk zijn om de unieke organisatie-, rol- of gebruiker ID af te leiden. De service roept een autorisatieservice aan met één of meerdere van deze ID’s. De autorisatieservice bepaalt of het afnemende systeem geautoriseerd is om de service te gebruiken. Indien het services afnemende systeem geautoriseerd is, worden de gegevens gefilterd op basis van organisatie-, rol- en gebruiker ID. 2.9 Versies In een servicegerichte architectuur is het van belang goed om te gaan met nieuwe versies van services. Het is immers ongewenst om van service afnemers een gedwongen of gelijktijdige migratie te eisen, bij het beschikbaar komen van een nieuwe versie van de service. Het moet mogelijk zijn om nieuwe versies van services geleidelijk in te voeren. Daarvoor is het nodig om gelijktijdig meerdere versies van een service koppelvlak aan te bieden. Services afnemers moeten expliciet kunnen kiezen wanneer ze overgaan op een nieuwe versie. Verschillende versies van een service zijn herkenbaar aan het versienummer in de naamgeving van de URI. Vanaf het moment dat een nieuwe versie van een service in productie is, wordt de oude versie van de service in principe maximaal een jaar ondersteund. De afnemers van de ‘oude’ service hebben dan voldoende tijd om hun systemen aan te passen en geschikt te maken voor de nieuwe versie. 2.9.1 Architectuurkeuze ondersteuning versies Vanaf het moment dat een nieuwe versie van een service in productie is, wordt de oude versie van de service nog maximaal een jaar lang ondersteund. Motivering Services krijgen een nieuwe versienummer in de naamgeving (URI) als het koppelvlak wijzigt. De afnemers van de ‘oude’ service hebben dan voldoende tijd om hun systemen aan te passen en geschikt te maken voor de nieuwe versie. De beheerlasten aan de kant van de aanbieder worden beperkt. Pagina 14 van 38 Definitief | IMEA - Katern - Service Gerichte Architectuur | Versie 1.0 3 Service gerichte architectuur: verdieping 3.1 Servicelagenmodel Eén van de belangrijkste voordelen van een servicegerichte architectuur is de mogelijkheid om efficiënt met veranderingen om te gaan. De meest fundamentele eenheid van een SGA is de dienst (service). Een service gerichte architectuur (SGA) is gebaseerd op een verzameling van diensten. De "stabiele" diensten zijn gescheiden van "veranderlijke" bedrijfsprocessen. Deze diensten worden georkestreerd tot IT-oplossingen. Daardoor kunnen veranderingen van business eisen vaak worden ingevuld door het wijzigen van een bestaand proces of het creëren van een nieuw proces op basis van de bestaande diensten. Deze aanpak zorgt er voor dat veranderingen eenvoudiger (sneller en goedkoper) doorgevoerd kunnen worden door het (opnieuw) samenstellen van oplossingen op basis van de herbruikbare diensten. Diensten worden middelen, die gedeeld worden door verschillende business oplossingen. Hierdoor wordt het mogelijk om business oplossingen en diensten door verschillende teams parallel en autonoom te ontwikkelen, elk met een eigen release- en beheercyclus. De SGA van IenM is gebaseerd op een servicelagenmodel. Dit model biedt een manier om services te categoriseren met gemeenschappelijke kenmerken. Verschillende servicelagen zorgen voor ontkoppeling, onderhoudbaarheid, wendbaarheid, flexibiliteit en hergebruik. Het servicelagenmodel kent drie lagen: Processervices Business services Technische services Onderstaande plaat is een voorbeeld van een concrete invulling van het servicelagenmodel. Figuur 8. Voorbeeld van het servicelagenmodel Pagina 15 van 38 Definitief | IMEA - Katern - Service Gerichte Architectuur | Versie 1.0 De proces servicelaag is specifiek en maximaal aangesloten bij het bedrijfsproces dat ondersteund wordt. De business servicelaag is generiek en maximaal herbruikbaar. De technische services zijn applicatie specifiek en meestal erg technisch van aard. De business laag zorgt er voor dat de technische en product specifieke details van een systeem verborgen blijven, zodat afnemers deze services kunnen gebruiken zonder kennis te hebben van het onderliggend systeem. Figuur 9. De servicelagen zorgen voor maximale hergebruik op de business laag Het is belangrijk om op te merken dat er naast services die business logica bevatten er ook services zijn die niet-business logica bevatten. Het laatste type zijn services die ook wel aangeduid worden als infrastructuur services deze groeperen functionaliteit volgens een verwerkingscontext in plaats van een business context. Voorbeelden hiervan zijn een beveiliging service (bijvoorbeeld authenticatie) en een logging service. Abstractie, een van de meest fundamentele SGA principes, steunt volledig op de inzet van proces- en business services om bedrijfsproces en -functionaliteit, ofwel business logica, in eigen domeinen te scheiden en isoleren. Dit zorgt voor een aantal van de strategische voordelen van SGA zoals ontkoppeling, onderhoudbaarheid, wendbaarheid, flexibiliteit en hergebruik. Servicegerichtheid is een manier om geautomatiseerde business logica zo te structureren dat dit zorgt voor een aanzienlijk verbetering van de flexibiliteit en wendbaarheid om in te spelen op veranderingen. Dit wordt bereikt door gebruik te maken van goed gedefinieerde business services die functionaliteit groeperen binnen specifieke business contexten. Met deze opzet kan efficiënt gereageerd worden op veranderingen in business eisen en business processen door het opnieuw samenstellen van diensten. Samenvattend: dit gewenste niveau van organisatorische flexibiliteit vereist het creëren van een servicelagenmodel. Deze servicelagen zorgen voor een afgebakende verzameling business services die gecoördineerd kunnen worden, het introduceert het concept van servicelaag abstractie en zorgt voor ontkoppeling en alignment tussen de business- en automatiseringsdomeinen van een onderneming. In de volgende paragrafen worden de verschillende lagen van het servicelagenmodel nader toegelicht. Pagina 16 van 38 Definitief | IMEA - Katern - Service Gerichte Architectuur | Versie 1.0 3.1.1 Interactiekanalen Een interactiekanaal ofwel front-end is een manier waarmee eindgebruikers interactie hebben met services. Voorbeelden van interactiekanalen zijn een desktop applicatie, een mobiele applicatie en een webapplicatie. Interactiekanalen bestaan uit interne en externe applicaties die services afnemen. Voor organisaties die de ‘eigen’ applicaties niet direct willen of kunnen koppelen met services wordt door IenM een interactiekanaal aangeboden. Dat IenM interactiekanaal maakt gebruik van dezelfde services als organisaties die hun applicaties direct koppelen. Hierdoor wordt gegarandeerd dat het resultaat over interne en externe interactiekanalen heen hetzelfde is ongeacht of een actie wordt geïnitieerd vanuit het IenM interactiekanaal of vanuit een applicatie. 3.1.2 Processervices Processervices zijn implementaties van bedrijfsproces logica die een aantal opeenvolgende stappen uitvoert om een specifieke taak te realiseren. In essentie zijn processervices verantwoordelijk voor het coördineren van de verschillende business services. Deze processervice laag is specifiek en maximaal aangesloten bij het bedrijfsproces dat ondersteund wordt. Deze laag kent geen of zeer beperkte technische details. Het combineren van verschillende services tot een nieuwe service wordt in servicegerichte termen orkestreren genoemd. Een processervice bestaat uit een aantal stappen met een bepaalde samenhang. Processervices zorgen voor het onafhankelijk van elkaar maken (ontkoppelen) van het bedrijfsproces en functionaliteit. Het bedrijfsproces dat gevoelig is voor verandering en de functionaliteit die minder gevoelig is voor verandering. Hierdoor is het eenvoudiger, beheersbaarder en goedkoper om een (bedrijfs)proces aan te passen zonder onderliggende systemen of componenten aan te passen. Een van de voordelen die het hanteren van processervices biedt is efficiënt onderhoud. Wanneer bedrijfsproces logica diepgeworteld onderdeel is van systemen vereisen wijzigingen in deze logica vaak grote herontwikkeling. Door een scheiding of laag voor deze procesdetails te hanteren is het eenvoudiger om deze te onderhouden en wijzigen zonder het onderliggende systeem te wijzigen omdat functionaliteit niet rechtstreeks aan het proces gekoppeld is. 3.1.3 Business services Business services zijn implementaties van functies die gerelateerd zijn aan entiteiten die betekenisvol zijn voor de business (business context) en agnostisch (onafhankelijk) zijn ten aanzien van het bedrijfsproces en onderliggend systeem. Deze functies zullen altijd blijven bestaan, ongeacht hoe vaak de bedrijfsprocessen of de onderliggende systemen veranderen. Deze services omvatten in veel gevallen meerdere technische services. Vanwege behoud van overzicht is een logische scheiding noodzakelijk en zijn business services domein specifiek. Deze servicelaag is generiek en direct of via de processervices maximaal herbruikbaar. Deze laag kent geen of zeer beperkte technische details. Een business service zorgt er voor dat de technische, platform specifieke en implementatie details van een systeem verborgen blijven, zodat afnemers deze services kunnen gebruiken zonder kennis te hebben van de onderliggende systemen. Er worden goed gedefinieerde en technologie en leverancier neutrale interfaces aangeboden om hiermee de backend systemen toegankelijk te maken voor afnemers. Pagina 17 van 38 Definitief | IMEA - Katern - Service Gerichte Architectuur | Versie 1.0 Afnemers kunnen te maken hebben met meerdere business services. Waar mogelijk moeten afnemers informatie gelijktijdig kunnen opvragen en wijzigen in verschillende business services. Dit wordt gerealiseerd middels samengestelde services. Samengestelde services maken gebruik van meerdere technische services of business services om een gecombineerde service aan te bieden. Een gecombineerde service verbergt complexiteit voor de afnemer. Deze zorgt er voor dat gebruikte services in de juiste volgorde worden aangeroepen en combineert het resultaat of geeft een subset van het resultaat terug. Bij samengestelde services is aanvullende ondersteuning voor transacties noodzakelijk. IenM kiest voor het compensatiemechanisme om koppeling tussen services te voorkomen. Dit houdt in dat een service een uitgevoerde wijziging zelfstandig moet kunnen terugdraaien of dat er een mogelijkheid is om dit handmatig te doen. Door functionaliteit te baseren op business services vormt de processervicelaag een bovenliggend besturingslaag die de business services aanstuurt. Wanneer er wijzigingen aan een bedrijfsproces nodig zijn, wordt de processervicelaag beïnvloed, maar de business services worden zoveel mogelijk afgeschermd voor deze wijzigingen. Het proces moet mogelijk opnieuw worden samengesteld, uitgebreid worden of zelfs gecreëerd, maar het belangrijkste voordeel hier is dat er meestal geen fundamentele herontwikkeling nodig is en de scope van de wijziging beperkt is. Hierdoor neemt de algehele impact van de veranderingen af. Door deze opzet zijn business services maximaal herbruikbaar als bouwstenen. 3.1.4 Technische services Technische services zijn basisservices. Vaak zijn technische services applicatie specifiek en meestal erg technisch van aard. Het gebruik van deze technische services vereist kennis van het achterliggend systeem. Dit zijn meestal webservices die onderdeel zijn van een applicatie en daarmee niet leverancier- of productneutraal zijn. Het koppelvlak is leverancier- of product specifiek. Deze services worden nooit direct door afnemers aangeroepen maar altijd via een processervice of business service. Hierdoor is het mogelijk om een onderliggend systeem en/of bijbehorende technische services te vervangen met geen of minimale impact voor de afnemers. Technische services zijn services die informatie ophalen uit- of wegschrijven naar één systeem. Deze services representeren fundamentele en afgebakende operaties in een systeem. Schrijfservices zorgen er voor dat gegevens toegevoegd of bijgewerkt worden zonder dat er inconsistenties ontstaan in het achterliggend systeem. 3.1.5 Backend Een backend bevat één of meerdere componenten (systemen), in de meeste gevallen is het een combinatie van meerdere componenten. Voorbeelden van backend componenten zijn database, applicatieserver, content management systeem (CMS) en document management systeem (DMS). Pagina 18 van 38 Definitief | IMEA - Katern - Service Gerichte Architectuur | Versie 1.0 3.2 Service principes Figuur 10. Services worden op verschillende manieren logisch gegroepeerd Een dienst is een prestatie die het resultaat is van een aantal uitgevoerde activiteiten, taken en handelingen, waarbij er een vergoeding verschuldigd is voor de geleverde prestatie (niet voor de geleverde inspanning). Een dienst wordt geleverd door een dienstverlener (service aanbieder). Servicelagen bieden een manier om services te categoriseren om het proces te ontkoppelen van de onderliggende techniek. Business services zijn business domein specifiek. Business services worden in business domeinen c.q. functionele groepen ingedeeld. Een functionele groep categoriseert services die een logische eenheid vormen. Business services hebben alleen kennis van het eigen business domein en niet van andere business domeinen. 3.3 Communicatieprincipes Elke servicelaag kent alleen de onderliggende servicelagen. Het aanroepen van een service loopt altijd van bovenliggende laag naar onderliggende laag, maar niet andersom. Business services die over functionele groepen heen communiceren, doen dit via processervices. Elke laag en afnemer mag de proces laag gebruiken. Processervices orkestreren en aggregeren de business services. Business services orkestreren en aggregeren de technische services. Technische services zijn vaak verweven met de applicatie die zij ontsluiten. Het gebruik vraagt om kennis van deze applicaties. Om wendbaar en flexibel te blijven en te zorgen dat applicaties vervangbaar zijn mogen applicaties (afnemers) technische services nooit direct aanroepen, deze worden altijd via een processervice of business service aangeroepen. Het ontwikkelen van een business service die nodig is om een technische service neutraal te ontsluiten is de verantwoordelijkheid van de eigenaar van het systeem waar de technische service toebehoort. Elke afnemer van een service is zelf verantwoordelijk voor de juistheid, volledigheid en tijdigheid van de gegevens die nodig zijn voor een service aanroep. Dit betekent bijvoorbeeld dat de afnemer een pre-controle uitvoert of Pagina 19 van 38 Definitief | IMEA - Katern - Service Gerichte Architectuur | Versie 1.0 alle verplichte informatie ingevuld, geldig en compleet is, voordat deze wordt aangeboden aan een service. Services en backend controleren op hun beurt of de informatie geldig is voordat deze verwerkt wordt. De pre-controle voorkomt pingpongen tussen afnemer en de verschillende services en draagt bij aan een betere gebruikerservaring. Een pre-controle hoeft niet perfect te zijn, het doel is zorgen dat processen in de meeste gevallen goed gaan. Daarbij gaat het om een goede balans en niet om een perfecte pre-controle. 3.4 Ontwerpprincipes Een SGA kent dezelfde wetmatigheden als gedistribueerde systemen en systeemintegratie. Het goed opzetten van dit soort systemen is lastig omdat er afhankelijkheden worden gecreëerd tussen systemen. Er ontstaat een keten van afhankelijke activiteiten. Een schakel in deze keten kan en zal falen. Bij het ontwerp dient hier rekening mee gehouden te worden. Bij het ontwerpen en implementeren van afnemende systemen moet rekening gehouden worden dat aanroepen langer kunnen duren dan verwacht, dat aanroepen zullen falen en dat een aanbiedend systeem niet beschikbaar zal zijn. Een services wordt opgesplitst in kleinere services wanneer veel controle, regie en sturing nodig is. De namen van services en bijbehorende packages, URI’s, WSDL’s, XSD’s, etc. bevatten geen verwijzingen naar een leverancier, product, implementatie en technologie. De namen van services bevatten een aanduiding van de te leveren diensten. Voorbeelden: VerwerkenKlantmutaties, AfhandelenPrintopdrachten, ControlerenFacturen, AfwijzenAanvraag, SamenstellenKlantbeeld. Een service is onafhankelijk van de onderliggende technologie. Dynamische processen zijn ontkoppelt van stabiele functionaliteit. Services zijn autonoom en bevorderen hergebruik doordat ze een hoge samenhang kennen en onafhankelijk zijn van elkaar (lage koppeling): individuele services hebben een duidelijke verantwoordelijkheid binnen het geheel en kennen een lage koppeling. Samenhang betreft de functionele samenhang (cohesie) en het beheersbaar houden van complexiteit. De taken van een service moeten draaien om één onderwerp. Een service met lage samenhang doet dingen die weinig met elkaar te maken hebben. Services met lage samenhang verrichten te veel taken en delegeren deze niet. Een lage of slechte samenhang kan het noodzakelijk maken een service te splitsen. Het gaat hierbij om business services en technische services. Processervices mogen wel complex zijn, indien gewenst kunnen ook deze opgesplitst worden. Koppeling betreft de mate waarin een service verbonden is met, kennis nodig heeft van, of afhankelijk is van andere services. Services dienen zo onafhankelijk mogelijk te zijn, om te voorkomen dat wijzigingen in een service leidt tot veranderingen in andere services. Een service heeft een contract en een implementatie. Het contract beschrijft de gestandaardiseerde berichten (koppelvlak) die toegang geven tot de service. Het contract schermt daarmee de implementatiedetails af van de aanbieder. Afnemers van een service hebben geen kennis (nodig) van de implementatie, waardoor het mogelijk is om de implementatie aan te passen zonder dat dit impact heeft op afnemers. Een backend kan bestaan uit verschillende samenhangende systemen. De keuze voor een SGA betekent niet dat een backend intern per definitie gebruik maakt Pagina 20 van 38 Definitief | IMEA - Katern - Service Gerichte Architectuur | Versie 1.0 van services. Om redenen van performance en beperken van complexiteit kan het wenselijk zijn om tussen deze systemen onderling direct te koppelen. Dit is toegestaan zolang de gebruikte functionaliteit van de backend niet extern als service wordt aangeboden aan afnemers. Voor generieke zaken zoals identificatie, authenticatie, autorisatie, onweerlegbaarheid, encryptie en procesbesturing, worden generieke voorzieningen en services gebruikt. De communicatie tussen afnemers en aanbieders is ontkoppeld en verloopt via de ESB. Afnemers en aanbieders koppelen nooit rechtstreeks (point-to-point). De berichten zijn herleidbaar in de keten. Een bericht wordt voorzien van een correlatie ID. Dit ID wordt door elk component gelogd, hierdoor is het eenvoudig om een transactie in de keten te volgen en om fouten te achterhalen en herstellen. 3.5 Proces en compositie 3.5.1 Orkestratie Het opeenvolgend uitvoeren een aantal geautomatiseerde processtappen met een bepaalde volgorde en samenhang wordt ondersteund door middel van Business Process Execution Language (BPEL). BPEL is een gestandaardiseerde oplossing die de interactie tussen verschillende services orkestreert op basis van configuratie en de mogelijkheid biedt om complexe (langlopende) processen te beschrijven, inclusief foutafhandeling en compensatie handelingen. Handmatige processtappen worden ondersteund door middel van een taken service of BPEL extensie BPEL4People. 3.5.2 Taken service Het BPEL proces biedt de mogelijkheid om handmatige activiteiten op te nemen in een taken service. Een taken service zet de benodigde handmatige activiteiten in een takenlijst. Deze takenlijst is gekoppeld aan een gebruiker of een rol. Het systeem communiceert met de taken service om de takenlijst voor de gebruiker of rol op te halen. De gebruiker of gebruikers met die rol kunnen de taken in de lijst zien en uitvoeren. Als de taak is uitgevoerd koppelt de taken service het resultaat terug naar het BPEL proces en gaat de proces service verder. 3.5.3 BPEL4People BPEL4People is een gestandaardiseerde extensie die BPEL uitbreidt met de mogelijkheid om rol gebaseerde handmatige activiteiten op te nemen als onderdeel van een proces. Een proces service kan de benodigde handmatige taak in een takenlijst zetten. Deze takenlijst is gekoppeld aan een gebruiker of een rol. De gebruiker of gebruikers met die rol kunnen de taken in de lijst zien en uitvoeren. Als de taak is uitgevoerd gaat de proces service verder. IenM heeft de voorkeur om gebruik te maken van BPEL4People om handmatige processtappen te integreren met BPEL. Pagina 21 van 38 Definitief | IMEA - Katern - Service Gerichte Architectuur | Versie 1.0 4 Informatie-uitwisseling 4.1 Inleiding Systemen wisselen steeds vaker geautomatiseerd informatie uit met andere systemen, bijvoorbeeld met de basisregistraties. Een dergelijke informatieuitwisseling vindt plaats binnen de context van een proces. Een proces bestaat vrijwel altijd uit deelprocessen en interactieprocessen tussen deze deelprocessen. Het interactieproces tussen twee systemen wordt het koppelvlak genoemd. In de volgende figuur is een proces weergegeven met deel- en interactieprocessen, koppelvlakken en ondersteunende systemen. Figuur 11 Een proces met deel- en interactieprocessen, koppelvlakken en ondersteunende systemen Om informatie via een koppelvlak geautomatiseerd uit te kunnen wisselen zijn er meerdere afspraken nodig. Om inzichtelijk te maken welke afspraken dat zijn, wordt gebruik gemaakt van twee modellen: het informatie-uitwisseling lagenmodel en het elektronisch berichtmodel. 4.2 Informatie-uitwisseling lagenmodel Het informatie-uitwisseling lagenmodel kent vijf lagen, te weten bedrijfsproces, gegevens, applicatie, communicatiefunctie en communicatievoorziening. In het model ondersteunt elke laag de bovenliggende laag. Pagina 22 van 38 Definitief | IMEA - Katern - Service Gerichte Architectuur | Versie 1.0 Figuur 12 Het informatie-uitwisseling lagenmodel Per laag worden afspraken gemaakt over de acties, reacties en interpretaties, in het model is dit weergegeven met horizontale pijlen per laag (stippellijnen). De aard van de afspraken is weergegeven bovenop deze horizontale pijlen, de afspraken gaan over de uit te wisselen bedrijfsinformatie, gegevenselementen, bedrijfsdocumenten, bijlagen2 en berichten. Zie Bijlage A voor een uitgebreidere versie van het informatie-uitwisselingsmodel. Daarin zijn de verschillende niveaus van interoperabiliteit benoemd, de afspraken die per niveau van toepassing zijn en voorbeelden opgenomen. Door afspraken op elk van de vijf lagen te maken, wordt eenvoud van aansluiten, transparantie en interoperabiliteit bereikt: Datacommunicatievoorziening De datacommunicatievoorziening (het netwerk) zorgt voor het daadwerkelijke transport van de informatie van de ene locatie naar de andere. Op deze laag worden afspraken gemaakt over het transportprotocol (TCP) en het netwerkprotocol (IP). Communicatiefunctie De communicatiefunctie is te beschouwen als een elektronische postkamer die zorgt voor verzenden en ontvangen van elektronische berichten. Op deze laag worden afspraken gemaakt over het communicatieprotocol (HTTP, HTTPS, SMTP, JMS enz.). 2. Een bijlage bij een bedrijfsdocument bevat informatie die ongestructureerd is of waarvan de structuur niet primair relevant is voor de bedrijfstransactie. Pagina 23 van 38 Definitief | IMEA - Katern - Service Gerichte Architectuur | Versie 1.0 Applicatie De applicaties van de betrokken organisaties zijn dankzij de infrastructuur in staat om bedrijfsdocumenten en bijlagen uit te wisselen. Op deze laag worden afspraken gemaakt over de bedrijfsdocumenten en bijlagen die worden uitgewisseld. Gegevens De informatie in de bedrijfsdocumenten wordt gestructureerd en gegroepeerd met behulp van gegevenselementen. Op deze laag worden afspraken gemaakt over de betekenis en eigenschappen van gegevens, deze worden in gegevensmodellen en definities vastgelegd. Bedrijfsproces De uitgewisselde informatie zorgt er voor dat op het niveau van bedrijfsproces het gewenste interactieproces plaatsvindt. 4.3 Elektronisch berichtmodel In het elektronisch berichtmodel gaat het over de opbouw van een elektronisch bericht. Voor het bericht wordt gebruik gemaakt van Simple Object Access Protocol (SOAP). SOAP is een protocol dat de envelop en de regels beschrijft hoe een ontvanger om moet gaan met het bericht dat in de envelop zit. SOAP maakt het mogelijk om via services informatie uit te wisselen. De exacte vulling van SOAP berichten verschilt per service. Figuur 13 Voorbeeld van de opbouw van een elektronisch bericht Pagina 24 van 38 Definitief | IMEA - Katern - Service Gerichte Architectuur | Versie 1.0 Een bericht bestaat, naast de protocolheader, uit vier onderdelen, te weten berichtheader, bedrijfsdocument, berichtinhoud en bijlagen. Protocolheader De protocol header bevat transportprotocolinformatie, deze is uitsluitend van belang voor de samenwerking tussen twee communicatiefuncties (de ‘postkamers’). Bij een tweezijdige SSL verbinding wordt het SN (subject) veld uit het PKIoverheid certificaat van de aanvrager gehaald en toegevoegd aan de protocolheader. Met deze informatie uit het PKIoverheid certificaat zijn achterliggende koppelingen in staat een bevraging eenduidig te autoriseren. Berichtheader De berichtheader bevat protocolinformatie voor ontvangst (WS-Addressing), beveiliging (WS-Security), betrouwbaarheid (WS-ReliableMessaging) enz. Bedrijfsdocument Het bedrijfsdocument is een gestructureerde gegevensset bestaande uit gegevenselementen. Het bedrijfsdocument bevat informatie voor het (bedrijfs)proces. Berichtinhoud De berichtinhoud bevat de gestructureerde informatie die tussen twee bedrijfsprocessen wordt uitgewisseld. Bijlagen De bijlagen bevatten in beginsel ongestructureerde bedrijfsinformatie, zoals documenten, afbeeldingen of foto’s. De samenhang tussen het informatie-uitwisseling lagenmodel en het elektronisch berichtmodel komt tot uiting in de volgorde van het in- en uitpakken van de uit te wisselen informatie. Wanneer op de bedrijfsproceslaag behoefte is aan informatie uit een ander systeem, wordt dit verzoek ‘naar onderen toe’ per laag steeds verder ‘ingepakt’: het verzoek in gegevenselementen, de gegevenselementen in een bedrijfsdocument, het document in een bericht, het bericht in een enveloppe. De enveloppe gaat uiteindelijk naar het andere systeem. Na ontvangst door het andere systeem wordt de enveloppe ‘naar boven toe’ per laag steeds verder ‘uitgepakt’: bericht, bedrijfsdocument, gegevenselementen en tenslotte het verzoek. Het antwoord op het verzoek volgt de omgekeerde weg. Het antwoord wordt door het aanbiedende systeem weer laagsgewijs ingepakt en door het afnemende systeem uitgepakt. Na verwerking van de gevraagde informatie kan het bedrijfsproces weer verder met de volgende stap. Pagina 25 van 38 Definitief | IMEA - Katern - Service Gerichte Architectuur | Versie 1.0 5 Informatie-uitwisseling: verdieping 5.1 Enterprise service bus Een Enterprise Service Bus (ESB) is een infrastructuur component en vormt de technische backbone voor de geautomatiseerde informatie-uitwisseling. Een ESB richt zich primair op de informatie-uitwisseling tussen systemen en het garanderen van de betrouwbaarheid daarvan. Bij de betrouwbaarheid gaat het om zaken als gegarandeerde aflevering, gegarandeerde volgorde van aflevering, prioriteren van berichten, routeren van berichten, transformeren, converteren, throttling, traffic shaping, load balancing en failover. Door gebruikt te maken van een ESB hoeven service afnemers en service aanbieders deze complexe zaken niet zelf te implementeren, waardoor hun implementaties minder complex zijn. De keuze voor een ESB betekent dat deze een aantal van de volgende functies uitvoert. Figuur 14 Functies van de ESB Protocollen Ondersteuning voor zowel WUS (WSDL, UDDI en SOAP) als ebMS3 (Electronic Business Message Service). Bij interne communicatie wordt alleen WUS toegepast. Extern wordt WUS toegepast bij bevragen (synchrone gegevensuitwisseling, vraag en direct antwoord) en ebMS en WS-RM4 bij meldingen (asynchrone berichtuitwisseling, vraag en eventueel later een antwoord). Andere protocollen zijn FTP, JMS, SMTP etc. 3 4 ebMS is een protocol om de berouwbaarheid van berichtenuitwisseling te garanderen. Het regelt zaken zoals gegarandeerde aflevering, gegarandeerde volgorde van afhandeling en gegarandeerde eenmalige verwerking. WS-ReliableMessaging is onderdeel van WUS en kan als alternatief voor ebMS gebruikt worden. Pagina 26 van 38 Definitief | IMEA - Katern - Service Gerichte Architectuur | Versie 1.0 Procescoördinatie Het coordineren van het aanroepen van webservices, zodat het voor de afnemer als één samenhangend proces wordt ervaren (orkestreren). Transformeren Het vertalen tussen verschillende berichtstructuren (inhoud). Voor transformeren geldt dat systemen moeten voldoen aan de door IenM gehanteerde interne koppelvlakken. Dit betekent dat service afnemers en service aanbieders er zelf voor moeten zorgen dat hun berichten hieraan voldoen. Converteren Het vertalen tussen verschillende transportprotocollen. Service afnemende systemen en service aanbiedende systemen kunnen zelf kiezen welk transportprotocol zij gebruiken, het vertalen hiertussen wordt door de ESB verzorgd. Voor converteren geldt wel dat systemen moeten voldoen aan de door IenM gehanteerde interne transportprotocollen. Dit betekent dat service afnemers en service aanbieders er zelf voor moeten zorgen dat een ondersteunde transportprotocol wordt gebruikt. Routeren Op basis van regels bepalen voor welk systeem een bericht bedoeld is op basis van header (WS-Addressing). Betrouwbaarheid Aflevergarantie zorgt er voor dat een bericht (eenmalig) en in de juiste volgorde wordt afgeleverd bij de juiste ontvanger (WS-RM, ebMS, JMS). Transport Verschillende transportprotocollen worden naast elkaar gebruikt. Afnemende systemen en webservices aanbiedende systemen kunnen verschillende transportprotocollen gebruiken. De integratiefunctie zorgt voor vertaling tussen de verschillende transportprotocollen. Beveiligen Identificatie, authenticatie en autorisatie zorgen er voor dat alleen geauthentiseerde en geautoriseerde afnemende systemen toegang hebben tot een webservice. Encryptie op basis van PKI certificaten (intern) of PKIoverheid certificaten (extern) van gevoelige gegevens zorgt voor beveiliging op zowel transportniveau (SSL/TLS) als berichtniveau (WS-Security). Integriteit Het tekenen van berichten op basis van PKI certificaten (intern) of PKIoverheid certificaten (extern) zorgt er voor dat de authenticiteit en integriteit van berichten gewaarborgd is en dat gecontroleerd kan worden dat een bericht onderweg niet gewijzigd is en van de juiste organisatie afkomstig is (WS-Security). Auditing Het vastleggen van informatie zodat het onweerlegbaar is dat een bericht is ontvangen van of verzonden naar een bepaalde organisatie. Pagina 27 van 38 Definitief | IMEA - Katern - Service Gerichte Architectuur | Versie 1.0 Monitoren Event logging om het gebruik van services te monitoren en hierover te rapporteren (gebruiksstatistieken). Informatie-uitwisselingspatronen Ondersteuning voor verschillende informatie-uitwisselingspatronen, zoals synchroon (request response), asynchroon (fire and forget en publish subscribe) en gebeurtenissen (events). 5.2 Koppelvlak Er is één gecentraliseerd koppelvlak met de buitenwereld, de demilitarized zone (DMZ). Alle netwerkverkeer vanaf en met externe netwerken loopt via de DMZ. Alles buiten het eigen domein wordt als niet vertrouwd beschouwd. De DMZ is semivertrouwd, omdat derden hier toegang toe hebben. Het interne netwerk is vertrouwd en niet extern toegankelijk. De webserver, reverse proxy en API Gateway staan in de DMZ en zijn als enige servers voor de buitenwereld toegankelijk. De DMZ en intern netwerk zijn fysiek gescheiden netwerken. Er wordt compartimentering toegepast en tussen compartimenten wordt alleen noodzakelijke communicatie toegestaan. Het compromitteren van een server of applicatie heeft hierdoor niet direct gevolgen voor een ander compartiment. Voor compartimentering is een gelaagde opbouw noodzakelijk. Het beveiligingsniveau per laag neemt toe door communicatie tussen lagen te beperken tot de aangrenzende lagen. De presentatielaag communiceert met de servicelaag, de servicelaag met de systeemlagen en de systeemlagen met de datalaag. 5.3 Endpoints Een endpoint ofwel URI is een uniek adres waar op een service te benaderen is. Endpoints worden volgens de volgende systematiek opgebouwd. http(s)://<omgeving>.<domein>:[poort]/<service groep>/<versie>/<service> Een voorbeeld https://acc.ilt.nl:8043/inspectieview/bedrijven/v2/opvragenDossier Een URI element maakt gebruik van camel case, waarbij het eerste element begint met een kleine letter. omgeving Omgeving waarin de service actief is: dev, tst, int, acc, pre of prd. domein Domein waar de service actief is: ienm.nl, ilent.nl, rws.nl, nea.nl. Systemen die in de buitenwereld een eigen identiteit hebben, bijvoorbeeld Olo of LAVS, hebben een eigen domein (omgevingsloket.nl, landelijkasbestsysteem.nl). poort Poort waarop de server draait waarop de service actief is. Poort is optioneel en is alleen van toepassing indien direct met de ESB wordt gecommuniceerd. Standaard wordt via de reverse proxy of API Gateway Pagina 28 van 38 Definitief | IMEA - Katern - Service Gerichte Architectuur | Versie 1.0 gecommuniceerd en gebruik gemaakt van de standaard poorten, namelijk 80 (http) en 443 (https). functionele Functionele groep waar de service toe behoort. Dit is een logische groep groepering. Deze kan bestaan uit een of meerdere elementen gescheiden door een forward slash. versie Major versienummer van de service. Het versienummer begint bij 1 en wordt met 1 opgehoogd voor elke major release waar het koppelvlak wijzigt (niet backward compatible). Minor versienummers staan in het bericht zelf. service De service zelf. Deze kan bestaan uit een of meerdere elementen gescheiden door een forward slash. 5.4 Beveiliging De beveiliging richt zich primair op de gegevensuitwisseling tussen organisaties. Dit is het concept van vertrouwde domeinen. Het concept van de vertrouwde domeinen gaat er van uit dat binnen een vertrouwd domein de beveiligingsmaatregelen aan de informatiebeveiligingseisen voldoen, waardoor services afnemers en services aanbieders elkaar kunnen vertrouwen. Netwerken tussen vertrouwde domeinen worden als niet veilig beschouwd. Dit geldt ook voor overheidsnetwerken en Diginetwerk. Voor het transport over deze nietvertrouwde netwerken zijn beveiligingsmaatregelen noodzakelijk in de vorm van encryptie op transportniveau (SSL/TLS). Als berichten vertrouwelijke informatie bevatten wordt dit aangevuld met encryptie op berichtniveau. In de afspraken die een service aanbieder en service afnemer maken over informatie-uitwisseling wordt duidelijk vastgelegd welke beveiligingsmaatregelen van toepassing zijn. Berichten kunnen op de volgende niveaus beveiligd worden. Identificatie en authenticatie Identificatie en authenticatie bij externe communicatie wordt gerealiseerd door het toepassen van tweezijdige SSL/TLS, daarbij identificeren zowel het service aanbiedende als het service afnemende systemen zich met behulp van een PKIoverheid certificaat. Bij elke serviceaanroep wordt gecontroleerd of het organisatie ID in het bericht overeenkomt met het organisatie ID (OIN) in het PKIoverheid certificaat is en of deze organisatie geautoriseerd is voor de service die wordt aangeroepen. Intern zal na ingebruikname van de API Gateway OAuth toegepast voor identificatie en authenticatie. Transport Informatie in berichten wordt door encryptie op transportniveau (SSL/TLS) afgeschermd voor onbevoegden. De beveiliging op transportniveau is een zogenoemde point-to-point beveiliging. Voor een bericht dat via meerdere overdrachtspunten wordt getransporteerd, moet op elk overdrachtspunt opnieuw een beveiligde verbinding opgebouwd worden met het volgende overdrachtspunt. De informatie in de berichten is op de overdrachtspunten leesbaar. Indien het bericht vertrouwelijke informatie bevat dient beveiliging op transportniveau aangevuld te worden met encryptie op berichtniveau. Bericht Pagina 29 van 38 Definitief | IMEA - Katern - Service Gerichte Architectuur | Versie 1.0 Informatie in berichten wordt door encryptie op berichtniveau (WS-Security) afgeschermd voor onbevoegden. De beveiliging op berichtniveau is een zogenoemde end-to-end beveiliging. De informatie in de berichten is dan ook op de overdrachtspunten niet leesbaar. Normaal gesproken zijn service afnemers en service aanbieders zelf verantwoordelijk voor het versleutelen en ontsleutelen van berichten. IenM kiest er echter voor om deze verantwoordelijkheid op de ESB op te lossen en niet in de achterliggende systemen of services zelf. Integriteit Door berichten te ‘ondertekenen’ met behulp van een PKIoverheid certificaat is de authenticiteit en integriteit van deze berichten gewaarborgd en kan gecontroleerd worden dat een bericht onderweg niet gewijzigd is en afkomstig is van de juiste organisatie (WS-Security). De beveiliging op integriteitsniveau is een zogenoemde end-to-end beveiliging. Normaal gesproken zijn service afnemers en service aanbieders zelf verantwoordelijk voor het ondertekenen van berichten en het controleren hiervan. IenM kiest er echter voor om deze verantwoordelijkheid op de ESB op te lossen en niet in de achterliggende systemen of services zelf. Combinatie van niveaus Combinatie van bovengenoemde beveiligingsmaatregelen. Het classificatieniveau van de informatie die wordt uitgewisseld, bepaalt het vereiste beveiligingsniveau. In de volgende tabel zijn de verschillende classificatieniveaus van informatie weergegeven en de niveaus waarop beveiligingsmaatregelen genomen moeten worden. Classificatieniveau Transportniveau Niet geclassificeerd x Confidentieel x Vertrouwelijk x Berichtniveau Integriteitsniveau x x x Geheim Zeer geheim De laatste twee categorieën mogen niet elektronisch uitgewisseld worden. 5.5 Herleidbaarheid Berichten moeten herleidbaar zijn in de keten. Een bericht wordt voorzien van een uniek ID. Dit ID wordt door elk systeem gelogd, zodat het eenvoudig is om een transactie in de keten te volgen. Indien het berichtenverkeer wordt geïnitieerd door een actie van een gebruiker dan dient het initiërend systeem ook het gebruiker ID te registeren. Als een bericht het antwoord is op een voorgaand bericht dan wordt in het antwoordbericht het unieke ID het oorspronkelijke bericht opgenomen. Hierdoor worden berichten traceerbaar door de hele keten heen, dit vereenvoudigd het achterhalen en herstellen van fouten. Daarnaast wordt het mogelijk om auditing informatie bij te houden. Voor het registreren van het ID wordt gebruik gemaakt van de WS-Addressing velden MessageID en RelatesTo. Pagina 30 van 38 Definitief | IMEA - Katern - Service Gerichte Architectuur | Versie 1.0 6 Informatie-uitwisseling: standaard uitwisselingsformaat 6.1 Inleiding Voor geautomatiseerde informatie-uitwisseling tussen systemen zijn afspraken nodig over het verpakken van de informatie in elektronische berichten ten behoeve van het versturen ervan, dit geldt voor zowel de ‘envelop’ als het ‘document’ dat er in wordt verpakt. De afspraken hebben gemeenten vastgelegd in standaard uitwisseling formaat (StUF). Het College van Standaardisatie heeft StUF geplaatst op haar ‘pas toe of leg uit’-lijst en is verplicht voor alle ketens waarin informatieuitwisseling met gemeenten plaatsvindt. Het generieke karakter van de StUF-standaard wordt wel eens vergeleken met de pads voor een Senseo-apparaat. Je kunt met de pads, een gestandaardiseerde verpakking, vele smaken koffie zetten (maar ook chocolademelk en thee). In de volgende figuur is een gedeelte van de ‘StUF-familie’ weergegeven. Figuur 15 Een gedeelte van de StUF-familie In bovenstaande figuur lopen de verticale balkjes door onder de vier horizontale balkjes. Dit om zichtbaar te maken dat de verticale modellen altijd gegevenselementen bevatten uit de horizontale modellen. In een verticaal model zijn daar gegevens voor een specifieke sector aan toegevoegd. 6.2 StUF berichtenstandaard Pagina 31 van 38 Definitief | IMEA - Katern - Service Gerichte Architectuur | Versie 1.0 Binnen de StUF-familie wordt de centrale plaats ingenomen door de ‘StUF berichtenstandaard’. Op basis van deze berichtenstandaard zijn zowel de horizontale sectormodellen (generieke berichtenschema’s) als verticale sectormodellen (specifieke berichtenschema’s) gedefinieerd. 6.3 StUF protocolbindingen In de StUF protocolbindingen is uitgewerkt hoe StUF-berichten gebruik maken van, oftewel ‘gebonden’ zijn aan internationale transportprotocollen zoals HTTP, HTTPS of JMS. Daarnaast is er ondersteuning voor internationale berichtprotocollen zoals WUS en ebMS, waarbij rekening wordt gehouden met de profielen die hierop gedefineerd zijn door Digikoppeling. 6.4 StUF horizontale sectormodellen Er zijn twee horizontale sectormodellen: StUF Basisgegevens (StUF-BG) en StUF Zaken (StUF-ZKN). In deze sectormodellen zijn StUF berichten uitgewerkt voor het uitwisselen van basisgegevens gebaseerd op het RSGB en van zaakgegevens gebaseerd op het RGBZ. RSGB In het RSGB, het Referentiemodel Stelsel Gemeentelijke Basisgegevens, zijn de gegevens van alle relevante basisregistraties uitgewerkt, en aangevuld met gemeente-specifieke basisgegevens. RGBZ In het RGBZ, het Referentiemodel Gemeentelijke Basisgegevens Zaken, zijn de gegevens uitgewerkt die minimaal nodig zijn om op de hoogte te blijven van de voortgang van lopende zaken, en het kunnen verantwoorden en reconstrueren van lopende en afgeronde zaken. 6.5 StUF verticale sectormodellen Er zijn meerdere verticale sectormodellen, bijvoorbeeld StUF-LVBAG en StUF-WKPB. In deze sectormodellen zijn StUF berichten uitgewerkt voor het uitwisselen van informatie met de landelijke voorzieningen van de basisregistraties Adressen en Gebouwen (BAG) en die van publiekrechtelijk beperkingen (WKPB). 6.5.1 Architectuurkeuze standaard informatie-uitwisseling Voor de informatie-uitwisseling in ketens met daarin ook gemeenten wordt gebruik gemaakt van het Standaard Uitwisseling Formaat (StUF). Motivering StUF staat op de ‘pas toe of leg uit’-lijst van het College Standaardisatie en is verplicht voor alle ketens waarin informatie-uitwisseling met gemeenten plaatsvindt. Het gebruik van deze bouwsteen is in lijn met NORA en MARIJ. Pagina 32 van 38 Definitief | IMEA - Katern - Service Gerichte Architectuur | Versie 1.0 7 Informatie-uitwisseling: e-Overheid bouwstenen 7.1 Beschikbare bouwstenen Diginetwerk Digikoppeling Systeem overheidsorganisatie A Digikoppeling Voor de geautomatiseerde informatie-uitwisseling tussen systemen van overheidsorganisaties zijn twee bouwstenen beschikbaar: Digikoppeling en Diginetwerk. Systeem overheidsorganisatie B Figuur 16 Informatie-uitwisseling tussen overheidsorganisaties Voor de geautomatiseerde informatie-uitwisseling tussen systemen van overheidsorganisaties en bedrijven is een extra bouwsteen beschikbaar: Digipoort. Figuur 17 Informatie-uitwisseling tussen overheid en bedrijven 7.2 Diginetwerk Diginetwerk is een landelijke bouwsteen die overheidsorganisaties op eenvoudige en gestandaardiseerde wijze de mogelijkheid biedt om geautomatiseerd informatie uit te wisselen met andere overheidsorganisatie. Diginetwerk koppelt bestaande transportvoorzieningen zoals Haagse Ring, Gemnet, SUWInet en SURFnet tot één overheidsbreed netwerk. Diginetwerk is een Virtual Private Network (VPN), een besloten netwerk. Dit VPN schermt de uit te wisselen informatie af van de buitenwereld, maar daar binnen (op het VPN) is de informatie niet afgeschermd. 7.3 Digikoppeling Digikoppeling is een overheidsbrede standaard, een eenduidige set afspraken, op het gebied van informatie-uitwisseling. Deze afspraken hebben betrekking op informatie-uitwisseling tussen twee systemen via services. De standaard draagt bij aan een eenvoudige en veilige informatie-uitwisseling en zorgt voor maximale interoperabiliteit. Digikoppeling kan ook toegepast worden bij het elektronisch berichtenverkeer tussen overheden en bedrijven. Pagina 33 van 38 Definitief | IMEA - Katern - Service Gerichte Architectuur | Versie 1.0 7.4 Digipoort Digipoort is een landelijke bouwsteen die bedrijven de mogelijkheid biedt om geautomatiseerd informatie uit te wisselen met overheidsorganisaties. Digipoort zorgt er voor dat de informatie van een bedrijf bij de juiste overheidsorganisatie terecht komt en dat informatie die een overheidsorganisatie verstuurt, wordt afgeleverd bij het juiste bedrijf. De informatie-uitwisseling tussen een overheidsorganisatie en Digipoort vindt op dezelfde wijze plaats als tussen systemen van overheidsorganisaties. Het voordeel van Digipoort voor niet-overheidspartijen is dat zij via één aansluiting kunnen koppelen met steeds meer systemen van de overheid. Het voordeel voor overheidsorganisaties is dat zij via één aansluiting kunnen koppelen met nietoverheidspartijen. Dit vereenvoudigt de beheerlast voor koppelingen aanzienlijk. 7.4.1 Architectuurkeuze generieke bouwstenen voor informatie-uitwisseling Voor de informatie-uitwisseling met systemen van overheidsorganisaties wordt gebruik gemaakt van Digikoppeling en Diginetwerk. En in aanvulling daarop van Digipoort voor de informatie-uitwisseling met systemen van bedrijven. Motivering De bouwstenen zijn voor overheidsbrede gebruik ontwikkeld en beschikbaar. Het gebruik van deze bouwstenen is in lijn met NORA en MARIJ. Pagina 34 van 38 Definitief | IMEA - Katern - Service Gerichte Architectuur | Versie 1.0 8 Bijlage A: Informatie-uitwisselingsmodel uitgebreid Pagina 35 van 38 Definitief | IMEA - Katern - Service Gerichte Architectuur | Versie 1.0 9 Bijlage B: PKIoverheid certificaten Extern zijn services alleen beschikbaar voor bekende en geautoriseerde afnemers. Bij informatie-uitwisseling moet de identiteit van een toeleverancier of afnemer eenduidig en betrouwbaar worden vastgesteld (identificeren en authentiseren) en moet bepaald worden of deze toegang heeft tot de gevraagde service (autoriseren). Bij informatie-uitwisseling tussen overheidspartijen onderling wordt gebruik gemaakt van PKIoverheid certificaten voor identificatie en authenticatie. IenM hanteert hetzelfde mechanisme bij informatie-uitwisseling met bedrijven en indien van toepassing burgers. Bij de informatie-uitwisseling wordt dan op transportniveau een tweezijdige SSL/TLS verbinding opgebouwd waarbij zowel de aanbieder als de afnemer zich identificeren met een PKIoverheid certificaat. PKIoverheid certificaten bestaan uit meerdere certificaten, een zogenaamde certificaat chain die een chain of trust vormt. Het valideren van een client certificaat wordt gedaan door het valideren van deze chain of trust. Hierbij wordt de certificaat chain achterstevoren afgelopen vanaf het client certificaat tot en met de root certificate authority (Root CA). Gevalideerd wordt of elk certificaat in de chain of trust is uitgegeven door een vertrouwde partij. Als het client certificaat vertrouwd is wordt op basis van de begin- en einddatum gecontroleerd of het certificaat nog geldig is en dat deze niet ingetrokken is (revoked). Controle of een certificaat ingetrokken is, wordt gedaan aan de hand van een certificate revocation list (CRL). De CRL lijsten van PKIoverheid certificaten staan op de website van Logius5. Figuur 18 Chain of trust van een PKIoverheid certificaat 5 https://crl.pkioverheid.nl/ Pagina 36 van 38 Definitief | IMEA - Katern - Service Gerichte Architectuur | Versie 1.0 Toelichting op de certificaat chain zoals weergegeven in bovenstaande figuur: Client: In het subject van het certificaat is een Overheidsidentificatienummer (OIN) opgenomen. Het OIN is uniek en behoort bij één organisatie. CSP: Een Certificate Service Provider (CSP) is een partij die beschikt over een CSP certificaat op basis waarvan deze certificaten kan uitgeven. Er zijn verschillende CSP’s voor PKIoverheid. De CSP kan verschillen per client certificaat. De CSP certificaat wordt in de API Gateway trust store geplaatst. Intermediate CA en Root CA: Bij PKIoverheid certificaten zijn de intermediate CA en Root CA altijd hetzelfde. Beide certificaten worden in de API Gateway trust store geplaatst. Bij de validatie van de chain of trust wordt gevalideerd of het certificaat uitgegeven is door een vertrouwde partij (Root CA) en of alle tussenliggende intermediairs vertrouwd zijn. Verschillende client certificaten kunnen dezelfde chain of trust hebben. Het is daarom noodzakelijk dat ook het client certificaat zelf gevalideerd wordt. Dat wordt gedaan door het OIN nummer in het certificaat te controleren. Het OIN is opgenomen in het subject.SERIALNUMBER veld van het certificaat. Autoriseren wordt gedaan op basis van de combinatie OIN en service URI. Hiermee kan op serviceniveau geautoriseerd worden. Als het certificaat geauthentiseerd is en de combinatie OIN en URI geautoriseerd is dan heeft de afnemer toegang tot de desbetreffende service. IenM handelt identificatie, authenticatie en autorisatie op het extern koppelvlak centraal af. Hierdoor hoeven achterliggende systemen of services dit niet zelf te regelen. In de toekomst zal identificatie, authenticatie en autorisatie volledig transparant door de API Gateway worden afgehandeld. Tot de API Gateway beschikbaar is wordt identificatie en authenticatie opgelost op de reverse proxy (RP) en autorisatie in de koppeling op de ESB. Als het client certificaat vertrouwd is, wordt het OIN of het hele subject.SERIALNUMBER uit het client certificaat gehaald en als HTTP header in de request doorgegeven naar de ESB. Figuur 19 Identificatie en authenticatie door reverse proxy, autorisatie door koppeling Pagina 37 van 38 Definitief | IMEA - Katern - Service Gerichte Architectuur | Versie 1.0 De RP kan het OIN dus op twee manieren doorsturen naar de ESB, afhankelijk van de gehanteerde methode is dat andere HTTP header gezet: CERT_SUBJECT: De RP haalt het hele subject.SERIALNUMBER uit het certificaat en geeft deze in de HTTP header CERT_SUBJECT door naar de koppeling op de ESB. De koppeling op de ESB extraheert zelf het OIN uit de subject en controleert of het OIN geautoriseerd is voor de koppeling. CERT_OIN: De RP haalt het OIN zelf uit het subject.SERIALNUMBER van het certificaat en geeft deze in de HTTP header CERT_OIN door naar de koppeling op de ESB. De koppeling controleert of het OIN geautoriseerd is voor de koppeling. Indien een OIN niet geautoriseerd is wordt een HTTP status code 401 Unauthorized teruggegeven. Pagina 38 van 38
© Copyright 2025 ExpyDoc