15. Toegangssloten in Brocade

15.1. Inleiding

Om de toegang te regelen tot Brocade toepassingen en functionaliteiten is een krachtig en veelzijdig instrument in het leven geroepen : de zogenaamde toegangssloten.

Om te begrijpen hoe deze softwarematige toegangssloten werken, hou je best het volgende beeld voor ogen :

Brocade is zoals een pand met vele deuren. De toegang tot elke ruimte in dit pand wordt geregeld via een deur, waarop je al of niet een slot plaatst . Je hebt pas toegang, als je de sleutel bezit van het slot dat zich op de toegangsdeur bevindt. Zijn er meerdere sloten op de deur, dan moet je uiteraard een sleutel bezitten van elk van deze sloten. Is het slot onbestaande, of onbruikbaar gemaakt, dan kan iedereen gewoon binnen. Bestaan er meerdere deuren, die tot eenzelfde ruimte leiden, dan volstaat het dat je een van deze deuren kan openmaken.

Net zoals in het ‘echte’ leven zijn er drie groepen mensen die betrokken zijn bij het toegangsbeheer :

  • De ontwikkelaars : je kan hen de ‘slotenmakers van Brocade’ noemen . Hun taak is tweerlei:

    • Zij moeten een slot fabriceren. Zo een toegangsslot krijgt een identifier ; voorbeeld : ak:catnew.
    • Zij moeten dit slot plaatsen op een of meerdere ‘toegangsdeuren’. Voorbeeld : ze zorgen ervoor dat het slot ak:catnew wordt geplaatst op de ‘deur’ die toelaat om nieuwe catalografische records aan te maken.
    • Zij moeten bepalen welke gebruikersgroepen initieel recht hebben op een sleutel.
  • De systeembeheerders : zij vormen de ‘concierges van Brocade’ : zij verdelen de sleutels . Deze sleutels kunnen zij verdelen op verschillende manieren :
    • Door het toekennen van rechten aan Brocade gebruikers in het gebruikersbeheer.
    • Door het indelen van Brocade gebruikers in een gebruikersgroep.
    • Door het individueel toekennen van sleutels voor bepaalde toegangssloten.
  • De Brocade gebruikers : zij zijn uiteindelijk de gebruikers van het ‘pand’ en bekomen al of niet toegang tot bepaalde functionaliteiten, afhankelijk van de sleutels die zij bezitten.

15.2. Technische inkijk : de werking en mogelijkheden van toegangssloten

Laat ons een kleine inkijk nemen in de mogelijkheden van toegangssloten.

15.2.1. Hoe bouw je een toegangsslot in je software ?

Hiervoor maak je uitsluitend gebruik van volgende macro :

macro hasUserAccess($ret, $acckey, $userid=UDuser, $ackid):
    '''
    $editfile: /universe/users/accesskeys.d
    $synopsis:  Ga na of een gebruiker toegang heeft tot gegeven access key. Dit is de (dynamische) ingang, die externe software kan gebruiken, om toegangen te controleren.
    $ret: return waarde 0 = nee of 1 = ja ; wordt on-line berekend
    $acckey: access key. Dit mag ook gegeven worden onder de vorm accesskey:extra parameter
    $userid: userid
    $ackid: Optioneel. Extra parameter.
    $example: m4_hasUserAccess(return,"ak:1234","adescamp") i 'return w "you have no access"
    $example: m4_hasUserAccess(return,"ak:somelock","adescamp","myextra") i 'return w "you have no access"
    $example: m4_hasUserAccess(return,"ak:somelock:myextra","adescamp") i 'return w "you have no access"
    '''

    «s $ret=$$%HasUAK^gusersa($acckey,$userid,.$ackid)»

Voorbeeld :

m4_hasUserAccess(return,"ak:loanhistory",userid=UDuser)
i return=0 w !,"You have no access" q

De werking in dit voorbeeld is vrij rechttoe rechtaan : je specifieert een slot (ak:loanhistory) en checkt of een gegeven gebruiker (UDuser meestal) toegang heeft.

15.2.2. Hoe wordt de toegang van een gebruiker tot een toegangsslot bepaald ?

Dit wordt vastgelegd in de meta-informatie van een toegangsslot. Er zijn drie voorwaarden, waaraan een gebruiker dient te voldoen :

  1. De gebruiker moet behoren tot een van de vermelde gebruikersgroepen of expliciet vermeld staan als hebbende toegang.
  2. EN de gebruiker staat niet expliciet vermeld onder ‘Volgende gebruikers hebben NOOIT toegang’
  3. EN indien een M executable is ingevuld als voorwaarde, dan moet deze voorwaarde een positief resultaat opleveren.

15.2.3. Kan de M executable, die de voorwaarde bepaalt van een toegang, ook dynamisch zijn ?

Ja, natuurlijk. Wij illustreren dit met volgende opdracht : maak een tijdslot, dat enkel toegankelijk is tijdens de weekdagen. Oplossing :

  • Maak een toegangsslot bvb. ak:zinweek , en ken je gebruikers/gebruikersgroepen toe, volgens je voorkeur.
  • Vink aan, dat deze voorwaarden dynamisch zijn.
  • Vul in ‘Onder volgende voorwaarden’ : $h+3#7+1>5

En voila, klaar is kees.

15.3. Naar een uniform toegangssysteem in Brocade : toegangssloten veralgemeend

In Brocade bestaan momenteel verschillende toegangsbeheersystemen, die elk hun eigen doelgebied hebben. Zo zijn er bvb, naast de toegangssloten :

  • Menu optie groepen : deze regelen de toegang tot de menu opties.
  • Statistische toegangen : deze bepalen, welke statistische gegevens door wie mogen worden ingekeken.

Welnu, de bedoeling is om deze (te) grote verscheidenheid van begrippen te herleiden naar een enkel begrip : het toegangsslot.

15.4. Van statistische toegangen naar toegangssloten

Een mogelijke piste, die je kan bewandelen, is de volgende : er wordt eenmalig een toegangsslot ak:statt aangemaakt, die verwijst naar een extra executable, die de voorwaarden van geldigheid berekent : voorbeeld : je wil weten of een gebruiker statistische toegang heeft tot een afgeschermd attribuut clibrary met waarde HA

15.5. Van menu optie groepen naar toegangssloten

Een menu optoe groep kan je vervangen door twee toegangssloten : voorbeeld : menu optie groep bleen vervang je door :

  • Toegangsslot ak:menugroup.bleen.read : voor de gebruikers, die leestoegang hebben
  • Toegangsslot ak:menugroup.bleen.write : voor de gebruikers, die lees- en schrijftoegang hebben

In het menu beheer voorzie je voortaan twee attributen ter vervanging van een : de toe te kennen menu optie groep wordt vervangen door een leestoegangspport en een lees/schrijf toegangspoort