Zum Inhalt springen

AXON · Technik im Detail

Rechte im System.

Wie AXON vor jedem Werkzeugaufruf im Server prüft, ob ein Agent handeln darf, und warum er nie mehr Recht hat als die Person, die ihn beauftragt.

Ein Agent darf in AXON genau das, was ihm das System ausdrücklich erlaubt. Die Erlaubnis steht nicht im Prompt, sondern an der Handlung, und sie wird vor jedem Werkzeugaufruf im Server geprüft. Auf dieses Rechtemodell ist AXON ausgelegt.

Diese Seite beschreibt die Bauweise des Systems. Gebaut sind der Prototyp von Freigabe und Protokoll und der Demonstrator von KALKÜL; den ganzen Stand finden Sie unter Was heute steht.

Auf dieser Seite
  1. 01Vier Achsen einer Entscheidung
  2. 02Geprüft im Server, vor jedem Aufruf
  3. 03Eine eigene Identität für den Agenten
  4. 04Im Auftrag einer Person: RFC 8693
  5. 05Jede Entscheidung im Verlauf
  6. 06Eckdaten
  7. 07Weiter

Vier Achsen einer Entscheidung

Jede Prüfung beantwortet eine Frage mit vier Teilen: Wer handelt in welcher Rolle, welche Handlung, an Daten mit welcher Markierung, zu welchem Zweck. Rollen bündeln Handlungen, das ist der rollenbasierte Teil (RBAC). Markierung und Zweck sind Attribute der Daten und der Anfrage, das ist der attributbasierte Teil (ABAC). Erlaubt ist nur, was auf allen vier Achsen erlaubt ist.

Rollen allein reichen nicht. Eine Rolle darf Objekte eines Typs lesen, aber nicht deren Felder mit der Markierung vertraulich, und nur zu dem Zweck, für den der Auftrag eingerichtet wurde. Der Zweck kommt aus dem Auftrag, nicht aus dem Text, den ein Sprachmodell erzeugt. So bildet das System die Zweckbindung ab, die Artikel 5 der DSGVO verlangt.

Ohne passende Regel gilt Ablehnung. Eine Lücke in den Regeln öffnet nichts, sie fällt bei der nächsten abgelehnten Anfrage auf.

Geprüft im Server, vor jedem Aufruf

Ein Sprachmodell hält sich nicht verlässlich an Anweisungen. Darum entscheidet die Laufzeit von AXON und nicht das Sprachmodell. Jeder Werkzeugaufruf geht an einen Durchsetzungspunkt im Server (Policy Enforcement Point), der eine Entscheidungsstelle (Policy Decision Point) mit Handelndem, Auftraggeber, Handlung, Objekt, Markierung und Zweck befragt. Erst ein ausdrückliches Ja führt den Aufruf aus. Die Begriffe stammen aus XACML und dem Leitfaden NIST SP 800-162.

Die Regeln liegen als Daten vor und sind versioniert. Sie lassen sich in einer Regelsprache wie Rego (Open Policy Agent) oder Cedar schreiben und vor dem Einsatz gegen Testfälle prüfen: Für jede Rolle steht fest, welche Anfragen angenommen und welche abgelehnt werden müssen.

Auch Lesen ist eine Handlung. Felder ohne Leserecht kommen gar nicht erst in den Kontext des Sprachmodells, statt nachträglich ausgeblendet zu werden. Was ein Sprachmodell nie gesehen hat, kann es auch nicht weitergeben.

Rolle mal Handlung

Der Agent im Auftrag einer Person bekommt in jeder Zeile höchstens das, was die Person und die Rolle des Agenten beide dürfen. Die Reiter wechseln den Zweck des Auftrags: Bearbeitung oder Auswertung.

Rechte in AXON: Person, Rolle des Agenten und Agent im AuftragDer Agent im Auftrag einer Person bekommt in jeder Zeile höchstens das, was die Person und die Rolle des Agenten beide dürfen. Die Reiter wechseln den Zweck des Auftrags: Bearbeitung oder Auswertung.BEARBEITUNGAUSWERTUNGPERSONAGENTENROLLEIM AUFTRAGObjekt lesenVertraulich lesenEntwurf anlegenWert ändernWirkung nach außenFreigebenSELBSTMIT FREIGABENIEFREIGABE
  • Objekt lesen: Person selbst, Agentenrolle selbst, Im Auftrag selbst.
  • Vertraulich lesen: Person selbst, Agentenrolle nie, Im Auftrag nie.
  • Entwurf anlegen: Person selbst, Agentenrolle selbst, Im Auftrag selbst.
  • Wert ändern: Person nie, Agentenrolle selbst, Im Auftrag nie.
  • Wirkung nach außen: Person selbst, Agentenrolle mit freigabe, Im Auftrag mit freigabe.
  • Freigeben: Person freigabe, Agentenrolle nie, Im Auftrag nie.
