Ga naar inhoud

Voorgestelde oplossingsrichting

Dit hoofdstuk beschrijft de voorgestelde oplossingsrichting voor GBO. Het onderstaande diagram vormt hiervoor de basis.

flowchart LR subgraph gbo["GBO Basis"] direction TB fsc_pap("Beleidsregels") fsc("Standaard koppelvlak<br/>Generieke bronontsluiting<br/>Configurabele autorisatie") fsc_tools("GBO tools<br/>(ondersteuning bronhouders)") end subgraph eudi["EUDI-Wallet"] direction LR eudi_asi("Bronontsluiting voor QTSP<br/>(Authentic Source Interface)") eudi_pubeaa("Uitgifte van publieke EAA<br/>(PubEAA)") eudi_qeaa["QTSP<br/>(QEAA)"] eudi_wallet["EUDI-Wallet"] end subgraph oots["OOTS"] direction LR oots_adapter("OOTS adapter<br/>(protocol + semantische mapping)") oots_basis["Basisinrichting OOTS<br/>(nationaal OOTS-toegangspunt)"] oots_afnemer["Europese overheid<br/>SDG-portaal"] end subgraph dvtp["DvTP"] direction LR dvtp_toestemming("Toestemmingsvoorziening") dvtp_pseudoniem["Pseudonimiseervoorziening<br/>(BSNk PP)"] dvtp_afnemer["Private dienstverlener"] end fsc_pap --- fsc fsc --- fsc_tools bron[("Overheidsbronnen<br/>BRP · BD · UWV · KvK · …")] --- gbo eudi_asi --- eudi_qeaa eudi_qeaa --- eudi_wallet gbo --- eudi_asi & eudi_pubeaa & oots_adapter & dvtp_afnemer eudi_pubeaa --- eudi_wallet oots_adapter --- oots_basis oots_basis --- oots_afnemer gbo --- dvtp_toestemming dvtp_toestemming --- dvtp_afnemer dvtp_toestemming --- dvtp_pseudoniem dvtp_pseudoniem ~~~ dvtp_afnemer eudi_wallet --- burger["Burger"] oots_afnemer --- burger dvtp_afnemer --- burger fsc_pap:::gbo fsc:::gbo fsc_tools:::gbo eudi_asi:::gbo eudi_pubeaa:::gbo eudi_qeaa:::eudi eudi_wallet:::eudi oots_adapter:::gbo oots_basis:::oots oots_afnemer:::oots dvtp_toestemming:::gbo dvtp_pseudoniem:::dvtp dvtp_afnemer:::dvtp bron:::bron burger:::burger classDef bron fill:#edf7df,stroke:#6aa13a,color:#27500a classDef generiek fill:#f1efe8,stroke:#5f5e5a,color:#444441 classDef eudi fill:#f1efe8,stroke:#5f5e5a,color:#444441 classDef oots fill:#f1efe8,stroke:#5f5e5a,color:#444441 classDef dvtp fill:#f1efe8,stroke:#5f5e5a,color:#444441 classDef gbo fill:#fff0e8,stroke:#000000,color:#000000 classDef burger fill:#edf7df,stroke:#6aa13a,color:#27500a
Oplossingsrichting GBO.

Gemeenschappelijke bronontsluiting

De verbinding tussen vragende partij en bron wordt via de FSC-standaard tot stand gebracht. Dit is een standaard koppelvlak waarmee de beveiliging van de gegevensuitwisseling wordt gegarandeerd en de noodzakelijke logging wordt vastgelegd. Bronhouders stellen hun gegevens bloot via een generieke, herbruikbare API. Dit is mogelijk met GraphQL - een API die een zo volledig mogelijke set gegevens beschikbaar stelt, waarvan afhankelijk van de toepassing een selectie wordt bevraagd. Dit maakt het inrichten en onderhouden van een groot aantal kleinere REST-API's overbodig. Als er een nieuwe gegevensvraag ontstaat, kan dat via configuratie ingericht worden, in plaats van dat er een nieuw endpoint ingericht en beheerd hoeft te worden.
Om te garanderen dat afnemers alleen die gegevens krijgen waarop zij recht op hebben, is autorisatie nodig. Deze autorisatie moet niet alleen controleren of de afnemer toegang heeft tot de bron, maar ook welke set gegevens opgevraagd mag worden en of voldaan wordt aan de grondslag die voor de gegevensvraag geldt. Dat is configurabel in te richten als gewerkt wordt met "Policy Based Access Control" (PBAC).

