Bij het werken aan de beveiliging van webdiensten is het raadzaam de nodige aandacht te besteden aan de afhandeling van authenticatie en autorisatie, betoogt security-consultant Rutger van Bergen. De XML-standaard Saml (Security Assertions Markup Language) wordt in dat kader erg belangrijk: de samenwerking met andere webdiensten wordt hiermee waarschijnlijk een stuk eenvoudiger, maar ook zijn – en komen – er tools beschikbaar die een hoop werk uit handen kunnen nemen.
Met veel interesse heb ik het artikel ‘At your webservice’ gelezen (Computable van 29 november 2002). Het artikel geeft een goede indruk van de problematiek en oplossingen rondom beschikbaarheid, integriteit en vertrouwelijkheid van webdiensten, maar ik wil graag nog enkele aanvullende opmerkingen plaatsen, die mijns inziens in een discussie over ‘web service security’ niet mogen ontbreken.
In het genoemde artikel bestempelen de auteurs webservices als informatiemiddelen, en passen zij op grond daarvan de biv-classificatie toe (beschikbaarheid, integriteit en vertrouwelijkheid). Hoewel webdiensten inderdaad een bron van informatie kunnen zijn, wordt hiermee voorbij gegaan aan het feit dat de functie van webdiensten vaak verder gaat dan dat.
Webdiensten zijn, zoals de naam zegt, bedoeld om via internet diensten te leveren aan afnemers. In deze context kunnen afnemers ‘echte’ eindgebruikers zijn, maar vaak betreft het software, die al dan niet zelf ook als webdienst is gebouwd.
De dienst die een webdienst verleent, kan zijn het aanleveren van informatie, maar bijvoorbeeld ook het verwerken van een effectenorder, zoals in het aangehaalde artikel wordt gemeld. Indien een webdienst inderdaad alleen als informatiebron optreedt, zal de informatie die wordt geleverd vaak afhangen van parameters die bij de aanvraag worden meegegeven. Denk hierbij bijvoorbeeld aan een webdienst van een creditcardmaatschappij, die op aanvraag aan online-winkels doorgeeft wat de kredietlimiet van een bepaalde (potentiële) klant is. Het antwoord dat deze webdienst geeft, zal rechtstreeks afhangen van de identiteit van de persoon waarvoor de informatie over de kredietlimiet wordt aangevraagd.
De soap-standaard die in het artikel van de heren Post en Klunder wordt genoemd, is dan ook niet echt bedoeld om de communicatie tussen services op zich te standaardiseren. In plaats daarvan is ze erop gericht het verlenen en aanvragen van diensten op een uniforme wijze aan te pakken. De wijze waarop de informatie die daarbij een rol speelt (te weten parameters en resultaten) wordt geformatteerd, is hier vanzelfsprekend onderdeel van.
Authenticatie en autorisatie
Uit de genoemde voorbeelden volgt eigenlijk al dat er naast de aspecten beschikbaarheid, integriteit en vertrouwelijkheid – die inderdaad van groot belang zijn – nog twee andere belangrijke punten de aandacht verdienen: authenticatie en autorisatie. Authenticatie, of verificatie, is erop gericht met voldoende zekerheid vast te stellen wat de identiteit van een, al dan niet menselijke, afnemer is (‘met wie hebben we te maken?’). Buiten de wereld van webdiensten wordt hiervoor gebruik gemaakt van bijvoorbeeld gebruikersnaam en wachtwoord, een certificaat of een token. In het algemeen wordt ernaar gestreefd in het kader van authenticatie een omgeving te realiseren waarbij sprake is van ‘single-sign-on’. Dit wil zeggen dat een gebruiker zich éénmalig identificeert, waarna hij of zij over alle betrokken systemen en applicaties kan bewegen zonder zich opnieuw te hoeven identificeren.
Autorisatie is erop gericht alleen d�e acties aan een geauthenticeerde gebruiker toe te staan waartoe deze gebruiker, volgens het geldende beleid, recht heeft (‘wat mag deze afnemer doen?’). In het geval van de effectenorder is het voor zowel de klanten als de financiële instelling van belang dat een klant – die dus geauthenticeerd moet zijn – alleen geautoriseerd is om orders te geven die betrekking hebben op zijn eigen portefeuille. Een online-winkel zal een aankoopactie van een klant alleen willen autoriseren nadat de creditcardmaatschappij heeft aangegeven dat het orderbedrag de kredietlimiet van de klant niet overschrijdt. Op zijn beurt zal de creditcardhouder in het algemeen niet willen dat iedereen in staat is zijn kredietlimiet op te vragen. Het is dus in het belang van de klant dat een online-winkel alleen geautoriseerd wordt om zijn kredietlimiet op te vragen na op een afdoende manier geauthenticeerd te zijn. Het kan dan zo zijn dat wordt besloten de authenticatie van klant, online-winkel en/of creditcardmaatschappij te laten uitvoeren door een webdienst van een andere, onafhankelijke, partij.
Saml
De problematiek van authenticatie en autorisatie bestaat, net als beschikbaarheid, integriteit en vertrouwelijkheid, uiteraard niet specifiek voor webdiensten. Wel is het zo dat het gedistribueerde model van webdiensten een aantal extra uitdagingen met zich meebrengt. Zoals in het creditcardvoorbeeld is gedemonstreerd, is in het geval van webdiensten met betrekking tot authenticatie en/of autorisatie vaak een uitspraak van een externe bron nodig. Mede daardoor is het realiseren van bijvoorbeeld single-sign-on in een op webdiensten gebaseerde omgeving extra complex.
Om hiermee om te gaan, heeft Oasis (Organization for the Advancement of Structured Information Standards) de XML-standaard Saml opgesteld. Saml staat voor Security Assertions Markup Language en is ontworpen om tussen diverse partijen, platformen en systemen op een betrouwbare en uniforme wijze informatie (‘assertions’, ofwel ‘vaststellingen’) uit te wisselen over de identiteit van een afnemer en diens eigenschappen (attributen) en toegekende autorisaties. De verschillende soorten assertions worden afgegeven en gebruikt door ‘authentication authorities’, ‘attribute authorities’ en/of ‘policy decision points’ en kunnen door ‘Saml-aware’-software worden aangewend om beslissingen te nemen over het al dan niet toestaan van aangevraagde acties. Saml voorziet daarvoor ook in mechanismen om door middel van XML Signatures – die ook werden behandeld in het aangehaalde artikel – controleerbaar vast te stellen wie een bepaalde assertion heeft afgegeven. Ook is het mogelijk door middel van deze handtekeningen ‘non-repudiation’ (onweerlegbaarheid) van assertions te realiseren.
Het is overigens belangrijk op te merken dat Saml niet slechts is ‘gereserveerd’ voor toepassing bij webdiensten; de standaard is bijvoorbeeld ook geschikt voor gebruik bij gewoon http-verkeer.
Hoewel SAML niet eerder dan begin november 2002 als standaard is aangenomen, is er inmiddels al een aantal producten op de markt die het protocol implementeren. Eén daarvan is zelfs in staat het proces van authenticatie en autorisatie geheel uit de code van de ermee beveiligde (webdienst-)applicaties te halen en onder te brengen in centraal beheerde, dynamische ‘policies’ (beleidsregels).
Een aantal grote softwarebedrijven, waaronder BEA, Computer Associates, HP, IBM, Microsoft, Oracle en Sun Microsystems, heeft zijn ondersteuning voor de standaard uitgesproken en een aanzienlijk deel daarvan heeft al concreet aangekondigd dat zij Saml in hun producten zullen integreren. Daarmee is het zeer waarschijnlijk dat Saml een grote rol zal gaan spelen in de afhandeling van authenticatie en autorisatie van webdiensten.
Meer informatie over Oasis in het algemeen en Saml in het bijzonder, kan worden gevonden op:
http://oasis-open.org/committees/security/
Rutger van Bergen, Security Consultant bij Anite Benelux.