Sicherheitsbetrachtungen

Geltungsbereich: In diesem Dokument werden Sicherheitsaspekte im Zusammenhang mit dem Python-SDK von Oracle AI Agent Memory behandelt. Sie gilt nur für Anwendungen, die entweder die Active-Memory-Features des SDK oder die Speicherebene verwenden.

Warum es darauf ankommt: Oracle AI Agent Memory kann Threadinhalte, Bilder und Speicherdatensätze in Oracle AI Database persistieren und, wenn LLM-backed-Features aktiviert sind, Inhalte an konfigurierte Modellendpunkte für die Generierung, Zusammenfassung, Speicherextraktion oder Einbettung von Bildern senden. Ein sicheres Deployment hängt daher von der sorgfältigen Verarbeitung von Anwendungsdaten, dem Abrufumfang, dem Datenbankzugriff, externen Modellendpunkten und Aufbewahrungs-Policys ab.

Überlegungen zur Verarbeitung von LLM-gesichertem Speicher

Oracle AI Agent Memory unterstützt Active-Memory-Features wie Image-Beschreibungsgenerierung, Thread-Zusammenfassung und automatische Speicherextraktion. Wenn diese Features aktiviert sind, kann das SDK Imagebytes, aktuelle Nachrichten, Threadzusammenfassungen, abgerufene Speicher oder Suchtext an den konfigurierten LLM- oder Einbettungsendpunkt senden. Die Bildbeschreibungs- und Extraktionsmodi, die bestimmen, wann Bildbytes an das konfigurierte LLM gesendet werden, finden Sie unter Images und multimodale Nachrichten verwenden.

Wichtig: Senden Sie nur Inhalte an Oracle AI Agent Memory, die für den konfigurierten Modellendpunkt und Ihre Deployment-Policys geeignet sind. Wenn active-memory für Daten aktiviert ist, die anscheinend Secrets, Zugangsdaten oder unnötige sensible Daten enthalten, minimieren oder verdecken Sie diesen Inhalt, bevor Nachrichten in die Speicherpipeline gelangen. Behandeln Sie extrahierte Speicher, Zusammenfassungen, Kontextkarten und anderen vom Modell abgeleiteten Text als nicht vertrauenswürdige Ausgabe, die von der integrierenden Anwendung sicher geprüft und verarbeitet werden muss.

Warnung: Der vom Modell abgeleitete Text kann zu einem persistenten Speicherstatus werden. Wenn automatische Extraktions-, Zusammenfassungs- oder Kontextkartenfunktionen aktiviert sind, kann eine Zusammenfassung, ein extrahierter Speicher oder ein abgerufener Datensatz vom SDK in spätere Prompts wie Speicherextraktion, Zusammenfassung, Kontextkarte oder Agent-Prompts eingefügt werden, bevor die Anwendung diesen bestimmten Zwischenwert prüfen kann. Behandeln Sie dies als normalen, nicht vertrauenswürdigen LLM-Datenfluss: Prüfen und validieren Sie die Ausgaben, die Ihre Anwendung verbraucht, und lassen Sie nicht zu, dass vom Speicher abgeleiteter Inhalt privilegierte Aktionen autorisiert oder die Policy umgeht.

Befolgen Sie diese Empfehlungen, wenn Sie Active-Memory-Features verwenden:

Überlegungen zu Persistenz und Datenminimierung

Oracle AI Agent Memory ist so konzipiert, dass Nachrichten, Speicher, Metadaten und Einbettungen in Oracle AI Database persistiert werden, wenn der DB-gestützte Speicher verwendet wird. Dies ermöglicht einen dauerhaften Abruf und einen Speicher für mehrere Sitzungen, aber es bedeutet auch, dass die Anwendung planen sollte, welche Daten aufbewahrt werden sollten.

Die folgende Anleitung hilft dabei, Deployments an sicheren Datenbehandlungspraktiken auszurichten:

Überlegungen zum Abrufumfang und zur Zugriffskontrolle

Oracle AI Agent Memory verwendet die vom Aufrufer bereitgestellten Werte user_id, agent_id und thread_id, um den Abruf zu begrenzen. Dies ist ein leistungsstarkes Filtermodell, aber es sollte nicht das einzige Steuerelement sein, auf das Ihre Anwendung angewiesen ist, wenn sie entscheidet, wie abgerufener Inhalt verwendet oder angezeigt wird.