Deze bouwstenen moeten door de bronhouder ingericht en onderhouden worden. Er bestaat al een referentie-implementatie voor de FSC-componenten onder de naam OpenFSC en er wordt vanuit het Federatief Datastelsel gewerkt aan een PBAC-implementatie onder de naam Federatieve Toegangsverlening (FTV). Om de inrichting van de GraphQL-API te standaardiseren zou er een GraphQL profiel in de Digikoppeling standaard opgenomen moeten worden.

Aansluiten op bestaande voorzieningen

De vragende partijen kennen hun eigen standaarden en protocollen. Als deze afwijken van de FSC-standaard met GraphQL-API's, dan worden er componenten ontwikkeld om de aansluiting te maken. Voor bronhouders is dit geen zorg; als zij hun gegevens beschikbaar stellen via de gemeenschappelijke bronontsluiting kunnen zij aansluiten. Ook voor de vragende partijen wordt de koppeling eenvoudig: zij kunnen hun standaarden en protocollen blijven gebruiken en krijgen toegang tot alle bronnen die voldoen aan de GBO-oplossing.

In de figuur bovenaan dit hoofdstuk zijn de vereiste centrale voorzieningen voor de drie gegevensstromen die bij GBO in beeld zijn, ingetekend:
- Voor de EUDI-Wallet zijn dat een verify-interface waar QTSP's toegang toe krijgen om QEAA's uit te kunnen geven, en een voorziening waarmee overheidsbronnen zelf attestaties (PubEAA's) kunnen uitgeven.
- Voor OOTS is dit een OOTS-adapter waarmee aangesloten wordt op de basisinrichting OOTS, waarvandaan gegevens met buitenlandse overheden gedeeld kunnen worden in het kader van SDG.
- Voor het delen van gegevens via toestemming met private dienstverleners is een toestemmingsvoorziening nodig, en een voorziening om BSN's te pseudonimiseren, zodat deze niet terechtkomen bij partijen die geen BSN mogen verwerken.

Uitbreidbaar

Het doel van GBO is het ontzorgen van bronhouders bij het bedienen van verschillende gegevensstromen. Het project GBO richt zich daarbij op de gegevensstromen die door burgers geïnitieerd worden: EDI, OOTS en DvTP. Maar de oplossingsrichting leent zich ook prima voor andere gegevensstromen: door het inrichten van een generieke bronontsluiting (GraphQL) met configureerbare toegangscontrole (FSC met FTV) kan deze voor veel verschillende gegevensstromen gebruikt worden. Die gegevensstromen moeten hun gegevensverzoeken dan via FSC aanbieden in de vorm van een GraphQL-request waarin de gewenste gegevens uitgevraagd worden. Als dat niet rechtstreeks kan, is een adapter nodig die het verzoek omzet naar GraphQL en via een FSC Outway aanbiedt.
Iedere gegevensstroom zal afspraken vereisen over de gegevenssets die afgenomen mogen worden en wie onder welke voorwaarden deze gegevens mogen opvragen. De vastlegging en toepassing van die afspraken kan echter in de bestaande FTV componenten (PEP/PDP, PAP en PIP) gebeuren.

Om een indruk te geven hoe nieuwe gegevensstromen toegevoegd kunnen worden, zijn in de onderstaande figuur twee extra gegevensstromen toegevoegd.

flowchart LR subgraph gbo["GBO Basis"] direction TB fsc_pap("PAP<br/>(beleidsregels)") fsc("FSC / GraphQL / PBAC<br/>(generieke bronontsluiting)") fsc_tools("GBO tools<br/>(vertaallaag)") end subgraph eudi["EUDI-Wallet"] direction LR eudi_asi("ASI-provider") eudi_pubeaa("PubEAA-provider<br/>(PubEAA)") eudi_qeaa["QTSP<br/>(QEAA)"] eudi_wallet["EUDI-Wallet"] end subgraph oots["SDG / OOTS"] direction LR oots_adapter("OOTS adapter<br/>(semantische mapping)") oots_basis["Basisinrichting OOTS<br/>(incl. OOTS-V backend)"] oots_afnemer["Europese overheid<br/>SDG-portaal"] end subgraph dvtp["DvTP"] direction LR dvtp_toestemming("Toestemmingsvoorziening") dvtp_pseudoniem["Pseudonimiseervoorziening<br/>(BSNk PP)"] dvtp_afnemer["Private dienstverlener"] end subgraph ebw["QERDS/EBW"] direction LR ebw_qerds_adapter("QERDS-adapter<br/>(client/EBW)") ebw_pub_qtsp("Publieke QTSP") ebw_qtsp["Private QTSP"] ebw_wallet["EBW<br/>(publiek/privaat)"] end fsc_pap --- fsc fsc --- fsc_tools bron[("Overheidsbronnen<br/>BRP · BD · UWV · KvK · …")] -- Bron API<br/>(GraphQL / REST-JSON / ...) --- gbo eudi_asi -- verify --- eudi_qeaa eudi_asi -. "`*retrieve*`" .- eudi_qeaa eudi_qeaa -- OpenID4VCI --- eudi_wallet gbo -- GraphQL --- eudi_asi & eudi_pubeaa & oots_adapter & dvtp_afnemer & ebw_qerds_adapter eudi_pubeaa -- OpenID4VCI ---- eudi_wallet oots_adapter -- REST-JSON --- oots_basis oots_basis -- eDelivery-AS4 --- oots_afnemer gbo -- REST-JSON<br/>(PIP) --- dvtp_toestemming dvtp_toestemming -- REST-JSON --- dvtp_afnemer dvtp_toestemming -- REST-JSON --- dvtp_pseudoniem dvtp_pseudoniem ~~~ dvtp_afnemer ebw_qerds_adapter --- ebw_pub_qtsp --- ebw_wallet ebw_qerds_adapter --- ebw_qtsp --- ebw_wallet eudi_wallet --- burger["Burger"] oots_afnemer --- burger dvtp_afnemer --- burger ebw_wallet --- organisatie["Organisatie<br/>(publiek/privaat)"] ebw_wallet ~~~ overheid["Ketenpartner<br/>(overheid)"] gbo -- GraphQL --- overheid["Ketenpartner<br/>(overheid)"] fsc_pap:::gbo fsc:::gbo fsc_tools:::gbo ebw_qerds_adapter:::gbo ebw_pub_qtsp:::gbo ebw_qtsp:::eudi ebw_wallet:::eudi eudi_asi:::gbo eudi_pubeaa:::gbo eudi_qeaa:::eudi eudi_wallet:::eudi oots_adapter:::gbo oots_basis:::oots oots_afnemer:::oots dvtp_toestemming:::gbo dvtp_pseudoniem:::dvtp dvtp_afnemer:::dvtp bron:::bron burger:::afnemer organisatie:::afnemer overheid:::afnemer classDef bron fill:#edf7df,stroke:#6aa13a,color:#27500a classDef generiek fill:#f1efe8,stroke:#5f5e5a,color:#444441 classDef eudi fill:#f1efe8,stroke:#5f5e5a,color:#444441 classDef oots fill:#f1efe8,stroke:#5f5e5a,color:#444441 classDef dvtp fill:#f1efe8,stroke:#5f5e5a,color:#444441 classDef overheid fill:#f1efe8,stroke:#5f5e5a,color:#444441 classDef gbo fill:#fff0e8,stroke:#000000,color:#000000 classDef gbo_opt fill:#FFF9F5,stroke:#9C9C9C,color:#9C9C9C classDef afnemer fill:#edf7df,stroke:#6aa13a,color:#27500a
Mogelijke toekomstige use cases GBO-model. NB: dit is zuiver illustratief en valt buiten de scope van GBO!