Logo Logo
GitHub Designed by Logto

Wat is attribuut-gebaseerde toegangscontrole (ABAC)?

ABAC is een Toegangsbeheer (Access control) model dat gebruikmaakt van attributen om beslissingen over toegangscontrole te nemen. Deze attributen kunnen diverse factoren omvatten, zoals:

  • Gebruikersattributen: bijvoorbeeld rollen, afdeling, locatie, etc.
  • Resource-attributen: bijvoorbeeld gevoeligheidsniveau, eigenaar, type, etc.
  • Omgevingsattributen: bijvoorbeeld tijd van toegang, locatie, apparaat, etc.

Door deze attributen te evalueren en door een reeks regels te laten lopen, kan ABAC bepalen of een subject (bijvoorbeeld gebruiker, service) toegang tot een resource moet krijgen. Deze benadering maakt fijnmazige toegangscontrole en dynamische beleidsafdwinging op basis van de context mogelijk.

Hoe werkt ABAC?

ABAC gebruikt een beleidsgebaseerde benadering voor toegangscontrole. Een typisch ABAC-beleid bestaat uit:

  • Subject: De entiteit die toegang aanvraagt (bijvoorbeeld gebruiker, service, apparaat).
  • Actie: De bewerking die op de resource wordt uitgevoerd (bijvoorbeeld lezen, schrijven, verwijderen).
  • Resource: De entiteit waartoe toegang wordt gezocht (bijvoorbeeld bestand, database, API).
  • Omgeving: De context waarin toegang wordt aangevraagd (bijvoorbeeld tijd, locatie, apparaat).
  • Attributen: De eigenschappen van het subject, de resource en de omgeving die worden geëvalueerd om toegangsbeslissingen te nemen.
  • Beleidsregels: Een reeks regels die de voorwaarden definiëren waaronder toegang wordt verleend of geweigerd.

ABAC-beleidsregels zijn complexer dan traditionele toegangscontrolemodellen zoals Rolgebaseerde toegangscontrole (RBAC) . Aan de andere kant biedt ABAC meer flexibiliteit en granulariteit in toegangsbeslissingen.

Voorbeeld van ABAC-beleidsregels

Bijvoorbeeld, een systeem heeft verschillende ABAC-beleidsregels:

  1. Beleid 1: Toegang toestaan als:

    • (Subject) Subjectrol is manager.
    • (Attribuut) Gevoeligheidsniveau van de resource is hoog.
    • (Omgeving) Locatie is intern.
    • (Actie) Elke actie.
    • (Omgeving) Tijd is tussen 9.00 uur en 17.00 uur (kantooruren).
  2. Beleid 2: Toegang weigeren als:

    • (Subject) Subjectrol is niet manager.
    • (Attribuut) Gevoeligheidsniveau van de resource is hoog.
    • (Omgeving) Elke locatie.
    • (Actie) Elke actie.
    • (Omgeving) Elke tijd.
  3. Beleid 3: Toegang toestaan als:

    • (Subject) Subjectrol is werknemer of manager.
    • (Attribuut) Gevoeligheidsniveau van de resource is laag.
    • (Omgeving) Elke locatie.
    • (Actie) lees actie.
    • (Omgeving) Elke tijd.

De beleidsbeoordelingsmotor controleert deze beleidsregels in volgorde, en het eerste beleid dat aan de voorwaarden voldoet, bepaalt de toegangsbeslissing. Ondertussen wordt een standaard weigering afgedwongen als geen andere beleidsregels overeenkomen.

Laten we enkele scenario’s doornemen om te begrijpen hoe ABAC werkt:

Scenario 1. Een gebruiker wil toegang (de lees actie uitvoeren) tot een document met een hoog gevoeligheidsniveau (resource) buiten het kantoor (omgeving). De gebruiker heeft de rol van manager in het systeem.

Beslissing: Toegang geweigerd omdat de gebruiker buiten het kantoor is (locatie is niet intern).

Scenario 2. Een gebruiker wil toegang (de lees actie uitvoeren) tot een document met een hoog gevoeligheidsniveau (resource) tijdens kantooruren (omgeving) in het kantoornetwerk (locatie=intern). De gebruiker heeft de rol van manager.

Beslissing: Toegang verleend omdat aan alle voorwaarden in Beleid 1 wordt voldaan.

Scenario 3. Alle voorwaarden in scenario 2 zijn hetzelfde, maar de gebruiker heeft de rol van werknemer in plaats van manager.

Beslissing: Toegang geweigerd omdat de rol van de gebruiker niet voldoet aan de voorwaarden in Beleid 1.

Scenario 4. Een gebruiker wil toegang (de lees actie uitvoeren) tot een document met een laag gevoeligheidsniveau (resource). De gebruiker heeft de rol van werknemer.

Beslissing: Toegang verleend omdat aan alle voorwaarden in Beleid 3 wordt voldaan.

