Freigeben über


Agentensicherheit

Das Erstellen sicherer KI-Agents ist eine gemeinsame Verantwortung zwischen Agent Framework und Anwendungsentwicklern. Agent Framework bietet die Bausteine – Abstraktionen, Anbieter und Orchestrierung – aber Entwickler sind dafür verantwortlich, Eingaben zu validieren, Datenflüsse zu sichern und Tools entsprechend für ihr Szenario zu konfigurieren.

In diesem Artikel werden bewährte Methoden zum Erstellen sicherer und sicherer Agents mit Agent Framework beschrieben.

Grundlegendes zu Vertrauensgrenzen

Daten fließen durch mehrere Komponenten, wenn ein Agent ausgeführt wird: Benutzereingaben, Chatverlaufsanbieter, Kontextanbieter, LLM-Dienst und Funktionstools. Jede Grenze, an der Daten ihre Anwendung eingeben oder verlassen, stellt eine potenzielle Angriffsfläche dar.

Wichtige Vertrauensgrenzen, die Sie berücksichtigen sollten:

  • KI-Dienst – Empfängt Chatnachrichten (die PII- und Systemanweisungen enthalten können) und gibt die vom LLM generierte Ausgabe zurück.
  • Chatverlaufsspeicher – Anbieter können Unterhaltungsnachrichten über externen Speicher laden und speichern.
  • Kontextdienste – Kontextanbieter können Daten aus externen Diensten abrufen oder speichern (Erinnerungen, Benutzerprofile, RAG-Ergebnisse).
  • Auf Tools zugegriffene Dienste – Funktionstools führen vom Entwickler bereitgestellten Code aus, der externe APIs oder Datenbanken aufrufen kann.

Die gesamte externe Dienstkommunikation wird von vom Entwickler ausgewählten Client-SDKs behandelt. Agent Framework verwaltet keine Authentifizierungs-, Verschlüsselungs- oder Verbindungsdetails für diese Dienste.

Bewährte Methoden

Überprüfen von Funktionseingaben

Die KI kann jede funktion aufrufen, die Sie als Tool bereitstellen und die Argumente auswählen. Behandeln Sie LLM-bereitgestellte Argumente als nicht vertrauenswürdige Eingabe, ähnlich wie Benutzereingaben in einer Web-API.

  • Verwenden Sie allow-listing – Überprüfen Sie Eingaben anhand bekannter werte, anstatt zu versuchen, bekannte fehlerhafte Muster zu filtern. Überprüfen Sie z. B., ob sich ein Dateipfad in einem zulässigen Verzeichnis befindet, anstatt nach Traversalsequenzen zu .. suchen.
  • Erzwingen von Typ- und Bereichseinschränkungen – Überprüfen Sie, ob Argumente vom erwarteten Typ und innerhalb akzeptabler Bereiche sind (numerische Grenzen, Zeichenfolgenlängenbeschränkungen, Datumsbereiche).
  • Zeichenfolgenlängen begrenzen – Erzwingen Sie maximale Längen für Zeichenfolgenargumente, um Ressourcenausschöpfungen oder Einfügungsangriffe zu verhindern.
  • Pfadübergänge verhindern – Wenn Funktionen Dateipfade akzeptieren, auflösen Sie sie in absolute Pfade, und stellen Sie sicher, dass sie in zulässige Verzeichnisse fallen.
  • Verwenden Sie parametrisierte Abfragen – Wenn Argumente in SQL-Abfragen, Shell-Befehlen oder anderen interpretierten Kontexten verwendet werden, verwenden Sie parametrisierte Abfragen oder Escaping – niemals String-Verkettung.

Genehmigung für Tools mit hohem Risiko erforderlich

Standardmäßig werden alle Tools, die einem Agent bereitgestellt werden, ohne Benutzergenehmigung aufgerufen. Verwenden Sie den Toolgenehmigungsmechanismus, um Vorgänge mit hohem Risiko durch menschliche Bestätigung abzusichern.

Berücksichtigen Sie bei der Entscheidung, welche Tools eine Genehmigung erfordern, Folgendes:

  • Nebeneffekte – Tools, die Daten ändern, Kommunikation senden, Einkäufe tätigen oder andere Nebenwirkungen haben, sollten in der Regel eine Genehmigung erfordern.
  • Datenempfindlichkeit – Tools, die auf vertrauliche Daten (PII, Finanzdaten, Anmeldeinformationen) zugreifen oder zurückgeben, garantieren eine Genehmigung.
  • Umkehrbarkeit – Unwiderrufliche Vorgänge (Löschen, Senden von E-Mails) bergen ein höheres Risiko als Nur-Lese-Abfragen.
  • Umfang der Auswirkungen – Tools mit breiter Wirkung (Massenvorgänge) sollten mehr Kontrolle erfordern als eng gefasste.

Vom Entwickler gesteuerte Systemnachrichten beibehalten

