Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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ändigeChatMessagesSammlung protokolliert. Dies kann PII umfassen.TraceDie Stufe sollte niemals in der Produktionsumgebung aktiviert werden. -
Telemetrie – Wenn
EnableSensitiveDatadiese 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.