Logo Logo
GitHub Designed by Logto

Was ist attributbasierte Zugriffskontrolle (ABAC)?

ABAC ist ein Zugriffskontrolle (Access control) Modell, das Attribute zur Entscheidungsfindung bei der Zugriffskontrolle nutzt. Diese Attribute können verschiedene Faktoren umfassen, wie zum Beispiel:

  • Benutzerattribute: z. B. Rollen, Abteilung, Standort, etc.
  • Ressourcenattribute: z. B. Sensitivitätsstufe, Eigentümer, Typ, etc.
  • Umweltattribute: z. B. Zugriffszeit, Standort, Gerät, etc.

Durch die Bewertung dieser Attribute und deren Verarbeitung durch eine Reihe von Regeln kann ABAC bestimmen, ob ein Subjekt (z. B. Benutzer, Dienst) Zugriff auf eine Ressource erhalten sollte. Dieser Ansatz ermöglicht eine fein abgestimmte Zugriffskontrolle (access control) und eine dynamische Durchsetzung von Richtlinien basierend auf dem Kontext.

Wie funktioniert ABAC?

ABAC verwendet einen richtlinienbasierten Ansatz zur Zugangskontrolle (access control). Eine typische ABAC-Richtlinie besteht aus:

  • Subjekt: Die Entität, die Zugriff anfordert (z. B. Benutzer, Dienst, Gerät).
  • Aktion: Die Operation, die auf der Ressource ausgeführt wird (z. B. Lesen, Schreiben, Löschen).
  • Ressource: Die Entität, auf die zugegriffen wird (z. B. Datei, Datenbank, API).
  • Umgebung: Der Kontext, in dem der Zugriff angefordert wird (z. B. Zeit, Standort, Gerät).
  • Attribute: Die Eigenschaften des Subjekts, der Ressource und der Umgebung, die bewertet werden, um Zugang zu entscheiden.
  • Richtlinien: Eine Reihe von Regeln, die die Bedingungen definieren, unter denen Zugriff gewährt oder verweigert wird.

ABAC-Richtlinien sind komplexer als traditionelle Zugriffssteuerungsmodelle wie Rollenbasierte Zugriffskontrolle (Role-based access control, RBAC) . Andererseits bietet ABAC mehr Flexibilität und Granularität bei Zugangskontrollentscheidungen.

Beispiel für ABAC-Richtlinien

Zum Beispiel hat ein System mehrere ABAC-Richtlinien:

  1. Richtlinie 1: Zugriff erlauben, wenn:

    • (Subjekt) Subjektrolle ist manager.
    • (Attribut) Ressourcensensitivitätsstufe ist high.
    • (Umgebung) Standort ist internal.
    • (Aktion) Jede Aktion.
    • (Umgebung) Zeit ist zwischen 9 Uhr und 17 Uhr (Bürozeiten).
  2. Richtlinie 2: Zugriff verweigern, wenn:

    • (Subjekt) Subjektrolle ist nicht manager.
    • (Attribut) Ressourcensensitivitätsstufe ist high.
    • (Umgebung) Jeder Standort.
    • (Aktion) Jede Aktion.
    • (Umgebung) Jede Zeit.
  3. Richtlinie 3: Zugriff erlauben, wenn:

    • (Subjekt) Subjektrolle ist employee oder manager.
    • (Attribut) Ressourcensensitivitätsstufe ist low.
    • (Umgebung) Jeder Standort.
    • (Aktion) read Aktion.
    • (Umgebung) Jede Zeit.

Die Richtlinienauswertungsmaschine überprüft diese Richtlinien der Reihe nach, und die erste Richtlinie, die die Bedingungen erfüllt, bestimmt die Zugriffsentscheidung. Währenddessen wird eine standardmäßige Verweigerungsrichtlinie durchgesetzt, wenn keine anderen Richtlinien zutreffen.

Schauen wir uns einige Szenarien an, um zu verstehen, wie ABAC funktioniert:

Szenario 1. Ein Benutzer möchte auf ein Dokument mit hoher Sensitivitätsstufe (Ressource) außerhalb des Büros (Umgebung) zugreifen (Aktion read ausführen). Die Rolle des Benutzers ist im System als manager gespeichert.

