Plattform · 05 Security

Ein Agent ist kein Benutzer mit geliehenem Passwort

Der häufigste Konstruktionsfehler in Agenten-Projekten: Der Agent handelt unter dem Konto eines Administrators. Damit entspricht sein Schadensradius dessen Rechten — dauerhaft, unbegrenzt und im Log nicht unterscheidbar. Ein Agent braucht eine eigene Identität.

Agent Identity bedeutet: Der Agent ist ein eigenständiger Principal mit eigener Kennung, eigenen Rechten und eigener Spur im Audit-Log. Er erhält kurzlebige, auf eine Ressource begrenzte Credentials nach OAuth 2.1 mit Resource Indicators — nicht das Token eines Menschen und keinen dauerhaften API-Schlüssel.

10 min Standard-Lebensdauer eines Agenten-Credentials je Lauf ausgestellt, nicht je Deployment
deny Standardentscheidung der Policy Engine erlaubt wird, was explizit erlaubt ist
0 freier Egress aus der Ausführungsumgebung nur explizit gelistete Ziele

Der Agent als eigener Principal

Sobald ein Agent handelt statt nur zu antworten, wird er zu einem Akteur im System. Alles, was für menschliche Konten gilt, gilt dann auch für ihn: eindeutige Identität, minimale Rechte, befristete Credentials, nachvollziehbare Spur. Nur die Kontrollen unterscheiden sich — ein Agent kann keine MFA-Abfrage beantworten, dafür lässt sich seine Rechteliste maschinell erzwingen.

action-agent principal, eigene id token-service oauth 2.1 · ttl 10 min policy engine allow · limit · approve zielsystem audience-gebunden SCOPE: write:refund · AUDIENCE: billing-api · GÜLTIG: 10 min audit-log wer · was · womit · mit welcher entscheidung · wann
Vier Stationen, ein Log. Ohne eigene Identität des Agenten ist die erste Spalte im Audit-Log wertlos.
Agent Identity
Eigenständige, maschinenlesbare Identität eines KI-Agenten mit eigener Kennung, eigenem Rechteumfang und eigener Spur im Audit-Log — getrennt von der Identität des Menschen, der den Lauf ausgelöst hat.
Resource Indicator
Angabe des Zielsystems bei der Ausstellung eines Tokens (RFC 8707). Das ausgestellte Token gilt nur für genau diese Zielgruppe und ist bei einem anderen Dienst wertlos — auch wenn es dort abgefangen wird.
Blast Radius
Der maximale Schaden, den ein kompromittierter oder fehlgeleiteter Agent anrichten kann. Er ergibt sich aus Scopes, Betragsgrenzen, Egress-Regeln und Laufzeit der Credentials — nicht aus der Formulierung des Prompts.

Die Policy Engine entscheidet, nicht der Prompt

Eine Regel im Prompt ist eine Bitte. Eine Regel in der Policy Engine ist eine Bedingung. Der Unterschied wird sichtbar, sobald ein manipuliertes Dokument dem Modell eine andere Anweisung gibt — die Bitte kann es ignorieren, die Bedingung nicht.

policy/refund.policy
# Standardentscheidung ist deny. Jede Erlaubnis ist explizit.
default decision = "deny"

# Lesende Abfragen: erlaubt, solange der Agent den Scope hat
# und das Ergebnis eine sinnvolle Groesse nicht ueberschreitet.
allow {
  input.tool == "postgres.query"
  input.agent.scopes[_] == "read:orders"
  input.params.max_rows <= 500
}

# Geld bewegen: nur unterhalb der Grenze, nur in EUR, nur wenn
# der Vorgang zum aktuellen Lauf gehoert. Der Idempotenz-Key
# verhindert, dass derselbe Refund zweimal genehmigt wird.
allow {
  input.tool == "stripe.refund"
  input.agent.scopes[_] == "write:refund"
  input.params.amount <= 250
  input.params.currency == "EUR"
  input.params.order_id == input.run.context.order_id
}

# Darueber entscheidet ein Mensch. Kein Selbstfreigabe-Pfad.
require_approval {
  input.tool == "stripe.refund"
  input.params.amount > 250
}

# Sub-Agenten duerfen nie mehr Rechte anfordern als der Eltern-Lauf.
deny {
  input.agent.parent
  not subset(input.agent.scopes, input.agent.parent.scopes)
}

Sandboxing, Egress und Prompt Injection

Sicherheitsstandards adressieren inzwischen ausdrücklich die Protokollebene: Isolation der Ausführungsumgebung von MCP-Servern, Authentifizierung des Aufrufers über Modell-API, MCP und A2A hinweg, Protokollierung mit Werkzeug-Metadaten. Praktisch heißt das bei uns:

  • Isolierte Ausführung. Jeder nicht selbst gebaute MCP-Server läuft in einem eigenen Container ohne Zugriff auf das Dateisystem des Hosts, ohne Zugangsdaten anderer Werkzeuge, mit begrenztem Speicher und begrenzter Laufzeit.
  • Egress-Allowlist. Ausgehende Verbindungen sind grundsätzlich blockiert. Erlaubt sind nur namentlich gelistete Ziele mit Port. Datenabfluss über einen kompromittierten Konnektor wird damit zur Konfigurationsänderung, nicht zum stillen Vorfall.
  • Daten sind keine Anweisungen. Rückgaben von Werkzeugen werden als untrusted markiert und in einen separaten Kontextbereich gelegt. Was dort steht, kann Verhalten nicht umdefinieren — die Grenzen kommen aus Policy und Scopes, nicht aus dem Prompt.
  • Gepinnte Versionen. Externe MCP-Server werden auf eine geprüfte Version festgelegt. Ein Update ist eine bewusste Entscheidung mit erneuter Prüfung, kein automatischer Vorgang.
