Aktionskatalog für AI-Agents: Zugriff finden, den du nicht brauchst
Erstelle einen Aktionskatalog für AI-Agents, der übermäßige Berechtigungen sichtbar macht, indem jede Aktion, ihre Folgen, ihr Eigentümer, ihre Identität und die Genehmigungsentscheidung erfasst werden.

Ein Aktionskatalog für einen AI-Agent ist der schnellste Weg, Berechtigungen zu finden, die niemand bewusst ausgewählt hat. Er listet die Vorgänge auf, die ein Agent außerhalb seines eigenen Arbeitsbereichs ausführen kann, und verlangt für jeden eine Entscheidung: Wem gehört die Aktion, was passiert bei einem Fehler und muss ein Mensch sie genehmigen?
Die meisten Teams beginnen an der falschen Stelle. Sie erfassen API-Schlüssel, Integrationen oder Softwarekonten und glauben anschließend, den Zugriff zu verstehen. Das tun sie nicht. Eine Zugangsdaten ist nur ein Behälter. Die Sicherheitsentscheidung liegt auf Ebene der einzelnen Aktion: «Eine Rechnungsentwurf erstellen» unterscheidet sich deutlich von «Eine Rückerstattung auslösen», selbst wenn beide Aufrufe dasselbe Token verwenden.
Ich habe erlebt, wie Berechtigungsprüfungen scheiterten, weil ein Team fragte: «Braucht der Agent Zugriff auf das Abrechnungssystem?» Diese Frage ist zu allgemein, um sie ehrlich zu beantworten. Frage stattdessen, ob er eine einzelne Rechnung lesen, einen Entwurf erstellen, eine Rückerstattung einreichen, Auszahlungsdaten ändern oder die Kundenliste exportieren muss. Die Antworten unterscheiden sich meist. In diesen Unterschieden zeigt sich der unnötige Zugriff.
Eine Integrationsliste verbirgt die wichtigen Berechtigungen
Ein Systeminventar zeigt, womit sich ein Agent verbindet. Ein Aktionskatalog zeigt, was er bewirken kann. Führe beides, aber verwechsle sie nicht.
Betrachte einen Agent, der mit einem Quellcodeverwaltungssystem verbunden ist. «Repository-Zugriff» kann das Lesen von Code, das Eröffnen eines Pull Requests, das Ändern des Branch-Schutzes, das Erstellen eines Deployment-Schlüssels, das Veröffentlichen eines Releases oder das Löschen eines Repositorys umfassen. Diese Sammlung als eine einzige Berechtigung zu behandeln, macht aus mehreren getrennten Risikoentscheidungen ein bequemes Ja oder Nein.
Der gleiche Fehler tritt bei SSH auf. «Der Agent kann sich per SSH mit Staging verbinden» sagt fast nichts aus. Ein eingeschränkter Befehl, der den Dienststatus abruft, hat andere Folgen als Shell-Zugriff über ein Konto, das Dienste neu starten, Deployment-Geheimnisse lesen oder Firewall-Regeln ändern kann. Katalogisiere die Befehlsfamilie oder den Endpunkt, nicht nur das Transportprotokoll.
Der Unterschied ist wichtig, weil Teams zwei Dimensionen der Gefährdung regelmäßig vermischen:
- Erreichbarkeit bedeutet, dass der Agent ein System kontaktieren kann.
- Befugnis bedeutet, was das System nach dem Kontakt erlaubt.
- Folge bedeutet, was passiert, wenn der Agent eine falsche oder manipulierte Anfrage stellt.
Ein interner Endpunkt kann schwer erreichbar sein und trotzdem sehr weitreichende Befugnisse haben. Eine öffentliche API kann breit erreichbar sein, aber nur begrenzte Befugnisse bieten. Ein Genehmigungsdesign, das sich nur daran orientiert, ob ein Dienst «intern» ist, übersieht beide Fälle.
NIST Special Publication 800-53, Kontrolle AC-6, beschreibt das Prinzip der geringsten Rechte als die Vergabe genau der Zugriffe, die für die zugewiesenen Aufgaben erforderlich sind. Das klingt selbstverständlich, bis man es auf einen Agent anwendet. «Zugewiesene Aufgabe» darf nicht «bei der Entwicklung helfen» bedeuten. Gemeint sein muss eine Aktion mit Ziel, Methode, Grenze und erwartetem Ergebnis. Wenn du das nicht aufschreiben kannst, kannst du auch nicht behaupten, dem Prinzip der geringsten Rechte zu folgen.
Beginne mit Aktionsnamen, die ein Prüfer versteht, ohne ein Code-Repository zu öffnen. «POST /v1/issues» ist ein nützlicher Nachweis, aber «Issue im Engineering-Tracker erstellen» sagt dem Eigentümer, was er genehmigt. Halte beides im Datensatz fest.
Eine Zeile für jede extern sichtbare Aktion
Jede Katalogzeile sollte die kleinstmögliche Aktion darstellen, für die eine eigene Zugriffs- oder Genehmigungsentscheidung getroffen werden kann. Wenn zwei Vorgänge sinnvollerweise unterschiedliche Eigentümer, Auswirkungen oder Genehmigungsanforderungen haben können, brauchen sie getrennte Zeilen.
Eine praktische Zeile enthält genug Details, damit ein Entwickler eine Kontrolle umsetzen kann, und genug Klartext, damit der Systemeigentümer sie ablehnen kann. Verwende diese Felder:
| Feld | Was festgehalten wird | Zweck |
|---|---|---|
| Aktions-ID | Stabile Kennung, etwa deploy.production.restart-service | Bewahrt die Entscheidung, wenn sich Namen ändern |
| System | Zielsystem und Umgebung | Trennt Produktions- und Testzugriff |
| Aktion | Verständliches Verb und Objekt | Macht die Berechtigung prüfbar |
| Technischer Weg | API-Methode und Pfad, Befehlsmuster oder Tool-Aufruf | Ermöglicht die technische Durchsetzung der Grenze |
| Identität | Zugangsdatenart, Konten, Berechtigungsbereiche und Delegationsmodell | Macht geteilte oder übergroße Befugnisse sichtbar |
| Verarbeitete Daten | Gesendete Eingaben und zurückgegebene Ausgaben | Zeigt das Risiko von Datenabfluss |
| Auswirkungen | Folgenkategorie und Reversibilität | Steuert die Genehmigungsentscheidung |
| Eigentümer | Benannte fachliche oder technische entscheidende Person | Gibt der Berechtigung eine verantwortliche Person |
| Genehmigung | Keine, pro Sitzung oder pro Aufruf | Definiert den menschlichen Kontrollpunkt |
| Nachweis | Test, Log-Referenz oder Implementierungsort | Belegt, dass die Zeile der Realität entspricht |
| Prüfdatum | Datum und Prüfer | Verhindert, dass alte Ausnahmen dauerhaft bestehen |
Schreibe in ein Aktionsfeld nicht «verschieden», «Admin-Aufgaben», «vollständige API» oder «nach Bedarf». Diese Formulierungen bedeuten, dass der Katalog endet, bevor die eigentliche Arbeit beginnt. Teile den Eintrag auf, bis eine Person ohne zu raten Ja oder Nein sagen kann.
Hier ein kompaktes Beispiel für einen Entwicklungsagent:
action_id: issue-tracker.create-bug
system: issue tracker, production tenant
operation: Create a bug report in the Engineering project
technical_route: POST /api/projects/engineering/issues
identity: service account agent-issues, scope issues:write
inputs: title, body, labels, repository reference
outputs: issue ID and URL
impact: internal write, reversible by project members
owner: Engineering operations manager
approval: per-session
review_date: 2026-09-30
Die Bezeichnung «production tenant» gehört in diese Zeile, selbst wenn die Aktion nur Tickets erstellt. Viele Teams verwenden einen einzigen produktiven SaaS-Mandanten für echte Kunden-, Mitarbeiter- und Vorfallinformationen. Die Umgebungsbezeichnung zeigt den Prüfern, welche Grenze sie überschreiten.
Vermeide falsche Präzision. Du brauchst keine eigene Zeile für jedes harmlose Feldupdate, wenn Ziel, Eigentümer, Identität, Genehmigung und Folge wirklich identisch sind. Separate Zeilen sind nötig, wenn ein besonderes Feld das Ergebnis verändert. «Vorfallstatus aktualisieren» und «Incident Commander ändern» können über denselben Endpunkt laufen, sollten aber nicht dieselbe Genehmigungsentscheidung erhalten.
Aktionen über Zugangsdaten und Abläufe finden
Die vollständige Aktionsmenge findest du nicht durch das Lesen eines Agent-Prompts. Prompts beschreiben Absichten. Code, Konfiguration, Zugangsdaten und beobachteter Datenverkehr zeigen, was der Agent tatsächlich anfordern kann.
Beginne mit den Abläufen, die der Agent nach den Erwartungen des Teams ausführen soll. Bitte Entwickler, die letzten zehn Aufgaben zu beschreiben, die sie ihm gegeben haben oder geben wollen, und dabei Verben zu verwenden. «Einen fehlgeschlagenen Build untersuchen» kann das Lesen von Logs, eine Abfrage des Deployment-Dienstes, das Eröffnen eines Issues, den Neustart einer Testumgebung und das Veröffentlichen einer Nachricht umfassen. Erfasse jede überschrittene externe Grenze.
Arbeite anschließend von jeder Zugangsdaten zurück. Prüfe API-Bereiche, OAuth-Gewährungen, Rollen von Dienstkonten, autorisierte SSH-Schlüssel, Befehls-Wrapper, CI-Variablen und lokale Geheimnisspeicher. Zugangsdaten machen oft Aktionen sichtbar, die niemand im Workflow-Gespräch genannt hat. Ein API-Token mit Benutzerverwaltungsrechten ist ein Kandidat für den Katalog, selbst wenn das Team darauf besteht, dass der Agent nur Tickets anlegt.
Vergleiche zum Schluss die Absicht mit den Nachweisen. Netzwerkspuren, API-Gateway-Logs, Befehlsauditaufzeichnungen und Agent-Tooldefinitionen zeigen Aufrufe, die im Workflow-Dokument fehlen. Führe diesen Schritt nach Möglichkeit zuerst in einer sicheren Testumgebung aus. Produktionslogs bleiben trotzdem wichtig, weil Agents und Menschen unter Zeitdruck Abkürzungen entdecken.
Verwende diese Routine mit fünf Durchgängen:
- Liste jeden Agent-Workflow auf, der über die lokale Aufgabe hinausreicht.
- Extrahiere aus Konfiguration und Code jeden Tool-Aufruf, Endpunkt und jedes Shell-Befehlsmuster.
- Ermittle, was jede Zugangsdaten erlaubt, einschließlich geerbter Rollen und Wildcard-Bereiche.
- Prüfe aktuelle Aktionslogs auf Ziele oder Verben, die in der Liste fehlen.
- Kläre die Unterschiede mit der Person, der das Zielsystem gehört.
Im vierten Durchgang tauchen die unangenehmen Erkenntnisse auf. Vielleicht findest du ein altes Token mit umfassender Repository-Administration, einen Staging-SSH-Schlüssel, der von Produktionshosts akzeptiert wird, oder einen «internen» Webhook, der ein Release auslösen kann. Reduziere den Eintrag nicht stillschweigend, damit er zum ursprünglichen Plan passt. Nimm die tatsächlich mögliche Aktion in den Katalog auf und lass jemanden entscheiden, ob sie bestehen bleibt.
Ein guter Test ist, die Zeile einer Kollegin zu geben, die die Integration nicht gebaut hat. Sie sollte erklären können, was der Agent sendet, was er zurückbekommt und welcher plausible Fehler am schlimmsten wäre. Kann sie das nicht, ist die Zeile technischer Ballast und kein Kontrollnachweis.
Auswirkungen brauchen Folgen, keine allgemeine Risikozahl
Ordne Auswirkungen danach ein, was eine falsche Aktion verändert, offenlegt, ausgibt oder verbindlich festlegt. Eine einzige Bewertung «hoch, mittel, niedrig» reicht nicht, weil sie den Grund verschweigt, aus dem eine Aktion menschliche Aufmerksamkeit braucht.
Ich verwende im Katalog fünf Folgenkategorien: Offenlegung, Integrität, Verfügbarkeit, externe Verpflichtung und Berechtigungsänderung. Eine Zeile kann mehrere Kategorien tragen. Das Lesen eines Kundenexports hat eine Folge für die Offenlegung. Das Löschen einer Bereitstellung verändert die Verfügbarkeit. Das Hinzufügen eines Administrators verändert Berechtigungen. Das Senden eines Vertrags erzeugt eine externe Verpflichtung, selbst wenn die Aktion technisch rückgängig gemacht werden kann.
Füge zwei weitere Merkmale hinzu: Reversibilität und Wirkungsradius. Bei der Reversibilität geht es darum, ob eine kompetente Person die Aktion ohne Verlust oder Verwirrung rückgängig machen kann. Der Wirkungsradius fragt, ob ein Fehler einen Entwurf, ein Projekt, viele Benutzer oder eine gesamte Umgebung betrifft.
So entstehen Entscheidungen, die sich begründen lassen. «Temporären Test-Branch löschen» kann eine reversible und begrenzte Integritätsänderung sein. «Produktionsdatenbank-Zugangsdaten rotieren» kann zwar die Sicherheit verbessern, aber auch die Verfügbarkeit vieler Dienste beeinträchtigen. Beides sind Schreibaktionen, gehören aber in unterschiedliche Genehmigungskategorien.
Lass dich bei der Reversibilität nicht mit «Die API unterstützt Rückgängigmachen» abspeisen. Eine Rückerstattung kann im Hauptbuch rückgängig gemacht werden, während der Kunde bereits eine verwirrende E-Mail erhalten hat. Ein veröffentlichtes Paket kann zurückgezogen werden, nachdem nachgelagerte Systeme es abgerufen haben. Ein gelöschtes Konto kann wiederhergestellt werden, während sein früherer Eigentümer während eines Vorfalls den Zugriff verliert. Betrachte die betriebliche Folge und nicht nur den Datenbankvorgang.
Die von einer Aktion zurückgegebenen Daten verdienen dieselbe Aufmerksamkeit wie die gesendeten Daten. Eine scheinbar harmlose Statusabfrage, die vollständige Umgebungsvariablen, Supportverläufe oder private Schlüssel zurückgibt, ist eine Offenlegungsaktion. Teams konzentrieren sich oft zu stark auf Schreibzugriffe, weil Schreiben aktiv wirkt. Ein Agent, der alle Geheimnisse lesen und anschließend einen externen Endpunkt aufrufen kann, verfügt über genug Zugriff für einen schweren Vorfall.
Formuliere Auswirkungen konkret. Ersetze «hohe Auswirkungen» durch «kann die Produktionsautorisierung für alle Mitglieder des Arbeitsbereichs ändern» oder «kann Kundenkennungen an eine Drittanbieter-API übertragen». Die erste Beschreibung sagt dem Eigentümer, was er entscheiden muss. Das Etikett allein tut es nicht.
Eigentümer müssen Nein sagen können
Jede Aktion braucht einen benannten Eigentümer, der sie ablehnen, einschränken oder entfernen kann. Diese Person besitzt die Berechtigungsentscheidung, nicht jedes operative Ergebnis, das der Agent erzeugt.
Der beste Eigentümer gehört meist zum Zielsystem oder trägt die geschäftliche Folge. Eine Engineering-Leitung kann für Produktionsbereitstellungen zuständig sein. Die Finanzabteilung besitzt die Einreichung von Rückerstattungen. Das Sicherheitsteam kann Bedingungen für die Zugriffsverwaltung festlegen, sollte aber nicht automatisch Eigentümer jeder Zeile werden, nur weil es das Sicherheitsteam ist.
Gemeinsame Eigentümerschaft lässt Kataloge verfallen. «Sicherheit und Engineering» bedeutet, dass jede Gruppe annimmt, die andere werde prüfen. Trage eine einzige verantwortliche Person ein und führe beteiligte Teams bei Bedarf in den Notizen auf. Wenn ein Eigentümer die Stelle oder das Team wechselt, übertrage die Katalogzeilen als Teil der Übergabe.
Eigentümer brauchen ein Entscheidungspaket, das auf einen Bildschirm passt. Gib ihnen Aktion, System, effektive Identität, betroffene Daten, Folge, vorgeschlagene Genehmigung und einen kurzen Grund für den Zugriff des Agents. Eine rohe Liste von OAuth-Bereichen ist keine Governance.
Der Eigentümer sollte vier Fragen beantworten:
- Braucht der Agent dieses Ergebnis, oder ist es nur für den Workflow bequem?
- Kann ein engerer Endpunkt, eine kleinere Rolle, ein anderes Konto, ein begrenzteres Ziel oder ein eingeschränkter Befehl dasselbe Ergebnis liefern?
- Welcher Fehler hätte eine nicht akzeptable Folge?
- Wer sollte die Nutzung genehmigen, und wann sollte diese Entscheidung ablaufen?
Die unangenehme Frage ist meist die erste. Teams gewähren oft eine weitreichende Aktion, weil sie damit ein späteres Gespräch vermeiden. Das ist keine Anforderung, sondern eine aufgeschobene Zugriffsprüfung mit angehängten Zugangsdaten.
Mach die Eigentümerschaft im Ausführungspfad sichtbar. Wenn bei einem Vorfall niemand den Eigentümer identifizieren kann, hat der Katalog seine Aufgabe nicht erfüllt. Ein benannter Eigentümer macht auch regelmäßige Prüfungen praktikabel, denn die Frage lautet direkt: «Genehmigst du die Aktion X für diesen Agent und diese Identität weiterhin?»
Die Genehmigung muss zum Moment der Verpflichtung passen
Eine Genehmigung ist sinnvoll, wenn sie vor dem Punkt erscheint, an dem der Agent eine Folge auslöst, und wenn der Prüfer versteht, was er erlaubt. Eine Schaltfläche mit «Tool-Nutzung erlauben», nachdem der Agent zehn unzusammenhängende Aktionen gebündelt hat, ist nur Sicherheitstheater.
Verwende im Katalog drei Genehmigungszustände. «Keine» bedeutet, dass die Aktion ausgeführt werden kann, sobald der Agent seine Sitzungsberechtigung erhalten hat. «Pro Sitzung» bedeutet, dass ein Mensch einen konkreten Agent-Prozess genehmigt, bevor dieser autorisierte Aktionen aufrufen kann. «Pro Aufruf» bedeutet, dass ein Mensch jede Nutzung dieser Aktion prüft.
Eine Genehmigung pro Sitzung eignet sich für enge, regelmäßige Aktionen mit überschaubaren Folgen, etwa das Lesen des Build-Status oder das Erstellen interner Entwurfstickets. Sie bestätigt, dass der vorgesehene Agent-Prozess aktiv ist, und lässt ihn die normale Arbeit erledigen, ohne dass jemand wiederholt auf Bestätigungen klicken muss.
Eine Genehmigung pro Aufruf passt zu Aktionen, die eine Verpflichtung erzeugen oder eine schwierige Grenze überschreiten. Verwende sie für Änderungen an Produktionszugriffen, das Löschen wichtiger Datensätze, kundenwirksame Bereitstellungen, Nachrichten außerhalb des Unternehmens, Geldtransaktionen und den Export sensibler Datensätze. Hier ist es angemessen, dass ein Mensch jede Anfrage prüft.
Der Genehmigungsdatensatz braucht Kontext. Zeige mindestens die Identität des aufrufenden Prozesses, die Aktion, das Ziel, die Zielumgebung und die wesentlichen Parameter. «Agent fordert POST an» zwingt den Prüfer, die Aktion unter Druck zu rekonstruieren. «Zahlungsdienst in Produktion neu starten, angefordert von signiertem Prozess X» ermöglicht eine echte Entscheidung.
Verwende Genehmigungsdialoge nicht als Ausgleich für eine Berechtigung, die gar nicht existieren sollte. Ein Dialog pro Aufruf für «beliebigen Shell-Befehl in Produktion ausführen» lässt den Prüfer weiterhin wiederholt einen Blankoscheck unterschreiben. Ersetze die weitreichende Shell-Fähigkeit durch eingeschränkte Befehle oder getrennte Aktionen und genehmige diese bei Bedarf.
Der Aktions-Gateway ist hier wichtig, weil er Zugangsdaten vom Agent fernhalten und die menschliche Entscheidung nahe an der Ausführung platzieren kann. Sallyport verwendet eine feste Entscheidungskette: Ein gesperrter Tresor verweigert jede Aktion, ein neuer Agent-Prozess erhält standardmäßig eine Genehmigung pro Sitzung und ausgewählte Schlüssel können bei jeder Verwendung eine Genehmigung verlangen.
Diese Struktur vermeidet einen häufigen Fehler: eine umfangreiche Regelsprache zu erfinden, bevor die Aktionen so gut katalogisiert sind, dass sichere Regeln möglich wären. Komplexe Richtlinien wirken in einem Entwurfsdokument ausgereift und werden unprüfbar, sobald Ausnahmen hinzukommen. Beginne mit klaren Aktionen, engen Identitäten und Genehmigungen, die zu den Auswirkungen passen.
Ein Katalog zeigt den Fehlerpfad, bevor es die Produktion tut
Ein Katalog bewährt sich, wenn er eine Kette gewöhnlicher Entscheidungen erkennt, die einzeln akzeptabel wirkt. Stell dir einen Coding-Agent vor, der untersuchen soll, warum ein Bestellablauf fehlgeschlagen ist.
Ein Entwickler gibt ihm ein Diensttoken, weil dieses Logs lesen kann. Dasselbe Token darf auch die Bestell-API abfragen. Der Agent findet eine fehlerhafte Bestellung und erhält die Anweisung, «Testdaten aufzuräumen». Er ruft einen Löschendpunkt im produktiven Mandanten auf, weil die Integration Mandantennamen nicht eindeutig trennt. Der Endpunkt akzeptiert die Anfrage. Später erkennt ein Mensch, dass die Bestellung echt war, doch ihre Wiederherstellung erfordert einen Abgleich zwischen Zahlungs-, Inventar- und Kundensupportsystemen.
Jede einzelne Aussage klang harmlos: Logs lesen, Bestellungen abfragen, Testdaten entfernen. Der Aktionskatalog hätte die Kette in Zeilen aufgeteilt:
| Aktion | Verstecktes Problem | Bessere Entscheidung |
|---|---|---|
| Logs des Bestellablaufs lesen | Logs enthalten Kundenkennungen | Zurückgegebene Felder begrenzen und Offenlegungsfolgen dokumentieren |
| Bestellung nach ID abfragen | Token erlaubt weitreichenden Bestellzugriff | Eine schreibgeschützte Identität auf den erforderlichen Mandanten begrenzen |
| Testbestellung löschen | Produktion und Test teilen eine Endpunktfamilie | Zielumgebungen trennen und Genehmigung pro Aufruf verlangen |
| Kundenbestellung korrigieren | Das ist keine Aufräumarbeit | Eigentümerschaft den Betriebsmitarbeitern zuweisen und aus dem Agent-Umfang entfernen |
Die nützliche Erkenntnis lautet nicht «Agents machen Fehler». Menschen erzeugen dieselbe Fehlerkette, wenn Zugriffsgrenzen unklar sind. Agents handeln schneller, wiederholen Versuche bereitwilliger und können einer Anweisung folgen, die lokal vernünftig klingt, ohne den geschäftlichen Kontext zu bemerken, den ein Mensch erschließen würde.
Schreibe bei Zeilen mit weitreichenden Folgen mögliche Fehlerpfade in die Notizen. Verwende ein einfaches Format: Auslöser, falsches Ziel oder falsche Interpretation, ausgeführte Aktion, unmittelbare Wirkung, Aufwand der Wiederherstellung. So werden Genehmigungsentscheidungen konkreter und Prüfer erhalten einen Grund, weitreichenden Zugriff abzulehnen.
Ein Katalog erkennt auch gefährliche Kombinationen. Das Lesen von Vorfallsnotizen kann akzeptabel sein. Das Veröffentlichen auf einer öffentlichen Statusseite kann mit Prüfung ebenfalls akzeptabel sein. Wenn ein Agent beides ohne Inhaltsgrenze darf, können interne Vorfalldetails offengelegt werden. Prüfe Kombinationen, bei denen eine Aktion sensible Eingaben liefert und eine andere Daten aus der Organisation heraus sendet.
Den Katalog durchsetzbar machen und mit der Realität abgleichen
Ein Katalog, der nur in einer Tabelle lebt, wird zu einer Wunschliste von Berechtigungen. Verknüpfe jede genehmigte Zeile mit einer technischen Grenze: eigenen Zugangsdaten, einem eingeschränkten API-Bereich, einer Zielliste, einem begrenzten SSH-Befehl oder einer Genehmigungskonfiguration.
Verwende Aktions-IDs in Konfiguration und Logs. So entsteht ein einfacher Test: Jede beobachtete externe Aktion sollte einer Katalog-ID entsprechen, und jede aktive Katalog-ID sollte auf eine aktuelle Durchsetzungsstelle verweisen. Untersuche beide Abweichungen. Eine beobachtete Aktion ohne Zeile ist Schattenzugriff. Eine Zeile ohne Durchsetzung kann ein veralteter Plan oder ein unkontrollierter Pfad sein.
Bei HTTP-Aufrufen prüfst du Methode, Host, Pfadmuster, Zielumgebung und Berechtigungsbereich der Zugangsdaten. Bei SSH prüfst du Konto, Hostgruppe, Befehlsbeschränkungen und die Möglichkeit, beliebige Argumente zu übergeben. «SSH-Zugriff ist genehmigt» ist keine durchsetzbare Aussage.
Dieser Katalogeintrag behauptet beispielsweise, dass der Agent nur einen Bereitstellungsstatus abrufen kann:
Action ID: deploy.status.read
Host: deploy.internal.example
Command: deployment-status --service <approved-service>
Identity: agent-deploy-read
Approval: per-session
Diese Implementierung widerlegt die Behauptung:
command="/usr/local/bin/deployment-status $SSH_ORIGINAL_COMMAND" ssh-ed25519 AAAA... agent
Der Wrapper übergibt einen beliebigen ursprünglichen Befehl als Argument. Wenn deployment-status eine Shell aufruft oder eine ungeprüfte Option akzeptiert, ist die Kataloggrenze nur eine Behauptung. Ein sichereres Design ordnet einen genehmigten Dienstnamen einem festen Befehl zu und weist jede andere Eingabe zurück. Teste den Ablehnungspfad bewusst.
case "$1" in
checkout) exec /usr/local/bin/deployment-status --service checkout ;;
search) exec /usr/local/bin/deployment-status --service search ;;
*) echo "service not permitted" >&2; exit 1 ;;
esac
Kopiere diesen Ausschnitt nicht unbesehen in eine authorized-keys-Konfiguration. Er zeigt die benötigte Eigenschaft: Der Agent wählt aus definierten Aktionen und nicht aus einer beliebigen Befehlssprache. Deine Umgebung braucht weiterhin Eingabevalidierung, Kontobeschränkungen und Tests durch jemanden, der das Verhalten des Befehls versteht.
Halte für jeden Aktionsnachweis einen Test fest, der beide Seiten der Grenze beweist. Ein positiver Test zeigt, dass der genehmigte Aufruf funktioniert. Ein negativer Test zeigt, dass ein nahegelegener verbotener Aufruf scheitert. Teams bewahren oft nur den positiven Test auf. Deshalb bleiben weitreichende Zugangsdaten unbemerkt bestehen.
Sallyport erfasst Agent-Sitzungen und einzelne Aufrufe in einem einzigen verschlüsselten, hashverketteten Audit-Log. Mit sp audit verify lässt sich diese Kette offline über dem Chiffretext prüfen, ohne Zugriff auf den Tresorschlüssel. Dieser Nachweis hilft beim Abgleich des Katalogs mit dem tatsächlichen Verhalten, ersetzt aber nicht die Entscheidung, eine unnötige Aktion zu entfernen.
Zugriff prüfen, wenn sich die Arbeit ändert
Prüfe den Katalog, wenn du ein Tool hinzufügst, einen Agent-Workflow veränderst, Zugangsdaten ausstellst oder rotierst, ein Systemeigentümer wechselt oder ein Beinahevorfall entdeckt wird. Diese Ereignisse verändern den tatsächlichen Zugriff. Wer auf eine Prüfung nach Kalender wartet, lässt alte Annahmen bestehen, während Integrationen weiter wachsen.
Setze trotzdem für jede Zeile ein Prüfdatum. Aktionen mit weitreichenden Folgen verdienen kürzere Abstände als harmlose interne Lesevorgänge. Bei einer Prüfung sollte nicht gefragt werden, ob die Tabelle noch existiert. Die Fragen sollten lauten, ob der Agent diese genaue Aktion weiterhin braucht, ob die Identität noch eng begrenzt ist, ob der Eigentümer noch stimmt und ob die beobachtete Nutzung ihre Beibehaltung rechtfertigt.
Entferne ungenutzte Aktionen konsequent. Teams sträuben sich dagegen, weil sie befürchten, ein Agent könne die Berechtigung später benötigen. Falls das geschieht, füge sie über dieselbe Eigentümer- und Genehmigungsentscheidung wieder hinzu. Eine bekannte Aktion erneut zu gewähren, kostet weniger Aufwand als eine Aktion aufzuräumen, die nie hätte bestehen bleiben dürfen.
Der erste brauchbare Katalog muss nicht vollständig sein. Wähle einen Agent, liste jede externe Aktion auf, die er heute ausführen kann, und zwinge einen Eigentümer, über jede Zeile zu entscheiden. Du wirst Zugriff finden, der existiert, weil ihn bisher niemand benennen musste. Genau diesen Zugriff solltest du entfernen, bevor er im ungünstigsten Moment verwendet wird.
FAQ
Was ist ein Aktionskatalog für einen AI-Agent?
Ein Aktionskatalog ist ein Verzeichnis aller externen Vorgänge, die ein Agent anfordern oder auslösen kann. Jeder Eintrag nennt das Ziel, die genaue Aktion, die verwendeten Zugangsdaten oder die Identität, die Auswirkungen, den fachlich verantwortlichen Eigentümer und die erforderliche Genehmigung. Im Unterschied zu einem Anwendungsinventar verfolgt er, was der Agent tun kann, und nicht nur, welche Software vorhanden ist.
Wann sollte ein Team einen Aktionskatalog für einen AI-Agent erstellen?
Beginne, bevor der Agent autonom handeln kann. Ein Katalog, der erst nach der Anbindung weitreichender Zugriffe erstellt wird, dokumentiert oft eher Ausreden, als Entscheidungen zu ermöglichen. Hat ein Agent bereits Zugriff, stelle neue Aktionen während der Bestandsaufnahme hinter eine Genehmigung.
Ist schreibgeschützter Zugriff eines Agents immer risikoarm?
Lesezugriff kann sensible Informationen offenlegen, etwa Quellcode, Kundendaten, Zugangsdaten, Sicherheitsergebnisse oder Geschäftspläne. Er kann außerdem als Aufklärung vor einer schädlichen Schreibaktion dienen. Bewerte die zurückgegebenen Daten, nicht nur, ob die Anfrage einen Datensatz verändert.
Welche Aktionen eines Agents sollten jedes Mal genehmigt werden?
Verwende eine Genehmigung pro Aufruf für irreversible, nach außen sichtbare, kostspielige oder sicherheitskritische Aktionen. Dazu gehören das Löschen von Produktionsdaten, das Veröffentlichen eines Releases, Änderungen an Zugriffskontrollen, der Versand großer Nachrichtenmengen und Geldtransfers. Die Genehmigung sollte eine klare Zusammenfassung der Aktion, das Ziel und die relevanten Parameter enthalten.
Wer sollte eine Aktion im Zugriffsverzeichnis eines Agents besitzen?
Ein benannter Eigentümer muss den geschäftlichen Zweck des Systems verstehen und die Verantwortung dafür übernehmen, die Aktion zu gewähren oder zu entfernen. Er muss die Integration nicht täglich betreiben, aber entscheiden können, ob der Agent den Zugriff behalten soll. «Das Plattformteam» ist kein Eigentümer, solange keine bestimmte Person diese Entscheidung treffen kann.
Wie katalogisiere ich Aktionen, die gemeinsame Dienstkonten verwenden?
Inventarisiere die tatsächlich verwendete Identität und nicht nur den Namen des Kontos. Halte fest, ob die Aktion ein Dienstkonto, einen OAuth-Zugriff, ein API-Token, einen SSH-Schlüssel oder eine delegierte Benutzersitzung verwendet, einschließlich Berechtigungsbereichen und Zielumgebung. Gemeinsame Zugangsdaten schwächen die Verantwortlichkeit. Teile sie deshalb auf, wenn sich die Aktionsmengen unterscheiden.
Kann ich für das Berechtigungsinventar eines Agents eine Tabelle verwenden?
Eine Tabelle reicht am Anfang aus, wenn jede Aktion eine eigene Zeile, eine stabile Kennung, einen Eigentümer, ein Prüfdatum und eine Entscheidung hat. Das Problem ist nicht die Tabelle. Das Problem entsteht, wenn sie nur Systeme auflistet und nie die Personen erreicht, die Zugriffe genehmigen.
Wie bewerte ich die Auswirkungen einer AI-Agent-Aktion?
Kennzeichne nicht jede Schreibaktion pauschal als kritisch. Trenne reversible interne Änderungen, etwa das Erstellen eines Entwurfstickets, von irreversiblen oder externen Aktionen wie Veröffentlichen, Löschen oder dem Gewähren von Zugriff. Der Katalog sollte die Folgen einer falschen Aktion beschreiben und nicht mit vagen Schweregraden arbeiten.
Warum reichen Audit-Logs für die Zugriffskontrolle von AI-Agents nicht aus?
Logs zeigen, was passiert ist, nachdem eine Zugangsdaten oder Berechtigung bereits existierte. Ein Aktionskatalog fragt, ob die Aktion überhaupt existieren sollte, wer sie akzeptiert hat und welche Genehmigung vor ihrer Ausführung gilt. Beides ist nötig, denn ein vollständiges Log verringert übermäßige Zugriffsrechte nicht.
Wie oft sollte ein Aktionskatalog für einen AI-Agent geprüft werden?
Prüfe den Katalog, wenn ein Agent eine neue Integration erhält, sich Zugangsdaten ändern, ein Systemeigentümer wechselt oder ein Vorfall beziehungsweise Beinahevorfall eintritt. Lege außerdem für jeden Eintrag ein regelmäßiges Prüfdatum fest, bei besonders weitreichenden Aktionen in kürzeren Abständen. Ein ungeprüfter Katalog wird zum Archiv von Berechtigungen, die heute niemand mehr erteilen würde.