Standardmäßig verwendet der Thread-Bereichsabruf den exakten Abgleich für user_id und agent_id und eine breitere Übereinstimmung für thread_id, sodass relevante Ergebnisse vergangene Threads für dasselbe Benutzer-Agent-Paar umfassen können. OracleAgentMemory.search()- und search_async()-Aufrufe der obersten Ebene erfordern auch expliziten Benutzergeltungsbereich und exakten Benutzerabgleich. Sie lehnen den ausgelassenen Benutzergeltungsbereich und exact_user_match=False ab, sodass die API des öffentlichen Clients nicht versehentlich über mehrere Benutzer hinweg durchsucht wird. Das Übergeben von user_id=None ist nur mit genauer Benutzerübereinstimmung zulässig, und Ziele sind nur nicht kopierte Datensätze.

Verwenden Sie die folgenden Übungen beim Entwerfen des Abrufs:

Für die durch Datenbank erzwungene Endbenutzerautorisierung stellt Oracle Agent Memory auch eine Integration mit Oracle Deep Data Security bereit. Dies ist ein eindeutiges Sicherheitsfeature, das auf Datenbankdatenrollen, Datenzugriffsberechtigungen und Endbenutzersicherheitskontexten basiert. Prüfen Sie die Deep Data Security-API und Sicherheitsreferenz, bevor Sie Policys erteilen oder einen gemeinsamen Laufzeitverbindungspool verwenden. Auf dieser Seite werden auch Unified Auditing und die verschiedenen Gültigkeitszeiten für den Widerruf von Datenbank-Policys und Änderungen der OCI IAM-Gruppenmitgliedschaft dokumentiert.

Überlegungen zu Anwendungsintegration und Caller Trust

Oracle AI Agent Memory kann von der Integrationsanwendung oder einem anderen vertrauenswürdigen Backend-Code aufgerufen werden, nicht direkt von den Endbenutzern. Es handelt sich nicht um eine Sicherheitsgrenze für Endbenutzer, und es führt keine Endbenutzerauthentifizierung oder -autorisierung allein durch. Das Package vertraut dem Aufrufer, dass er für jeden Vorgang den korrekten Geltungsbereich user_id, agent_id, thread_id und Retrieval angibt.

Wichtig: Die integrierende Anwendung ist dafür verantwortlich, den Endbenutzer zu authentifizieren, den Zugriff zu autorisieren und die korrekte user_id und den richtigen Geltungsbereich abzuleiten, bevor sie Oracle AI Agent Memory-APIs aufruft. Ein vom Aufrufer bereitgestelltes user_id ist ein Geltungsbereichswert, kein Identitätsnachweis.

Verwenden Sie die folgenden Übungen, wenn Sie das SDK in eine Agent-Anwendung integrieren:

Hinweise zur Protokollierung und Diagnose

Oracle AI Agent Memory verwendet Python-Standardlogging und konfiguriert keine Anwendungslog-Handler oder Logebenen für die integrierende Anwendung. Anwendungen können den oracleagentmemory-Logger aktivieren und SDK-Logs über die vorhandene Loggingkonfiguration weiterleiten.

Verwenden Sie die folgenden Vorgehensweisen beim Konsumieren von SDK-Logs:

Überlegungen zu Datenbankzugriff, Schemaverwaltung und Secrets

Oracle AI Agent Memory verwendet eine vom Aufrufer bereitgestellte Oracle AI Database-Verbindung oder einen Pool. Das Package erstellt oder verwaltet keine Datenbankzugangsdaten selbst. Außerdem wird keine Datenbanknetzwerkverschlüsselung im Namen des Aufrufers erstellt, ausgehandelt oder aktualisiert.

Wichtig: Produktionscode muss eine TLS-fähige Oracle AI Database-Verbindung oder einen Pool an Oracle AI Agent Memory übergeben. Das SDK verwendet die vom Aufrufer bereitgestellte Verbindung oder den vom Aufrufer bereitgestellten Pool unverändert und führt kein Upgrade eines Nur-Text-DSN durch. Verwenden Sie keine Klartext-Datenbankverbindungen über nicht vertrauenswürdige, freigegebene oder externe Netzwerke hinweg. Befolgen Sie bei der Verwendung von python-oracledb den offiziellen Abschnitt Securely Encrypting Network Traffic to Oracle AI Database, und konfigurieren Sie TLS oder einen anderen genehmigten verschlüsselten Transport im Rahmen der Verbindungs- oder Poolerstellung.

