Implementaties #
PBAC zoals eerder beschreven is een methodiek, een brede beschrijving van een manier van werken, en laat veel vrij over de verdere invulling. In deze sectie onderzoeken we welke eisen we stellen aan een implementatie, en welke mogelijkheden er zijn.
Het gaat hierbij om twee keuzes: een regeltaal en programmatuur.
De regels moeten digitaal geschreven, beheerd en gelezen kunnen worden door mensen, en uitgevoerd kunnen worden door machines. Daar is een rechtenexpressietaal (Engels Rights Expression Language of REL) voor nodig.
De programmatuur die toegangsbeslissingen kan nemen op basis van de regels wordt een policy engine of ook wel zero trust engine genoemd. Deze moet passen in de architectuur en infrastructuur van de applicatie of dienst.
Algemene eisen #
Zowel een standaard als de programmatuur daarvan moeten open zijn om ingezet te mogen worden bij de overheid.
Zie hier de overheidsdefinitie van een open standaard , en hier een site die open source bij de overheid definieert en kadert.
Toegangsregeltalen en hun implementaties #
Fit zijn de bekendste talen voor het vastleggen van toegangsregels, met bijbehorende open implementaties:
XACML is een open source standaard, onder beheer bij OASIS. Het is XML-gebaseerd, en niet alleen een formaat om regels te noteren, maar beschrijft ook hoe deze in een PBAC-oplossing moeten worden toegepast: een volledige specificatie van PEP, PDP, PAP en PIP. Met bijna 300 functies is het heel compleet. XML kent ook nadelen: het is niet eenvoudig te schrijven en te lezen en de verwerking presteert vaak niet goed. XACML is de oudste standaard en wordt actief gebruikt, al verliest het terrein aan nieuwere talen en implementaties.
Er zijn een aantal source implementaties van XACML, vooral in Java. Zie hier overzichten op GitHub. en GitLab
Daarnaast is er ALFA , een verkorte notatie ontwikkeld door Axiomatics en gedoneerd aan OASIS. ALFA is nog niet als standaard geaccepteerd, en de enige implementatie is die van Axiomatics zelf.
ODRL is een W3C-beheerde standaard, specifiek ontworpen om rechten vast te leggen op digitale media, zoals muziek en film. De notatie is compact, er zijn vele implementaties van, waarvan een aantal open source, en daar is het W3C-referentie-model in RDF en OWL de bekendste van. De functies zijn vrij specifiek voor media-rechten, maar als ze voldoen aan de behoefte in onze context is het een serieuze optie. Nadeel is dat er geen optie is om taken uit te voeren tijdens de evaluatie, hetgeen bruikbaar zou kunnen zijn om een logboek dataverwerkingen te schrijven.
Cedar is een open source taal die door Amazon wordt beheerd en intensief gebruikt in AWS. Het is een compacte notatie, en kan geautomatiseerd worden omgezet in JSON voor machineverwerking. De enige implementatie op dit moment is Amazon Verified Permissions , en het gebruik ervan buiten AWS is beperkt. De prestaties zijn goed.
CEL is door Google ontwikkeld als meer generieke taal om relatief eenvoudige expressies te schrijven. Er zijn meerdere partijen die engines gebouwd hebben en CEL lezen, waaronder Cerbos .
Rego is een taal die ontwikkeld is door Styra, een commerciële partij, en daarna gedoneerd aan CNCF. De taal is speciaal ontworpen om gebruikt te worden in Styra’s Open Policy Agent (OPA) . OPA is recent en ontwikkeld met moderne cloud-native technieken, en is daarom in korte tijd populair geworden.
Elk van deze opties is geschikt als basis voor een implementatie. Daarnaast is zelfbouw ook altijd mogelijk zolang dat onder overheids-open source-voorwaarden gebeurt.
De talen EPAL en Sentinal zijn niet-open source, en vallen daarom af.
Commerciële implementaties #
Toegangsverlening is een groeimarkt. Gedistribueerde architectuur met microservices, vertrouwensraamwerken en meer gegevensuitwisseling tussen partijen in het algemeen maken dat er een sterk toenemende vraag is naar praktische oplossingen. Commerciële partijen zien dat implementatie moeilijk is, technisch en organisatorisch, en zijn in de ruimte gestapt. Er zijn gesloten implementaties van open standaarden gekomen, open implementaties zijn gesloten, en er worden betaalde diensten en extensies op open implementaties geboden.
Een goede recente inventarisatie van de markt is deze van KuppingerCole. Daar komen PingIdentity , AWS , PlainID , Strata Identity en Nextlabs als beste uit.
Wij zullen in dit onderzoek deze implementaties niet bestuderen, maar ze kunnen een optie zijn voor individuele afnemers, zowel de programmatuur als de diensten.
Uitwisseling talen onderling #
Alle regeltalen proberen hetzelfde te doen, elk op hun eigen manier. De verschillen zijn vaak historisch gegroeid, of ingegeven door andere visies op bestandsformaten. En de verschillen worden in stand gehouden door commerciële belangen. Voorlopig is er geen convergentie te zien, aangezien de grote technologie werelden (Google, Amazon, Microsoft en CNCF) elk hun eigen oplossing stevig gevestigd hebben.
Tegelijk zijn er wel degelijk grote overeenkomsten en zou een overkoepelende taal of uitwisseling mogelijk kunnen zijn.
In een federatief stelsel zou het voordelig kunnen zijn om deelnemende partijen de vrijheid te geven voor verschillende engines te kiezen en toch een taal of interpretatie van de talen te delen. Dit is een gebied van onderzoek.
Regels beheren #
Toegangsregels zijn, ongeacht de taal, niet eenvoudig te begrijpen, zowel om te lezen als te schrijven. Een van onze doelen is echter wel dat mensenogen ze moeten kunnen controleren en aanpassen, en niet alleen programmeurs. Geen van de bovengenoemde implementaties biedt een gebruikersinterface die dit significant eenvoudiger maakt.
Vergelijking editors:
- UMU XACML editor
- Voor ODRL kunnen generieke RDF editors gebruikt worden zoals Protégé
- Of JSON editors, online rdfa.info of json-ld.org
- Digilabs eigen POC voor Rego
- ??
Federatief regels gebruiken #
Oplossing voor gedistribueerde policydatabase