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:
-
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).
- (Subjekt) Subjektrolle ist
-
Richtlinie 2: Zugriff verweigern, wenn:
- (Subjekt) Subjektrolle ist nicht
manager
. - (Attribut) Ressourcensensitivitätsstufe ist
high
. - (Umgebung) Jeder Standort.
- (Aktion) Jede Aktion.
- (Umgebung) Jede Zeit.
- (Subjekt) Subjektrolle ist nicht
-
Richtlinie 3: Zugriff erlauben, wenn:
- (Subjekt) Subjektrolle ist
employee
odermanager
. - (Attribut) Ressourcensensitivitätsstufe ist
low
. - (Umgebung) Jeder Standort.
- (Aktion)
read
Aktion. - (Umgebung) Jede Zeit.
- (Subjekt) Subjektrolle ist
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 alsmanager
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 (Aktionread
ausführen). Der Benutzer hat die Rollemanager
.
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
stattmanager
.
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 Rolleemployee
.
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 Rolleemployee
.
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:
RBAC | ABAC | |
---|---|---|
Zugriffssteuerungsrichtlinie | Basierend auf Rollen | Basierend auf Attributen |
Granularität | Grobgranuliert | Fein granuliert |
Flexibilität | Begrenzt | Hoch flexibel |
Komplexität | Einfacher | Komplexer |
Leistungseinfluss | Minimal | Kann signifikant sein |
Zugriffsmanagement | Rollenverwaltung | Richtlinienverwaltung |
Am besten geeignet für | Klar definierte Berechtigungsstrukturen | Dynamische und kontextbewusste Zugriffskontrolle |