Genehmigungskontrollen für KI-Agenten: Regeln oder klare Entscheidungen
Genehmigungskontrollen für KI-Agenten können fragile Regeln bei vielen lokalen Agenten ersetzen. Vergleiche Policy-Pflege, klare Prompts, den Umgang mit Geheimnissen und Audit-Nachweise.

Ein KI-Agent braucht nicht jedes Mal ein kleines Autorisierungsprogramm für Unternehmen, wenn er ein API-Token oder einen SSH-Schlüssel verwenden will. Die meisten Teams brauchen drei Entscheidungen, die auch unter Druck verständlich bleiben: Ist der Geheimnisspeicher verfügbar? Darf dieser Agentenprozess in diesem Lauf handeln? Und erfordert genau dieses Zugangsmittel eine neue Entscheidung durch einen Menschen?
Policy Engines können weit mehr Fragen beantworten. Sie können aber auch jede Änderung einer Berechtigung in ein kleines Softwareprojekt verwandeln, mit vertrauenswürdigen Eingaben, zu testenden Regeln, zu erklärenden Ausnahmen und Fehlern, die genau dann auftreten, wenn jemand eine Bedingung zum schlechtesten Zeitpunkt ändert. Verwende eine Rule Engine, wenn dein Zugriffsproblem tatsächlich wechselnde Zuständigkeiten und Einschränkungen hat. Setze sie nicht als Dekoration um eine einfache Genehmigungsgrenze ein.
Eine Rule Engine macht Autorisierung zur Softwarepflege
Eine Policy Engine ist Code, unabhängig davon, ob ihre Syntax wie Code aussieht. Jemand muss die verfügbaren Fakten definieren, Regeln schreiben, Prioritäten festlegen, Änderungen testen, Versionen veröffentlichen, unerwartete Treffer untersuchen und Regeln entfernen, die nicht mehr zur Organisation passen.
Diese Arbeit kann gerechtfertigt sein. Ein Unternehmen muss möglicherweise verschiedenen Ressourcenverantwortlichen erlauben, Zugriffsbedingungen festzulegen, Aktionen nach Region oder Umgebung zu beschränken oder rechtliche und vertragliche Vorgaben umzusetzen. In solchen Fällen kann eine kleine feste Kontrollmenge verschiedene Fälle in eine grobe Genehmigung zwingen. Der Fehler besteht darin, diese Komplexität als kostenlos zu behandeln, nur weil eine Policy-Sprache sie hinter deklarativer Syntax versteckt.
Betrachte eine bekannte Regel:
allow if
agent.project == "payments"
and request.host ends_with ".internal.example"
and request.method in ["GET", "POST"]
and time.weekday in ["Mon", "Tue", "Wed", "Thu", "Fri"]
Sie wirkt sinnvoll, bis jemand operative Fragen beantworten muss. Wer weist agent.project zu? Kann der Agent den Wert beeinflussen? Akzeptiert ends_with auch not-internal.example? Was darf POST an einem Endpunkt tun, der erstellen, erstatten, löschen oder eine Überweisung auslösen kann? Was passiert bei einem Vorfall am Samstag? Überschreibt eine spätere Ablehnung eine frühere Genehmigung?
Jede Frage fügt Semantik hinzu. Jede semantische Regel braucht einen Test. Jede Ausnahme wird Teil des Berechtigungsmodells, auch wenn sie in einer hastig geschriebenen Chatnachricht steht und eine Woche später in eine Regel kopiert wird.
Die Dokumentation von Open Policy Agent beschreibt Policies zu Recht als Code und empfiehlt, sie zu testen. Das ist kein Marketingspruch für Flexibilität. Es ist ein Hinweis auf den operativen Vertrag: Wenn eine Policy einen wichtigen Zugriff steuert, muss das Team Änderungen wie Codeänderungen behandeln. Reviewer brauchen Testdaten. CI braucht erwartete Entscheidungen. Ein Bereitschaftsmitarbeiter braucht eine Möglichkeit festzustellen, welche Policy-Version eine Anfrage erlaubt hat.
Viele Teams umgehen diesen Vertrag. Sie kopieren ein paar Regeln in eine Konfigurationsdatei und stellen sechs Monate später fest, dass niemand weiß, ob eine Ablehnung durch einen Tippfehler, eine fehlende Eingabe oder eine beabsichtigte Grenze entstanden ist. Ein KI-Agent macht diesen Fehler sichtbarer, weil er ungewöhnliche Aufrufabfolgen erzeugt und einen übersehenen Zweig viel schneller ausführen kann als ein menschlicher Bediener.
Feste Kontrollen verringern den Pflegeaufwand, indem sie keine beliebigen Bedingungen ausdrücken. Das wirkt begrenzend, weil es begrenzend ist. Die nützliche Frage lautet, ob diese Einschränkung eine Anforderung ausschließt, die du tatsächlich hast, oder nur eine zukünftige Regel, die jemand irgendwann vielleicht wünschen könnte.
Klare Entscheidungen zählen, wenn ein Aufruf Folgen hat
Ein Bediener muss in einem Satz erklären können, warum ein Aufruf erlaubt wurde. Wenn die Antwort erfordert, ein Regelpaket zu lesen, Prioritäten aufzulösen und vom Agenten gelieferte Attribute zu prüfen, kann der Bediener den Zugriff während eines Vorfalls nicht zuverlässig freigeben oder entziehen.
Klare Entscheidungen verhindern außerdem einen stillen Kategorienfehler: Eine Regel kann eine Aktion technisch erlauben, ohne sie für die Person verständlich zu machen, die die Folgen trägt. Ein Hinweis, dass ein unbenannter Prozess Zugriff auf eine allgemeine Fähigkeit angefordert hat, liefert dem Bediener fast keine Grundlage für eine Entscheidung. Das ist eine Formalität, keine Genehmigung.
Eine nützliche Autorisierungsansicht beantwortet konkrete Fragen:
- Welche ausführbare Datei wollte handeln, und wer hat sie signiert?
- Handelt es sich um einen neuen Prozess oder um einen Prozess, der für diese Sitzung bereits genehmigt wurde?
- Welches Zugangsmittel wird die Aktion verwenden?
- Wohin geht die Anfrage oder welchen Host kontaktiert SSH?
- Genehmigt die Person einen Lauf oder eine einzelne sensible Verwendung?
Der erste Punkt verdient mehr Beachtung, als er gewöhnlich erhält. Agentennamen sind Bezeichnungen. Die Prozessidentität ist ein Beleg. Ein Prozess kann sich release-agent nennen, während eine Codesignatur oder ein Pfad zur ausführbaren Datei dem Reviewer etwas liefert, das auch nach der Umbenennung eines Shell-Skripts Bestand hat. Identitätsnachweise beweisen nicht, dass jede Anweisung sicher ist. Sie lenken die Frage aber auf einen echten Prinzipal.
NIST Special Publication 800-207 beschreibt Zero Trust als explizite Überprüfung und fortlaufende Bewertung statt als geerbtes Vertrauen in das Netzwerk. Die praktische Lehre für lokale Agentenaktionen ist einfacher, als viele Implementierungen sie machen: Bewerte Akteur und Anfrage am Ort der Aktion. Übergib einem Agenten kein Token und hoffe dann, dass die Grenze noch sinnvoll ist, nachdem das Token deine Kontrolle verlassen hat.
Klare Entscheidungen sind auch eine Sicherheitseigenschaft. Wenn Menschen eine Genehmigung vorhersagen können, erkennen sie unerwartete Genehmigungen. Wenn ein Coding-Agent, der normalerweise Vorgangsdaten liest, plötzlich ein Produktionszugangsmittel zum Schreiben verwenden will, sollte der Unterschied sichtbar sein, bevor der Aufruf den Rechner verlässt.
Identität, Befugnis und Geheimnisverwendung sind verschiedene Fragen
Teams packen oft drei getrennte Fragen in eine Policy und können anschließend nicht erkennen, welche Annahme falsch war. Halte sie auseinander.
Die Identität fragt, wer die Anfrage gestellt hat. Bei einem lokalen Agenten können dazu der Prozess, seine Codesignatur, sein übergeordneter Prozess und seine Lebensdauer gehören. Eine verständliche Agentenbezeichnung kann helfen, sollte die Sicherheitsentscheidung aber nicht allein tragen.
Die Befugnis fragt, ob dieser identifizierte Prozess in diesem Lauf Aktionen ausführen darf. Eine Sitzungsfreigabe passt zu dieser Frage. Sie hält fest, dass eine Person einen neuen Prozess geprüft und ihm erlaubt hat, ein festgelegtes Aktions-Gateway zu verwenden, bis der Prozess endet oder der Bediener die Freigabe widerruft.
Die Geheimnisverwendung fragt, ob der konkrete API-Schlüssel oder SSH-Schlüssel für diese Aktion verwendet werden darf. Hier gehören eine Tresorsperre und eine Genehmigung pro Zugangsmittel hin. Ein gesperrter Tresor muss jede Aktion ablehnen, unabhängig von einer früheren Sitzungsentscheidung. Ein besonders sensibles Zugangsmittel kann bei jeder Verwendung eine menschliche Genehmigung verlangen, selbst wenn der Prozess bereits über eine Sitzungsbefugnis verfügt.
Wenn diese Fragen vermischt werden, entstehen vorhersehbare Fehler. Ein Team genehmigt einen Agentenprozess einmal und behandelt diese Genehmigung anschließend als Erlaubnis für jedes Zugangsmittel. Oder es entsperrt einen Tresor und verwechselt Verfügbarkeit mit Autorisierung. Oder es schreibt eine Policy, die Prozessnamen und Zielhost prüft, dem Agenten aber erlaubt, das Token abzurufen und an anderer Stelle weiterzuverwenden.
Der letzte Fehler wiegt am schwersten. Wenn ein Agent Zugangsdaten im Klartext hält, hat deine Policy nur die erste Verwendung geprüft. Der Agent kann den Wert an einen Unterprozess weitergeben, in ein Log schreiben, an einen anderen Dienst senden oder nach Ablauf der ursprünglichen Genehmigung weiterverwenden. Ein Gateway, das Geheimnisse vom Agenten fernhält, verändert die Grenze: Der Agent fordert eine Aktion an, und das Gateway führt die authentifizierte Aktion selbst aus.
Diese Unterscheidung geht über «Secret Masking» hinaus. Eine Ausgabe zu schwärzen, nachdem ein Token den Agenten erreicht hat, entfernt es nicht aus seinem Speicher, dem Prompt-Verlauf, der Shell-Umgebung oder einem Kindprozess. Wenn das Token gar nicht erst an den Agenten übergeben wird, fällt eine ganze Klasse versehentlicher Wiederverwendung weg.
Drei explizite Kontrollen decken den normalen Agentenfall ab
Eine kleine Kontrollmenge funktioniert, wenn jede Kontrolle für genau eine Entscheidung zuständig ist und keine vorgibt, die anderen zu ersetzen. Für lokale Entwickleragenten decken drei Kontrollen einen großen Teil des tatsächlichen Risikos ab, ohne eine Policy-Sprache zu erzeugen.
Erstens: Verwende eine absolute Tresorsperre. Solange der Tresor gesperrt ist, schlägt jede Aktion fehl. Das gibt dem Bediener einen physischen und gedanklichen Stopppunkt. Die Entscheidung sollte nicht von einer Regelauswertung, einer gemerkten Sitzung oder einer Netzwerkprüfung abhängen. Auf einem Mac kann das hardwaregestützte Entsperren über Secure Enclave und Touch ID diese Entscheidung besonders deutlich machen: Der Bediener hat den Tresor geöffnet oder nicht.
Zweitens: Autorisiere einen neu erkannten Agentenprozess für seine Lebensdauer. Die Genehmigung sollte den Prozess so identifizieren, dass eine freundliche Namensänderung nicht ausreicht, und beim Beenden des Prozesses ablaufen. So entfällt eine Rückfrage für jeden harmlosen Aufruf, ohne dass die Genehmigung standardmäßig dauerhaft wird.
Drittens: Markiere ausgewählte Zugangsmittel für eine Genehmigung bei jeder Verwendung. Setze das sparsam und bewusst ein. Ein Zugangsmittel für Bereitstellungen, das die Produktionsinfrastruktur ändern kann, eine SSH-Identität mit weitreichendem Hostzugriff oder ein Token, das Geld bewegen kann, rechtfertigt möglicherweise eine sofortige Entscheidung bei jedem Aufruf. Ein schreibgeschütztes Entwicklungs-Token, das ein Agent wiederholt verwendet, normalerweise nicht.
Die daraus entstehende Entscheidungsfolge ist leicht nachzuvollziehen:
if vault is locked:
deny action
else if this agent process has no current session approval:
ask for session approval
else if the selected credential requires approval per use:
ask for credential approval
else:
execute the action
Das ersetzt kein Least-Privilege-Prinzip. Das Zugangsmittel muss weiterhin einen engen Umfang haben, und der Anfrageweg braucht Transportsicherheit und eine Validierung des Ziels. Die Abfolge macht den menschlichen Kontrollpunkt sichtbar. Sie verwandelt ein Administratortoken nicht in ein sicheres Zugangsmittel.
Die Reihenfolge zählt. Eine Rückfrage pro Aufruf darf niemals eine gesperrte Tresorsperre umgehen. Eine gemerkte Sitzung darf niemals die Genehmigung eines Zugangsmittels umgehen, das bei jeder Verwendung bestätigt werden muss. In einer allgemeinen Rule Engine liegen solche Prioritätsbeziehungen oft in getrennten Policies und werden überraschend schwer zu prüfen. Bei einer festen Abfolge ist die Reihenfolge das Modell.
Eine Policy Engine verdient ihre Kosten, wenn Zuständigkeiten variieren
Eine Policy Engine ist gerechtfertigt, wenn die Autorisierungsentscheidung über viele unabhängig verwaltete Ressourcen hinweg variieren muss und sich diese Variation weder durch die Auswahl des Zugangsmittels noch durch wenige Genehmigungsklassen darstellen lässt.
Nehmen wir an, ein gemeinsamer Automatisierungsdienst verarbeitet mehrere Geschäftsbereiche. Jeder Bereich besitzt unterschiedliche Repositories, Cloud-Konten und Datenspeicher. Die Verantwortlichen müssen temporären Zugriff auf definierte Gruppen gewähren, unterschiedliche Aufbewahrungsbedingungen festlegen und Entscheidungen unter einer zentralen Governance prüfen. Eine Policy-Schicht kann hier das richtige Design sein, weil die Organisation delegierte Regelzuständigkeit und einheitliche Durchsetzung über eine große Landschaft hinweg braucht.
Ein zweiter guter Fall ist ein serverseitiger Dienst, der Anfragen von vielen nicht vertrauenswürdigen Clients erhält. Der Dienst muss möglicherweise Mandant, Rolle, Objekteigentümer, Herkunft der Anfrage und Transaktionsstatus prüfen, bevor er handelt. Eine feste lokale Sitzungsfreigabe kann das nicht ersetzen. Der Server muss jede Anfrage entscheiden, auch wenn kein Mensch in der Nähe sitzt, um sie freizugeben.
Übertrage diese Fälle nicht auf jeden lokalen Coding-Agenten. Auf einem Entwicklerrechner ist die Frage meist kleiner: Darf dieser signierte Agentenprozess dieses gespeicherte Zugangsmittel über dieses Aktions-Gateway verwenden, während der Bediener es erlaubt? Der Mensch kennt den lokalen Kontext bereits. Bedingungen zu Zeitfenstern, Projekt-Tags und spekulativen Risikowerten können mehr falsches Vertrauen als Kontrolle erzeugen.
Es gibt noch eine harte Grenze. Eine Policy kann ein zu weitreichendes Zugangsmittel nicht reparieren. Eine Regel kann Anfragen an nur einen Host erlauben. Wenn der Agent aber das Bearer-Token auslesen kann, muss der Aussteller des Tokens dessen Umfang selbst durchsetzen. Halte das Geheimnis im Gateway und begrenze es beim Anbieter. Betrachte die Gateway-Autorisierung als eine Schicht, nicht als Ersatz für die Zugriffskontrolle der Ressource.
Genehmigungsmüdigkeit bedeutet, dass der Umfang falsch ist
Wiederholte Rückfragen machen Menschen schneller, nicht aufmerksamer. Wenn jemand dieselbe Genehmigungskarte zwanzigmal sieht, während ein Agent Repository-Metadaten abruft, lernt diese Person, dass ein Klick die Arbeit fortsetzt. Die elfte Anfrage, die sich in einem wichtigen Punkt unterscheidet, erhält dann dieselbe reflexartige Zustimmung.
Die übliche Antwort besteht darin, intelligentere Regeln zu bauen, die Rückfragen unter immer spezifischeren Bedingungen unterdrücken. Häufig wird sichtbare Müdigkeit so gegen unsichtbare Komplexität getauscht. Jemand schreibt eine Ausnahme für Leseaufrufe und stellt dann fest, dass ein angeblich lesender Endpunkt eine entfernte Berechnung auslöst oder Daten offenlegt, die eigentlich geprüft werden müssten. Die Zahl der Genehmigungen sinkt, während die Entscheidung schwerer zu kontrollieren ist.
Lege den Genehmigungsumfang nach dem menschlichen Urteil fest, das erforderlich ist. Eine Sitzungsfreigabe sagt: «Ich erkenne diesen Prozess und erlaube ihm, mit den normalen Zugangsmitteln dieses Laufs zu arbeiten.» Eine Genehmigung pro Aufruf sagt: «Diese Verwendung eines Zugangsmittels hat weitreichende Folgen genug, dass ich sie einzeln prüfen werde.» Keine der beiden Rückfragen sollte nur existieren, weil eine Implementierung einen Bestätigungsdialog anzeigen möchte.
Ein gutes Design der Zugangsmittel erleichtert das. Teile Zugangsmittel nach ihren Folgen auf, statt ein mächtiges Token zu behalten und darauf zu hoffen, dass eine Policy jeden Aufruf filtert. Gib dem Agenten ein eng begrenztes Token für normale Entwicklungsarbeit. Halte das Token für Änderungen an der Produktion getrennt und verlange bei seiner Verwendung eine ausdrückliche Entscheidung. Das kann mehr Zugangsmittel erzeugen, entfernt aber fragile Anfrageanalysen aus der Autorisierungsgrenze.
Eine abgelehnte Empfehlung verdient eine direkte Antwort: «Verlange für jede Agentenaktion eine Genehmigung» klingt sicher, weil dadurch ein vollständiger Datensatz menschlicher Klicks entsteht. Für wiederholte Aufrufe mit geringen Folgen ist das meistens falsch. Menschen können eine Flut ähnlicher Anfragen nicht gut prüfen. Verlange eine Genehmigung dort, wo der Reviewer eine eigenständige Entscheidung treffen kann, und protokolliere den Rest, damit das Team das tatsächliche Verhalten untersuchen kann.
Eine harmlose Regel kann eine schädliche Anfrage autorisieren
Ein typischer Fehler beginnt mit einem Team, das einem Agenten erlauben möchte, einen Staging-Dienst zu aktualisieren. Es richtet eine Regel ein, die POST-Anfragen an api.example.internal erlaubt, wenn der Agent das Projekt staging angibt. Der Agent erhält ein Token in seiner Umgebung, weil das Gateway es nicht direkt einsetzen kann.
Während einer Fehlersuche folgt der Agent einem kopierten Befehl, der denselben Host, aber einen Verwaltungsendpunkt verwendet. Der Endpunkt akzeptiert POST und unterstützt eine Aktion, die eine Konfiguration in die Produktion befördert. Die Policy sieht eine erlaubte Methode, einen erlaubten Host und ein erlaubtes Projektlabel. Sie gibt «allow» zurück.
Das Team kann dies als Policy-Fehler bezeichnen, doch tatsächlich sind mehrere Dinge schiefgelaufen:
- Die Methode war zu weit gefasst, um eine Absicht zu beschreiben.
- Das vom Agenten kontrollierte Projektattribut belegte keine Zuständigkeit.
- Der Host enthielt Endpunkte mit sehr unterschiedlichen Folgen.
- Das Token befand sich außerhalb des Durchsetzungspunkts und konnte nach der Anfrage wiederverwendet werden.
- Der Bediener sah keine Entscheidung, die zwischen Staging-Änderungen und einer Beförderung in die Produktion unterschied.
Das Ergänzen von Routenmustern kann diese konkrete Lücke schließen. Dann fügt jemand einen versionierten Pfad, einen alternativen Hostnamen, einen Batch-Endpunkt oder einen Query-Parameter hinzu, der das Verhalten verändert. Die Policy wächst, weil das zugrunde liegende Zugangsmittel zu viel kann.
Ein besseres Design trennt Staging- und Produktionszugangsmittel. Die normale Sitzung kann das Staging-Zugangsmittel über das Gateway verwenden. Das Produktionszugangsmittel verlangt eine Genehmigung pro Verwendung, und die Genehmigung nennt Ziel und Aktion. Das Gateway setzt das Zugangsmittel ein und gibt das Ergebnis zurück, während der Agent seinen Wert nie erhält.
Auch dieses Design hängt davon ab, dass der API-Anbieter beide Zugangsmittel korrekt begrenzt. Es verhindert nicht, dass ein genehmigter Agent eine fehlerhafte Änderung im Staging vornimmt. Es sorgt aber dafür, dass ein Staging-Ablauf nicht stillschweigend durch eine lockere Regel und ein wiederverwendbares Token Produktionsbefugnisse erbt.
Teste Ablehnungspfade, bevor ein Agent sie für dich testet
Autorisierungstests sollten belegen, dass das System Aktionen unter erwarteten Bedingungen verweigert, nicht nur, dass eine normale Anfrage erfolgreich ist. Die nützlichen Testfälle sind klein genug, um sie auszuführen, bevor ein Team Zugangsmittel oder Agentenintegrationen ändert.
Bei einer festen Entscheidungsfolge solltest du die erwarteten Ergebnisse als Tabelle festhalten und neben der Implementierung aufbewahren:
| Tresorstatus | Sitzungsfreigabe | Einstellung des Zugangsmittels | Erwartetes Ergebnis |
|---|---|---|---|
| gesperrt | vorhanden | normal | ablehnen |
| entsperrt | nicht vorhanden | normal | Sitzungsfreigabe anfordern |
| entsperrt | vorhanden | normal | ausführen |
| entsperrt | vorhanden | pro Aufruf | Genehmigung des Zugangsmittels anfordern |
| entsperrt | widerrufen | normal | ablehnen oder neue Sitzungsfreigabe anfordern |
Diese Tabelle erkennt eine wichtige Klasse von Regressionen: Ein Entwickler fügt einen Komfortpfad hinzu, der die Sitzungsbefugnis vor dem Tresorstatus prüft, oder lässt einen gemerkten Prozess die Genehmigung eines Zugangsmittels pro Aufruf überspringen. Die Tabelle macht die beabsichtigte Reihenfolge überprüfbar, ohne dass man eine Policy-Sprache lernen muss.
Bei einer Policy Engine solltest du mehr testen als Beispiele, die erlaubt werden sollen. Teste fehlende Attribute, fehlerhafte URLs, alternative Hostnamen, Änderungen der Policy-Version, Regelkonflikte, Uhrzeitänderungen und ausdrückliche Ablehnungen. Das Testmodell von Open Policy Agent unterstützt Regeltests. Die schwierige Arbeit bleibt jedoch bei dir: Entscheide, welche Eingaben ein Angreifer, ein fehlerhafter Agent oder eine zukünftige Integration beeinflussen kann.
Teste auch den Widerruf, während ein Agent aktiv ist. Starte eine Sitzung, genehmige sie, führe eine normale Aktion aus, widerrufe den Zugriff und wiederhole dieselbe Anfrage. Der zweite Versuch muss am Aktions-Gateway eine Ablehnung erzeugen. Ein Widerruf, der nur einen Dashboard-Eintrag ändert, während ein Prozess ein verwendbares Zugangsmittel behält, hat die tatsächliche Befugnis nicht widerrufen.
Prüfe bei HTTP das zurückgegebene Ergebnis auf genügend Kontext, um den Fehler zu diagnostizieren, ohne Autorisierungsheader offenzulegen. Stelle bei SSH sicher, dass der Helfer die ausgewählte Identität für die Verbindung verwendet, aber kein Material des privaten Schlüssels an den aufrufenden Agenten übergibt. Diese Details wirken nebensächlich, bis ein Vorfall das Team zwingt festzustellen, was der Prozess tatsächlich besaß.
Ein Audit-Log muss eine andere Frage beantworten als eine Rückfrage
Genehmigungskontrollen verhindern eine Aktion im Moment ihrer Ausführung oder erlauben sie. Ein Audit-Log teilt dir später mit, was passiert ist, wer es genehmigt hat und ob jemand den Datensatz verändert hat. Vermische diese Aufgaben nicht in einer vagen Funktion für «Verantwortlichkeit».
Ein nützlicher Ereignisdatensatz enthält die Sitzungsidentität, die getroffene Entscheidung, die Referenz des Zugangsmittels statt seines Geheimniswerts, die Aktionsart, das Ziel, das Ergebnis und Informationen zur Reihenfolge. Er sollte auch den Widerruf einer Sitzung erfassen. Ohne diese Verbindung sehen Ermittler zwar eine Anfrage, können aber nicht feststellen, ob sie vor oder nach dem Entzug der Genehmigung durch den Bediener stattfand.
Bei Nachweisen gegen Manipulation ist eine genaue Formulierung wichtig. Eine Hash-Kette kann spätere Änderungen oder Löschungen erkennbar machen, wenn ein Prüfer über die erwarteten Kettendaten verfügt. Sie kann nicht beweisen, dass ein kompromittiertes System von Anfang an jedes Ereignis aufgezeichnet hat. Sie kann auch nicht entscheiden, ob eine Genehmigung klug war. Das Log liefert Belege über die aufgezeichnete Vergangenheit, keine Zeitmaschine.
Für ein lokales Gateway bietet ein verschlüsseltes Audit-Log, in das der ausführende Prozess nur schreiben kann, eine nützliche Trennung: Die Komponente, die Aktionen ausführt, schreibt Ereignisse, während normale Leser projizierte Journale nutzen, statt die Historie umzuschreiben. Eine Offline-Prüfung ist besonders nützlich, weil dafür weder ein verfügbarer Dienst noch ein Entschlüsselungsschlüssel erforderlich ist, nur um die Struktur der Kette zu prüfen.
Sallyport zeichnet Agentenläufe in einem Sessions-Journal und einzelne Aktionen in einem Activity-Journal auf. Beide werden aus einem verschlüsselten, hashverketteten Audit-Log erstellt. Der Befehl sp audit verify prüft die Kette offline über Chiffretext. Das ist die richtige Richtung für ein Log, das wichtig werden kann, nachdem der Rechner unter Verdacht geraten ist.
Halte die Audit-Prüfung praktisch. Wenn ein Agent dich überrascht, identifiziere zuerst den Prozess, der die Sitzungsfreigabe erhalten hat, liste die Aktionen in zeitlicher Reihenfolge auf, widerrufe die aktive Sitzung und prüfe die Logs des betroffenen Anbieters. Das lokale Journal erklärt, was das Gateway passiert hat. Der Zieldienst erklärt, was das entfernte System akzeptiert hat.
Wähle das kleinste Entscheidungsmodell, das du betreiben kannst
Beginne mit dem tatsächlichen Autorisierungspfad, nicht mit einem abstrakten Wunsch nach Flexibilität. Liste die Zugangsmittel auf, die ein Agent braucht, identifiziere diejenigen mit Folgen, die eine neue Genehmigung rechtfertigen, und entscheide, wie eine Person einen aktiven Prozess widerrufen kann. Wenn daraus drei stabile Entscheidungen entstehen, halte sie explizit.
Führe eine Policy Engine ein, wenn die Organisation Regelzuständigkeit und Variationen braucht, die sich durch eine Aufteilung der Zugangsmittel sowie Sitzungs- und Einzelgenehmigungen nicht ausdrücken lassen. Akzeptiere dann aber auch die daraus folgende Verpflichtung: Versioniere Policies, teste feindliche Eingaben, dokumentiere Prioritäten, benenne Verantwortliche und prüfe Ausnahmen so sorgfältig wie Code.
Das schlechte Design sind weder «Regeln» noch «Rückfragen». Schlecht ist eine Autorisierungsgrenze, die niemand erklären kann, während ein Agent auf seine Aktion wartet. Wenn dein Team nicht sagen kann, warum eine Anfrage erlaubt ist, verkleinere das Entscheidungsmodell, bevor du es intelligenter machst.
FAQ
Was ist der Unterschied zwischen einer Policy Engine und Genehmigungskontrollen für KI-Agenten?
Eine Policy Engine wertet Regeln anhand von Kontext aus, etwa anhand der Identität eines Agenten, des Zielhosts, der Methode, der Uhrzeit oder der Datenklassifizierung. Feste Genehmigungskontrollen machen wenige stabile Entscheidungen sichtbar, zum Beispiel ob der Tresor geöffnet ist, ob dieser Agentenlauf handeln darf und ob dieses Zugangsmittel jetzt eine menschliche Genehmigung braucht. Das erste Modell bietet Flexibilität, das zweite einen Entscheidungsweg, den Menschen erklären und testen können.
Brauchen KI-Agenten überhaupt eine Policy Engine?
Ja, wenn verschiedene Teams unterschiedliche Ressourcen verwalten, Berechtigungen je nach Umgebung variieren oder Compliance zentral verwaltete Zugriffsregeln verlangt. Der Preis dafür sind laufende Pflege, Tests, Reviews und Reaktionen auf Vorfälle. Führe eine Policy Engine nicht nur deshalb ein, weil der Agent komplizierte Aufgaben ausführen kann.
Soll ich eine Agentensitzung einmal oder jeden API-Aufruf genehmigen?
Für einen Entwicklungsagenten, der während eines Laufs mehrere zusammengehörige Aufrufe macht, ist eine Genehmigung pro Sitzung meist die bessere Standardeinstellung. Eine Genehmigung pro Aufruf passt zu Zugangsmitteln mit besonders weitreichenden Folgen, etwa Schreibzugriff auf die Produktion oder eine Zahlungsaktion. Gefährlich ist die Mitte: eine umfassende Sitzung zu genehmigen, ohne die nutzbaren Zugangsmittel einzuschränken.
Warum sollten Tresorzugriff und Agentenautorisierung getrennt sein?
Eine Tresorsperre ist eine absolute Bedingung: Solange der Tresor gesperrt ist, darf keine Aktion ein Geheimnis verwenden. Die Autorisierung beantwortet eine andere Frage, nämlich ob ein bestimmter Agentenprozess nach dem Öffnen des Tresors Aktionen anfordern darf. Wenn du beides trennst, kann eine Sitzungsfreigabe nicht als Vorwand dienen, um trotz entzogenem Zugriff weiterzuarbeiten.
Kann eine Sitzungsfreigabe für autonome Coding-Agenten unsicher sein?
Ja, wenn der Agent ein weitreichendes Token erhalten und danach ohne weitere Entscheidung beliebige Aufrufe ausführen kann. Ein Prozess kann mit einer harmlosen Aufgabe beginnen und später die Anweisung erhalten, etwas Schädliches zu lesen, zu verändern oder zu versenden. Eine Sitzungsfreigabe braucht eine begrenzte Gruppe von Zugangsmitteln und eine zuverlässige Möglichkeit, sie beim Beenden des Prozesses zu widerrufen.
Welche Zugangsmittel sollten eine Genehmigung pro Aufruf verlangen?
Fordere eine erneute Genehmigung nur für Zugangsmittel an, deren Missbrauch deutlich teurer wäre als normale Entwicklungsaktionen. Wer bei jedem risikoarmen Aufruf bestätigen muss, lernt, ohne zu lesen zu klicken. Eine Rückfrage sollte erscheinen, weil eine Person eine eigenständige Entscheidung treffen muss, nicht weil der Software keine andere Idee einfällt.
Was sollte ein Audit-Log für Aktionen eines KI-Agenten aufzeichnen?
Protokolliere die Identität des Agentenprozesses, die Autorisierungsentscheidung, die Referenz des Zugangsmittels, das Ziel, die Aktionsart, das Ergebnis und einen Nachweis, der Manipulationen sichtbar macht. Speichere keine Geheimnisse und keine vollständigen sensiblen Nutzdaten, sofern dafür kein eigenes Aufbewahrungskonzept existiert. Ein Audit-Trail, der nicht erkennen lässt, welches ausführbare Programm die Genehmigung erhalten hat, ist nach einem Vorfall deutlich weniger nützlich.
Wie entscheide ich, ob mein Team Regeln oder feste Kontrollen braucht?
Erstelle zunächst eine Tabelle mit den Agentenaktionen, die dein Team heute erlaubt, den dafür nötigen Zugangsmitteln und der Frage, ob ein Mensch zu Sitzungsbeginn oder bei jeder Verwendung entscheiden muss. Wenn sich die meisten Zeilen nur durch eine fragile Mischung von Anfragefeldern unterscheiden, entwirfst du ein Policy-Programm. Wenn die Unterschiede auf wenigen klaren Zuständigkeitsgrenzen beruhen, sind explizite Kontrollen meist leichter zu betreiben.
Warum werden Autorisierungspolicies schwer wartbar?
Policies scheitern, wenn niemand für ihre Semantik zuständig ist, Regeländerungen keine Tests haben oder sich nach einem Produktionsausfall immer mehr Ausnahmen ansammeln. Sie scheitern auch, wenn die verfügbaren Eingaben nicht das belegen, was die Regel angeblich autorisiert, etwa wenn ein vom Agenten geliefertes Projektlabel als vertrauenswürdig gilt. Eine gut lesbare Regel, die auf fälschbaren Kontext angewiesen ist, bietet keine echte Kontrolle.
Ersetzt ein manipulationssicheres Audit-Log Genehmigungsdialoge?
Nein. Ein manipulationssicher erkennbares Log kann nachträglich zeigen, dass Datensätze verändert wurden oder verschwunden sind. Es macht eine zu weitreichende Genehmigung jedoch nicht sicher. Nutze Genehmigungen, um Aktionen vor ihrer Ausführung einzuschränken, und das Journal anschließend, um den Vorfall zu untersuchen, Zugriff zu widerrufen und das Design zu verbessern.