Casbin

Casbin

  • Texte
  • API
  • Redakteur
  • IDE-Plugins
  • Single Sign-On (SSO)
  • Forum
  • Hilfe
  • Blog
  • Pricing
  • Contact Sales
  • Languages iconDeutsch
    • English
    • 中文
    • 한국어
    • Русский
    • Français
    • 日本語
    • Helfen Sie zu übersetzen
  • GitHub

›Modell

Die Grundlagen

  • Übersicht
  • Los geht's
  • So funktioniert es
  • Anleitungen

Modell

  • Unterstützte Modelle
  • Syntax für Modelle
  • Effektor
  • Funktion
  • RBAC
  • RBAC with Pattern
  • RBAC mit Domänen
  • Casbin RBAC v.s. RBAC96
  • ABAC
  • Prioritätsmodell
  • Super-Admin

Speicher

  • Modellspeicher
  • Richtlinien-Speicher
  • Richtlinien-Untermengenladen

Erweiterungen

  • Enforcers
  • Adapter
  • Beobachter
  • Dispatcher
  • Rollen-Manager
  • Middleware
  • GraphQL Middlewares
  • Cloud Native Middlewares

API

  • API-Übersicht
  • Management-API
  • RBAC API
  • RBAC mit Domains API
  • Rollen-Manager-API
  • Datenberechtigungen

Erweiterte Nutzung

  • Mehrfachfachen
  • Benchmarks
  • Leistungsoptimierung
  • Autorisierung von Kubernetes
  • Genehmigung des Service-Mesh durch den Gesandten

Management

  • Admin-Portal
  • Kasbin-Dienst
  • Log- & Fehlerbehandlung
  • Frontend-Nutzung

Redakteur

  • Online-Editor
  • IDE-Plugins

Mehr

  • Unsere Adopter
  • Mitwirken
  • Datenschutzerklärung
  • Nutzungsbedingungen
Translate

ABAC

Was ist eigentlich das ABAC-Modell?

ABAC ist Attribute-Based Access Control, was bedeutet, dass Sie die Attribute (Eigenschaften) des Betreffs verwenden können -Objekt oder Aktion statt sich selbst (die Zeichenkette), um den Zugriff zu kontrollieren. Sie können bereits von einer komplizierten ABAC-Zugangskontrollsprache namens XACML hören. Im Vergleich zu XACML ist Casbin's ABAC sehr einfach: in ABAC, Sie können für Modellelemente Strukturen (oder Klasseninstanzen, die auf der Programmiersprache basieren) anstelle von Strings verwenden.

Verwenden Sie zum Beispiel das offizielle ABAC-Beispiel:

[request_definition]
r = sub, obj, act

[policy_definition]
p = sub, obj, act

[policy_effect]
e = some(where (p. ft == allow))

[matchers]
m = r.sub == r.obj.Owner

Wir verwenden r.obj.Owner statt r.obj im Matcher. Die r.obj in der Funktion Enforce() übergeben wurde, wird eine Strukt- oder Klasseninstanz anstelle von String sein. Casbin wird Reflexionen verwenden, um die obj Mitgliedsvariable in diesem strukt oder der Klasse für Sie abzurufen.

Hier ist eine Definition für den r.obj struct oder Klasse:

type testResource struct {
    Name string
    Owner string
}

Wie verwende ich ABAC?

Um nur ABAC zu verwenden, müssen Sie zwei Dinge tun:

  1. Geben Sie die Attribute im Modell Matcher an.
  2. Übergeben Sie die Strukt- oder Klasseninstanz des Elements als Argument in Casbins Enforce() Funktion.
warning

Zurzeit nur Elemente wie r.sub, r.obj, r.act und so weiter unterstützen ABAC. Du kannst es nicht für Richtlinien-Elemente wie p verwenden. ub, weil es keine Möglichkeit gibt, einen Strukt oder eine Klasse in Casbins Richtlinien zu definieren.

tip

Sie können mehrere ABAC-Attribute in einem Matcher verwenden, zum Beispiel: m = r.sub.Domain == r.obj.Domain.

tip

Wenn Sie Komma in der Richtlinie verwenden müssen, die mit dem csv-Trennzeichen kollidiert, und wir es vermeiden müssen. Casbin analysiert die Richtlinien-Datei durch csv-Bibliothek, Sie können Anweisung mit Anführungszeichen umgeben. "keyMatch("bob", r.sub.Rolle)" wird nicht geteilt.

Skalierung des Modells für komplexe und große Anzahl von ABAC-Regeln.

Die obige Instanz der ABAC-Implementierung ist sehr einfach aber oft benötigt das Autorisierungssystem eine sehr komplexe und große Anzahl von ABAC-Regeln. Um dieser Notwendigkeit gerecht zu werden, wird die obige Implementierung die Ausführlichkeit des Modells in einem großen Maße erhöhen. Daher ist es klug, die Regeln in die Richtlinie einzufügen anstatt in das Modell. Dies geschieht durch Einführung eines eval() Funktionsbaus. Unten ist die Beispielinstanz, um solche ABAC-Modelle zu verwalten.

Dies ist die Definition der CONF Datei, die zur Definition des ABAC-Modells verwendet wird.

[request_definition]
r = sub, obj, act

[policy_definition]
p = sub_rule, obj, act

[policy_effect]
e = some(where (p. ft == allow))

[matchers]
m = eval(p. ub_rule) && r.obj == p.obj && r.act == p.act

Hier ist p.sub_rule vom Typ struct oder Klasse (benutzerdefinierter Typ), die aus notwendigen Attributen besteht, die in der Richtlinie verwendet werden sollen.

Dies ist die Richtlinie, die gegen das Modell für Vollstreckung verwendet wird. Nun können Sie die Objektinstanz, die an eval() übergeben wird, als Parameter verwenden, um bestimmte ABAC-Einschränkungen zu definieren.

p, r.sub.Age > 18, /data1, lesen
p, r.sub.Age < 60, /data2, schreiben
← Casbin RBAC v.s. RBAC96Prioritätsmodell →
  • Was ist eigentlich das ABAC-Modell?
  • Wie verwende ich ABAC?
  • Skalierung des Modells für komplexe und große Anzahl von ABAC-Regeln.
Casbin
Docs
Getting StartedManagement APIRBAC APIMiddlewares
Community
Who's using Casbin?Stack Overflow
Casbin          jCasbin
Node-Casbin   PHP-CasbinPyCasbin          Casbin.NETCasbin-CPP        Casbin-RS
Follow @casbinHQ
Copyright © 2022 Casbin Organization