Bedrohung, Maßnahme, Restrisiko
BedrohungMaßnahmeRestrisiko
Prompt Injection über Tool-RückgabeGetrennter Kontextbereich, Ausgabe-Schema-Validierung, Grenzen in der Policy statt im PromptFachlich falsche, aber formal erlaubte Aktionen bleiben möglich
Kompromittierter MCP-ServerContainer-Isolation, Egress-Allowlist, gepinnte Version, keine geteilten ZugangsdatenDaten, die das Werkzeug legitim sieht, sieht auch der Angreifer
Gestohlenes Agenten-TokenLebensdauer 10 Minuten, Bindung an Zielsystem, Bindung an Lauf-IDKurzes Zeitfenster für Missbrauch innerhalb desselben Scopes
Rechteausweitung über Sub-AgentenScopes sind Teilmenge des Eltern-Laufs, Prüfung in der Policy EngineFehlerhafte Modellierung des Eltern-Laufs wirkt nach unten durch
Gefälschte Agent Card (A2A)Signaturprüfung verpflichtend, Registry-Eintrag mit BetreiberzuordnungSignatur belegt Identität, nicht Qualität oder Absicht
Kostenexplosion durch SchleifeBudget-Cap je Lauf, Rate-Limit je Werkzeug, VersuchszählerBis zum Cap entstehen reale Kosten

Was das nicht löst

Ehrliche Grenzen

Prompt Injection ist nicht gelöst — weder bei uns noch anderswo. Wir können den Schaden begrenzen, indem wir Rechte klein halten, Beträge deckeln und irreversible Schritte an Menschen binden. Wir können nicht garantieren, dass ein Modell einen manipulierten Text nie befolgt. Wer diese Garantie braucht, darf dem Agenten an dieser Stelle keine Aktionsrechte geben — das ist eine Architekturentscheidung, keine Konfiguration.

Häufige Fragen

Security im Detail

Warum reicht ein Service-Account nicht aus?

Ein Service-Account ist statisch: dauerhaftes Geheimnis, fester Rechteumfang, keine Bindung an einen konkreten Vorgang. Ein Agenten-Credential wird je Lauf ausgestellt, ist an Zielsystem und Lauf-ID gebunden und verfällt nach Minuten. Der Unterschied zeigt sich im Schadensfall.

Wie greift das in unser bestehendes Identity-Management?

Über Ihren vorhandenen Identity Provider. Wir binden Agenten als eigene Principals an Entra ID, Keycloak oder ein anderes OIDC-fähiges System an. Rollen und Freigabewege bleiben dort, wo sie heute gepflegt werden.

Wer sieht, was ein Agent getan hat?

Jede Aktion steht mit Agenten-Identität, Werkzeug, sanitisierten Parametern und Policy-Entscheidung im Audit-Log. Die Auswertung erfolgt in Ihrem eigenen Stack oder in unserem — auf Wunsch mit Weiterleitung an ein SIEM wie Wazuh. Details unter Observability.

Was passiert, wenn ein Agent auffällig wird?

Agenten lassen sich einzeln stilllegen — Credential widerrufen, laufende Runs anhalten, Werkzeugfreigaben entziehen. Weil jede Identität einzeln existiert, trifft das nur den betroffenen Agenten und nicht den gesamten Betrieb.

Sind Agenten mit Aktionsrechten mit der DSGVO vereinbar?

Ja, unter Bedingungen: dokumentierte Zweckbindung, Verarbeitung auf Grundlage eines AVV, nachvollziehbare Protokollierung und keine automatisierte Einzelentscheidung mit rechtlicher Wirkung ohne menschliche Beteiligung. Genau dafür gibt es die Freigabeschwellen. Einordnung auf der Trust-Seite.

Prüfen Sie fremde MCP-Server auf Schwachstellen?

Wir prüfen Herkunft, Signatur, Schema-Qualität und Egress-Verhalten und pinnen die Version. Ein vollständiges Code-Audit fremder Server leisten wir nicht — wo das nötig ist, bauen wir den Konnektor selbst. Siehe Agentic Supply Chain.

Weiter in der Plattform

Security-Review vor dem ersten Produktivlauf

Wir gehen Ihr geplantes Agenten-Design entlang der sechs Bedrohungen oben durch und schreiben auf, welcher Scope, welches Limit und welche Freigabeschwelle jeweils nötig sind. Ergebnis ist ein Dokument, das auch ein Auditor lesen kann.

Oder direkt: 09571 873149