Chatnachrichten tragen eine Rolle (system, user, assistant, tooldie bestimmt, wie der KI-Dienst sie interpretiert. Das Verständnis dieser Rollen ist von entscheidender Bedeutung:

Rolle Vertrauensebene
system Höchstes Vertrauen – Gestaltet direkt das LLM-Verhalten. Darf niemals nicht vertrauenswürdige Eingaben enthalten.
user Nicht vertrauenswürdig – Kann Eingabeaufforderungsversuche oder böswillige Inhalte enthalten.
assistant Nicht vertrauenswürdig – Von der LLM generiert, bei dem es sich um ein externes System handelt.
tool Nicht vertrauenswürdig – Kann Daten aus externen Systemen oder vom Benutzer beeinflussten Inhalten enthalten.

Platzieren Sie keine Endbenutzereingaben in system-Rollenmeldungen. Agent Framework verwendet standardmäßig nicht typisierten Text in user rolle, achten Sie jedoch beim programmgesteuerten Erstellen von Nachrichten darauf.

Anbieter von tierärztlichen Weiterbildungskursen

Kontextanbieter und Verlaufsanbieter können Nachrichten mit einer beliebigen Rolle einfügen, einschließlich system. Fügen Sie nur vertrauenswürdige Anbieter an.

Achten Sie auf die indirekte Einfügung von Eingabeaufforderungen: Wenn der zugrunde liegende Datenspeicher kompromittiert wird, kann der Angreifer das LLM-Verhalten beeinflussen. Beispielsweise könnte ein über RAG abgerufenes Dokument ausgeblendete Anweisungen enthalten, die dazu führen, dass die LLM vom beabsichtigten Verhalten abweicht oder Daten über Toolaufrufe exfiltriert.

Überprüfen und Bereinigen der LLM-Ausgabe

LLM-Antworten sollten als nicht vertrauenswürdige Ausgabe behandelt werden. Der KI-Dienst ist ein externer Endpunkt, der vom Agent Framework nicht gesteuert wird. Unbedingt beachten:

  • Halluzination - LLMs können plausibel klingende, aber sachlich falsche Informationen erzeugen. Behandeln Sie die LLM-Ausgabe nicht als autoritativ ohne Überprüfung.
  • Indirekte Prompt-Injektion – Daten, die von Tools, Kontextanbietern oder Chatverlaufsanbietern abgerufen werden, können manipulative Inhalte enthalten, die darauf abzielen, das LLM zu beeinflussen.
  • Schädliche Nutzlasten – DIE LLM-Ausgabe kann Inhalte enthalten, die schädlich sind, wenn sie ohne Bereinigung gerendert oder ausgeführt werden (HTML/JavaScript für XSS, SQL zum Einfügen, Shellbefehle).

Überprüfen und bereinigen Sie die LLM-Ausgabe immer , bevor Sie sie in HTML rendern, als Code ausführen, in Datenbankabfragen verwenden oder an einen sicherheitsrelevanten Kontext übergeben.

Schützen vertraulicher Daten in Protokollen

Agent Framework unterstützt Protokollierung und Telemetrie über OpenTelemetry. Vertrauliche Daten werden nur protokolliert, wenn diese explizit aktiviert sind:

  • Protokollierung – Auf Protokollebene Tracewird die vollständige ChatMessages Sammlung protokolliert. Dies kann PII umfassen. Trace Die Stufe sollte niemals in der Produktionsumgebung aktiviert werden.
  • Telemetrie – Wenn EnableSensitiveData diese Einstellung festgelegt ist, enthält Telemetrie den vollständigen Text von Chatnachrichten, einschließlich Funktionsanrufen und Ergebnissen. Aktivieren Sie dies nicht in der Produktion.

Sichere Sitzungsdaten

Sitzungen (AgentSession) stellen den Unterhaltungskontext dar und können zur Persistenz serialisiert werden. Serialisierte Sitzungen als vertrauliche Daten behandeln:

  • Sitzungen können auf Unterhaltungsinhalte oder Sitzungskennungen verweisen.
  • Das Wiederherstellen einer Sitzung aus einer nicht vertrauenswürdigen Quelle entspricht der Annahme nicht vertrauenswürdiger Eingaben. Ein kompromittiertes Speicher-Backend könnte Rollen ändern, um das Vertrauen zu erhöhen.
  • Speichern Sie Sitzungen im sicheren Speicher mit entsprechenden Zugriffskontrollen und Verschlüsselung.

Implementieren von Ressourcengrenzwerten

Agent Framework erzwingt keine Einschränkungen für die Eingabe-/Ausgabelänge oder Anforderungsraten, da es nicht weiß, was für Ihr Szenario sinnvoll ist. Sie sind dafür verantwortlich:

  • Grenzwerte für Eingabelängen – Beschränken Sie die Eingabelänge, um Kontextüberlauf oder DoS-Angriffe zu verhindern.
  • Grenzwerte für die Ausgabelänge – Verwenden Sie vom Dienst bereitgestellte Grenzwerte (z MaxOutputTokens . B. in Chatoptionen).
  • Sätzeinschränkung – Verwenden Sie Sätzebegrenzungseinrichtungen, um Kostenüberläufe und Missbrauch von gleichzeitigen Anforderungen zu verhindern.

Nächste Schritte