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.
- 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.
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.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
scopeundaud - 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
- AXON · TechnikWerkzeugeWie ein Sprachmodell einen Werkzeugaufruf nur vorschlägt, die Laufzeit Schema und Recht prüft und Eingangstexte als Daten behandelt, nie als Anweisung.
- AXON · TechnikFreigabeWie der gebaute Prototyp ein Ja mit HMAC-SHA256 an eine Handlung bindet, es beim Einlösen verbraucht und jeden Eintrag an den Prüfwert des vorigen kettet.
- ProduktAXONAgenten arbeiten Vorgänge ab, mit Rechten und Verlauf
Zeigen Sie uns die Rollen eines Ablaufs. Wir schreiben mit Ihnen auf, was ein Agent darin darf und was nie.