Wichtig: Integrieren Sie API-Schlüssel, Kennwörter oder andere Secrets niemals direkt in Anwendungscode, eingecheckte Konfiguration oder exportierte Artefakte. Verwenden Sie immer sichere Injection-Mechanismen und befolgen Sie das Prinzip der geringsten Berechtigung für den Zugangsdatenzugriff.

Die folgenden Deployment-Praktiken werden empfohlen:

Überlegungen zur Netzwerkkommunikation und zu externen Endpunkten

Oracle AI Agent Memory kann mit externen Services kommunizieren, wenn das Deployment Remote-LLM oder Einbettungsprovider konfiguriert. Das SDK leitet Prompts und Anforderungsparameter über den konfigurierten Clientpfad weiter, aber die umgebende Anwendung und das Deployment bleiben für die Sicherung dieser Verbindungen verantwortlich.

Folgende Einstellungen werden empfohlen:

Überlegungen zu Vektoren zur Erschöpfung von Ressourcen

Speicherworkflows können die Datenbanknutzung erhöhen, den Datenverkehr einbetten und den LLM-Tokenverbrauch im Laufe der Zeit erhöhen. Dies gilt sowohl für böswillige Übernutzung als auch für unschuldige Implementierungsfehler wie übergroße Nachrichten oder zu breite Abrufmuster.

Verwenden Sie diese Steuerelemente als Teil Ihrer Produktionshärtung:

Empfohlenes Oracle Deep Data Security-Deployment

Oracle Deep Data Security (Deep Sec) kann Zeilen- und Spalten-Constraints des Agent-Speichers in der Datenbank durchsetzen. Beispiel: Endbenutzer können nur Zeilen lesen und schreiben, die ihre eigene user_id enthalten. Die Policy UserOwnRowsDeepDataSecurityPolicy verhindert auch, dass Endbenutzer Eigentümer- und Identitätsspalten nach dem Einfügen aktualisieren. Die genauen Berechtigungen für jede Tabelle finden Sie unter Deep Data Security.

Um diese Sicherheitsfunktionalität in vollem Umfang zu nutzen, empfehlen wir, für jede Sicherheitsverantwortung einen separaten DB-Benutzer zu verwenden, damit die Anwendung keinen privilegierten Fallback hat, wenn kein Endbenutzerkontext vorhanden ist.

Wir empfehlen die folgende Kontotrennung in der Produktion:

Authentifizieren Sie für jede Endbenutzeranforderung den Benutzer außerhalb des OAM-SDK, erwerben Sie eine Anwendungspoolverbindung, hängen Sie den Endbenutzersicherheitskontext dieses Benutzers an, und führen Sie den Agent-Speichervorgang über diese Verbindung aus. Löschen Sie den Kontext, bevor Sie die Verbindung zu einem Pool freigeben. Ein Kontext gehört zu einer physischen Datenbanksession. Er darf nicht für einen anderen Benutzer wiederverwendet werden. Die Deep Sec End-User Security Context Lifecycle-Dokumentation von Oracle beschreibt das entsprechende Verhalten bei Anhängen, Ersetzen und Freigaben.

Übergeben Sie keinen allgemeinen Anwendungspool direkt an eine Agent-Speicherinstanz, es sei denn, der Datenbanktreiber ist so konfiguriert, dass der Endbenutzerkontext der aktuellen Anforderung an jede erworbene Verbindung angehängt wird. Andernfalls kann ein SDK-Vorgang eine Session ohne Kontext oder mit dem falschen Anforderungskontext ausleihen. Ermitteln und konfigurieren Sie stattdessen die Verbindung in der Anwendung, und übergeben Sie diese kontextabhängige Verbindung dann an die Agent-Speicherkomponente mit Anforderungsbereich.

Hintergrund- oder verzögerte Arbeiten, die Benutzerdatensätze lesen oder schreiben, benötigen denselben Schutz. Halten Sie die autorisierte Verbindung und ihren Endbenutzerkontext so lange gültig, bis die Arbeit abgeschlossen ist, oder veranlassen Sie, dass der Worker eine neue Verbindung erhält und den richtigen Kontext des authentifizierten Benutzers anhängt. Führen Sie diese Arbeit niemals über den Schemaeigentümer aus, um einen fehlenden Endbenutzerkontext zu umgehen.