Scenario 5. Een gebruiker wil een document met een laag gevoeligheidsniveau (resource) verwijderen (de verwijderen actie uitvoeren). De gebruiker heeft de rol van werknemer.

Beslissing: Toegang geweigerd omdat er geen beleid is dat de verwijderen actie op documenten met een laag gevoeligheidsniveau toestaat.

Je zult merken dat niet alle attributen in elk beleid vereist zijn. Deze flexibiliteit maakt een meer dynamisch en contextbewust toegangscontrolemecanisme mogelijk.

Uitbreidbare Toegangscontrole Markuptaal (XACML)

XACML is een op XML gebaseerde standaard voor het uitdrukken van toegangscontrolestrategieën. Hoewel het geen specifiek toegangscontrolemiddel definieert, wordt XACML vaak gebruikt om ABAC-beleidsregels te implementeren. Laten we een niet-normatief voorbeeld bekijken van hoe XACML kan worden gebruikt om de ABAC-beleidsregels uit het vorige voorbeeld weer te geven:

<PolicySet PolicySetId="ABAC_Policies" PolicyCombiningAlgId="urn:oasis:names:tc:xacml:3.0:policy-combining-algorithm:deny-overrides">
  <Description>ABAC Policies</Description>
  <Policy PolicyId="Policy1" RuleCombiningAlgId="urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:deny-overrides">
    <Description>Employees can read data</Description>
    <Target>
      <AnyOf>
        <AllOf>
          <Match MatchId="urn:oasis:names:tc:xacml:1.0:function:string-equal">
            <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">read</AttributeValue>
            <AttributeDesignator
              AttributeId="urn:oasis:names:tc:xacml:1.0:action:action-id"
              Category="urn:oasis:names:tc:xacml:3.0:attribute-category:action"
              DataType="http://www.w3.org/2001/XMLSchema#string"
              MustBePresent="true"
            />
          </Match>
        </AllOf>
      </AnyOf>
    </Target>
    <Rule RuleId="Rule1" Effect="Permit">
      <Target>
        <AnyOf>
          <AllOf>
            <Match MatchId="urn:oasis:names:tc:xacml:1.0:function:string-equal">
              <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">employee</AttributeValue>
              <AttributeDesignator
                AttributeId="urn:oasis:names:tc:xacml:1.0:subject:subject-id"
                Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject"
                DataType="http://www.w3.org/2001/XMLSchema#string"
                MustBePresent="true"
              />
            </Match>
          </AllOf>
        </AnyOf>
      </Target>
    </Rule>
    <Rule RuleId="Rule2" Effect="Deny">
      <Target>
        <AnyOf>
          <AllOf>
            <Match MatchId="urn:oasis:names:tc:xacml:1.0:function:string-equal">
              <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">user</AttributeValue>
              <AttributeDesignator
                AttributeId="urn:oasis:names:tc:xacml:1.0:subject:subject-id"
                Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject"
                DataType="http://www.w3.org/2001/XMLSchema#string"
                MustBePresent="true"
              />
            </Match>
          </AllOf>
        </AnyOf>
      </Target>
    </Rule>
  </Policy>
  <!-- ...other policies... -->
</PolicySet>

Voor meer informatie over XACML, zie eXtensible Access Control Markup Language (XACML) .

Overwegingen bij implementatie

Hoewel ABAC een krachtige manier biedt om toegangscontrole te beheren, brengt het ook enkele implementatieoverwegingen met zich mee:

  • Systeemcomplexiteit: ABAC-beleidsregels kunnen complex worden naarmate het aantal attributen en regels toeneemt. Correct beleidbeheer en testen zijn tijdrovender dan eenvoudigere toegangscontrolemodellen.
  • Prestatie: Het evalueren van complexe ABAC-beleidsregels kan invloed hebben op de systeemprestaties. Caching- en optimalisatietechnieken kunnen dit probleem helpen verminderen.
  • Beleidsconflicten: Tegenstrijdige beleidsregels kunnen leiden tot onvoorspelbare toegangsbeslissingen. Regelmatige beleidsbeoordeling en conflictoplossing moeten deel uitmaken van het beleidbeheerproces.

ABAC versus RBAC

Door ABAC te vergelijken met Rolgebaseerde toegangscontrole (RBAC) kun je de verschillen tussen de twee modellen begrijpen:

RBACABAC
ToegangsbeleidGebaseerd op rollenGebaseerd op attributen
GranulariteitGrofmazigFijnmazig
FlexibiliteitBeperktZeer flexibel
ComplexiteitEenvoudigerComplexer
PrestatiesimpactMinimaalKan aanzienlijk zijn
ToegangsbeheerRolbeheerBeleidsbeheer
Beste voorGoed gedefinieerde permissiestructurenDynamische en contextbewuste toegangscontrole

Zie ook