Entscheidung: Zugriff wird verweigert, weil der Benutzer sich außerhalb des Büros befindet (Standort ist nicht internal).

Szenario 2. Ein Benutzer möchte auf ein Dokument mit hoher Sensitivitätsstufe (Ressource) während der Bürozeiten (Umgebung) im Firmennetzwerk (Standort=internal) zugreifen (Aktion read ausführen). Der Benutzer hat die Rolle manager.

Entscheidung: Zugriff wird gewährt, weil alle Bedingungen in Richtlinie 1 erfüllt sind.

Szenario 3. Alle Bedingungen aus Szenario 2 sind gleich, aber der Benutzer hat die Rolle employee statt manager.

Entscheidung: Zugriff wird verweigert, weil die Rolle des Benutzers nicht den Bedingungen in Richtlinie 1 entspricht.

Szenario 4. Ein Benutzer möchte auf ein Dokument mit niedriger Sensitivitätsstufe (Ressource) zugreifen (Aktion read ausführen). Der Benutzer hat die Rolle employee.

Entscheidung: Zugriff wird gewährt, weil alle Bedingungen in Richtlinie 3 erfüllt sind.

Szenario 5. Ein Benutzer möchte ein Dokument mit niedriger Sensitivitätsstufe (Ressource) löschen (Aktion delete ausführen). Der Benutzer hat die Rolle employee.

Entscheidung: Zugriff wird verweigert, weil keine Richtlinie das Löschen von Dokumenten mit niedriger Sensitivitätsstufe erlaubt.

Es kann auffallen, dass nicht alle Attribute in jeder Richtlinie erforderlich sind. Diese Flexibilität ermöglicht einen dynamischeren und kontextbewussten Mechanismus zur Zugriffskontrolle (access control).

Erweiterbare Zugriffskontroll-Markup-Sprache (XACML)

XACML ist ein auf XML basierender Standard zur Ausdruck von Zugriffskontrollrichtlinien. Obwohl es kein spezifisches Zugriffskontrollmodell definiert, wird XACML häufig zur Implementierung von ABAC-Richtlinien verwendet. Sehen wir uns ein nicht normatives Beispiel an, wie XACML verwendet werden kann, um die ABAC-Richtlinien aus dem vorherigen Beispiel darzustellen:

<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>

Weitere Informationen zu XACML finden Sie unter eXtensible Access Control Markup Language (XACML) .

Implementierungsüberlegungen

Während ABAC eine leistungsstarke Möglichkeit zur Verwaltung der Zugangskontrolle (access control) bietet, sind auch einige Implementierungsüberlegungen zu beachten:

  • Systemkomplexität: ABAC-Richtlinien können komplex werden, wenn die Anzahl der Attribute und Regeln zunimmt. Eine ordnungsgemäße Verwaltung und Prüfung der Richtlinien sind zeitaufwändiger als bei einfacheren Zugriffskontrollmodellen.
  • Leistung: Die Auswertung komplexer ABAC-Richtlinien kann die Systemleistung beeinträchtigen. Caching- und Optimierungstechniken können helfen, dieses Problem zu mindern.
  • Richtlinienkonflikte: Sich widersprechende Richtlinien können zu unvorhersehbaren Zugriffsentscheidungen führen. Regelmäßige Richtlinienüberprüfung und Konfliktlösung sollten Teil des Richtlinienverwaltungsprozesses sein.

ABAC vs. RBAC

Ein Vergleich von ABAC mit Rollenbasierte Zugriffskontrolle (Role-based access control, RBAC) kann helfen, die Unterschiede zwischen den beiden Modellen zu verstehen:

RBACABAC
ZugriffssteuerungsrichtlinieBasierend auf RollenBasierend auf Attributen
GranularitätGrobgranuliertFein granuliert
FlexibilitätBegrenztHoch flexibel
KomplexitätEinfacherKomplexer
LeistungseinflussMinimalKann signifikant sein
ZugriffsmanagementRollenverwaltungRichtlinienverwaltung
Am besten geeignet fürKlar definierte BerechtigungsstrukturenDynamische und kontextbewusste Zugriffskontrolle

Siehe auch