RECHTE · ROLLE MAL HANDLUNG

Eine eigene Identität für den Agenten

Ein Agent meldet sich nie mit dem Konto einer Person an. Er hat eine eigene Identität, und jede Sitzung bekommt kurzlebige Zugangstoken mit eng begrenztem Geltungsbereich (scope) und festem Empfänger (aud): nur die Handlungen und nur das Zielsystem des Auftrags, gültig für Minuten statt für Tage.

Wird dem Auftrag ein Recht entzogen, scheitert der nächste Aufruf an der Prüfung im Server, und ein neues Token mit diesem Recht stellt AXON nicht mehr aus. Die Bindung des Tokens an einen Schlüssel des Agenten, nach DPoP (RFC 9449) oder über Mutual TLS (RFC 8705), sorgt dafür, dass ein abgegriffenes Token an anderer Stelle nicht nutzbar ist.

Zugangsdaten zu Zielsystemen hält die Laufzeit. Sie stehen nie im Kontext des Sprachmodells, in Werkzeugbeschreibungen oder im Verlauf.

Im Auftrag einer Person: RFC 8693

Handelt ein Agent für eine Person, tauscht AXON das Token der Person und die Identität des Agenten gegen ein neues Token: OAuth 2.0 Token Exchange nach RFC 8693. Das neue Token nennt die Person als Subjekt (sub) und den Agenten als Handelnden im Claim act. Jede Stelle, die es prüft, weiß damit, wer beauftragt hat und wer ausführt.

Der Geltungsbereich des neuen Tokens ist höchstens die Schnittmenge aus dem, was die Person darf, und dem, was die Rolle des Agenten darf. Ein Agent hat so nie mehr Recht als die Person, die ihn beauftragt. Das gilt auch über eine Kette von Agenten: Jede Weitergabe kann den Geltungsbereich nur verengen, und act verschachtelt sich mit jedem Glied, sodass die ganze Kette lesbar bleibt.

POST /token
grant_type    = urn:ietf:params:oauth:grant-type:token-exchange
subject_token      = <Token der Person>
subject_token_type = urn:ietf:params:oauth:token-type:access_token
actor_token        = <Token des Agenten>
actor_token_type   = urn:ietf:params:oauth:token-type:access_token
scope         = <Handlungen des Auftrags>
audience      = <Zielsystem>

Neues Token:  sub = Person,  act = { sub = Agent },  scope ⊆ Recht(Person) ∩ Recht(Rolle)
Diese Verengung setzt der Token-Dienst von AXON durch.
Tausch nach RFC 8693, schematisch. Der Geltungsbereich des neuen Tokens ist die Schnittmenge, nie mehr.

Jede Entscheidung im Verlauf

Jede Entscheidung, auch jede Ablehnung, wird festgehalten: Handelnder, Auftraggeber, Handlung, Objekt, Markierung, Zweck, Version der Regeln und Ergebnis. So lässt sich später zeigen, warum ein Agent etwas durfte oder nicht durfte, mit genau der Regel, die damals galt.

Was die Grenze einer Rolle überschreitet, endet nicht als stille Ablehnung. Es wird als Freigabe für genau diese Handlung einer berechtigten Person vorgelegt; wie das Ja gebaut ist, beschreibt die Seite zur Freigabe.

Eckdaten

Rechtemodell
rollenbasiert (RBAC) und attributbasiert (ABAC); ohne passende Regel Ablehnung
Achsen
Rolle, Handlung, Markierung, Zweck
Durchsetzung
im Server vor jedem Werkzeugaufruf: Policy Enforcement Point und Policy Decision Point nach XACML
Regeln
als Daten, versioniert und getestet, etwa in Rego (Open Policy Agent) oder Cedar
Identität
eigene Identität je Agent, kurzlebige Token mit scope und aud
Delegation
OAuth 2.0 Token Exchange nach RFC 8693, Claim act
Bindung
DPoP nach RFC 9449 oder Mutual TLS nach RFC 8705
Obergrenze
Schnittmenge aus dem Recht der Person und dem Recht der Rolle

Weiter

Zeigen Sie uns die Rollen eines Ablaufs. Wir schreiben mit Ihnen auf, was ein Agent darin darf und was nie.