Considerazioni sulla sicurezza

Ambito: questo documento descrive le considerazioni sulla sicurezza relative all'SDK Python di Oracle AI Agent Memory. Si applica solo alle applicazioni che utilizzano le funzioni di memoria attiva dell'SDK o del layer di memorizzazione.

Perché è importante: Oracle AI Agent Memory può rendere persistenti i record di contenuto, immagini e memoria dei thread in Oracle AI Database e, quando le funzioni supportate da LLM sono abilitate, inviare contenuto agli endpoint del modello configurati per la generazione di descrizioni delle immagini, il riepilogo, l'estrazione della memoria o gli incorporamenti. La distribuzione sicura dipende quindi da un'attenta gestione dei dati delle applicazioni, dall'ambito di recupero, dall'accesso al database, dagli endpoint dei modelli esterni e dai criteri di conservazione.

Considerazioni sull'elaborazione della memoria supportata da LLM

Oracle AI Agent Memory supporta funzioni di memoria attiva come la generazione di descrizioni delle immagini, il riepilogo dei thread e l'estrazione automatica della memoria. Quando queste funzioni sono abilitate, l'SDK può inviare byte di immagine, messaggi recenti, riepiloghi dei thread, memorie recuperate o testo di ricerca all'LLM configurato o all'endpoint di incorporamento. Vedere Usa immagini e messaggi multimodali per le modalità di descrizione e estrazione delle immagini che determinano quando i byte delle immagini vengono inviati all'LLM configurato.

Importante: invia solo il contenuto a Oracle AI Agent Memory appropriato per l'endpoint del modello configurato e i criteri di distribuzione. Se la memoria attiva è abilitata per i dati che sembrano includere segreti, credenziali o dati riservati non necessari, ridurre o proteggere tale contenuto prima che i messaggi entrino nella pipeline di memoria. Tratta le memorie estratte, i riepiloghi, le schede di contesto e altri testi derivati dal modello come output non attendibile che deve essere rivisto e gestito in modo sicuro dall'applicazione di integrazione.

Avvertenza: il testo derivato dal modello può diventare stato di memoria persistente. Quando le funzioni di estrazione, riepilogo o scheda di contesto automatiche sono abilitate, un record di riepilogo, di memoria estratta o recuperata può essere inserito dall'SDK in prompt successivi, ad esempio prompt di estrazione della memoria, riepilogo, scheda di contesto o agente, prima che l'applicazione possa esaminare tale valore intermedio specifico. Considera questo come un normale flusso di dati LLM non attendibile: rivedi e convalida gli output consumati dall'applicazione e non lasciare che i contenuti derivati dalla memoria autorizzino azioni privilegiate o ignorino i criteri.

Osservare i suggerimenti riportati di seguito quando si utilizzano le funzioni di memoria attiva.

Considerazioni relative alla persistenza e alla minimizzazione dei dati

Oracle AI Agent Memory è progettato per rendere persistenti messaggi, memorie, metadati e integrazioni in Oracle AI Database quando viene utilizzata l'area di memorizzazione supportata dal database. Ciò consente il recupero duraturo e la memoria cross-session, ma significa anche che l'applicazione dovrebbe pianificare quali dati è appropriato conservare.

Le seguenti linee guida aiutano a mantenere le distribuzioni allineate alle pratiche di gestione dei dati sicure:

Considerazioni relative all'ambito del recupero e al controllo dell'accesso

Oracle AI Agent Memory utilizza i valori user_id, agent_id e thread_id forniti dal chiamante per il recupero dell'ambito. Questo è un potente modello di filtraggio, ma non dovrebbe essere l'unico controllo su cui si basa l'applicazione quando si decide come viene utilizzato o visualizzato il contenuto recuperato.

Per impostazione predefinita, il recupero con ambito thread utilizza la corrispondenza esatta per user_id e agent_id e una corrispondenza più ampia per thread_id in modo che i risultati pertinenti possano estendersi su thread passati per la stessa coppia utente-agente. Anche le chiamate OracleAgentMemory.search() e search_async() di livello superiore richiedono un ambito utente esplicito e una corrispondenza utente esatta. Rifiutano l'ambito utente omesso e exact_user_match=False in modo che l'API client pubblica non esegua ricerche accidentali tra più utenti. Il passaggio di user_id=None è consentito solo con la corrispondenza utente esatta e interessa solo i record con ambito non definito.

Durante la progettazione del recupero, attenersi alle procedure indicate di seguito.

Per l'autorizzazione dell'utente finale applicata al database, Oracle Agent Memory espone anche un'integrazione con Oracle Deep Data Security. Si tratta di una funzione di sicurezza distinta basata su ruoli dati del database, privilegi di dati e contesti di sicurezza dell'utente finale. Rivedere l'API di sicurezza dei dati approfondita e il riferimento alla sicurezza prima di concedere i criteri o utilizzare un connection pool runtime condiviso. Questa pagina documenta anche l'audit unificato e i diversi tempi di validità per la revoca dei criteri del database e le modifiche all'appartenenza ai gruppi IAM OCI.

Considerazioni sull'integrazione delle applicazioni e sulla fiducia dei chiamanti

Oracle AI Agent Memory deve essere chiamato dall'applicazione di integrazione o da altro codice backend sicuro, non direttamente dagli utenti finali. Non è un limite di sicurezza rivolto all'utente finale e non esegue l'autenticazione o l'autorizzazione dell'utente finale da solo. Il pacchetto si affida al chiamante per fornire i valori corretti per user_id, agent_id, thread_id e l'ambito di recupero per ogni operazione.

Importante: l'applicazione di integrazione è responsabile dell'autenticazione dell'utente finale, dell'autorizzazione dell'accesso e della derivazione del user_id e dell'ambito corretti prima che chiami le API Oracle AI Agent Memory. Un valore user_id fornito dal chiamante è un valore di ambito, non una prova dell'identità.

Utilizzare le procedure riportate di seguito quando si integra l'SDK in un'applicazione identica.

Considerazioni sulla registrazione e la diagnostica

Oracle AI Agent Memory utilizza il log Python standard e non configura i gestori di log delle applicazioni o i livelli di log per l'applicazione di integrazione. Le applicazioni possono abilitare il logger oracleagentmemory e instradare i log SDK tramite la configurazione di log esistente.

Quando si utilizzano i log SDK, attenersi alle procedure riportate di seguito.

Considerazioni sull'accesso al database, sulla gestione degli schemi e sui segreti

Oracle AI Agent Memory utilizza una connessione o un pool Oracle AI Database fornito dal chiamante. Il package non crea né gestisce le credenziali del database. Inoltre, non crea, negozia o aggiorna la crittografia di rete del database per conto del chiamante.

Importante: il codice di produzione deve passare una connessione o un pool Oracle AI Database abilitato per TLS in Oracle AI Agent Memory. L'SDK utilizza la connessione fornita dal chiamante o il pool così com'è e non aggiorna un DSN in testo normale. Non utilizzare connessioni al database in testo non codificato in reti non attendibili, condivise o esterne. Quando si utilizza python-oracledb, seguire la sezione ufficiale Cifratura sicura del traffico di rete in Oracle AI Database e configurare TLS o un altro trasporto cifrato approvato come parte della creazione della connessione o del pool.

Importante: non incorporare mai chiavi API, password o altri segreti direttamente nel codice dell'applicazione, nella configurazione di cui è stato eseguito il check-in o negli artifact esportati. Utilizzare sempre meccanismi di iniezione sicuri e attenersi al principio del privilegio minimo per l'accesso alle credenziali.

Si consigliano le procedure di distribuzione riportate di seguito.

Considerazioni sulla comunicazione di rete e sugli endpoint esterni

Oracle AI Agent Memory può comunicare con i servizi esterni quando la distribuzione configura l'LLM remoto o i provider di integrazione. L'SDK inoltra prompt e richiede parametri tramite il percorso client configurato, ma l'applicazione e la distribuzione circostanti rimangono responsabili della protezione di queste connessioni.

Si consiglia quanto segue:

Considerazioni sui vettori di esaurimento delle risorse

I flussi di lavoro di memoria possono aumentare l'uso del database, l'integrazione del traffico e il consumo di token LLM nel tempo. Questo è vero sia per un uso eccessivo dannoso che per errori di implementazione innocenti come messaggi sovradimensionati o modelli di recupero troppo ampi.

Utilizzare questi controlli come parte della tempra di produzione:

Distribuzione di Oracle Deep Data Security consigliata

Oracle Deep Data Security (Deep Sec) può applicare vincoli di riga e colonna della memoria agente nel database, ad esempio consentendo agli utenti finali di leggere e scrivere solo righe che contengono il proprio user_id. Il criterio UserOwnRowsDeepDataSecurityPolicy impedisce inoltre agli utenti finali di aggiornare le colonne di proprietà e identità dopo l'inserimento. Per informazioni sulle autorizzazioni esatte per tabella, vedere Sicurezza dati approfondita.

Per utilizzare appieno questa funzionalità di sicurezza, si consiglia di utilizzare un utente DB separato per ogni responsabilità di sicurezza, in modo che l'applicazione non abbia fallback privilegiato quando non è presente un contesto utente finale.

Si consiglia la seguente separazione dei conti in produzione:

Per ogni richiesta dell'utente finale, autenticare l'utente al di fuori dell'SDK OAM, acquisire una connessione Application-pool, collegare il contesto di sicurezza dell'utente finale e eseguire l'operazione Agent Memory tramite tale connessione. Cancellare il contesto prima di rilasciare la connessione a un pool. Un contesto appartiene a una sessione fisica del database e non deve essere riutilizzato per un altro utente. Nella documentazione del ciclo di vita del contesto di sicurezza dell'utente finale Deep Sec di Oracle viene descritto il funzionamento corrispondente di allegati, sostituzioni e release.

Non passare un pool di applicazioni generale direttamente a un'istanza di memoria agente a meno che il driver del database non sia configurato per collegare il contesto utente finale della richiesta corrente a ogni connessione acquisita. In caso contrario, un'operazione SDK può prendere in prestito una sessione senza contesto o con un contesto di richiesta errato. Acquisire e configurare invece la connessione nell'applicazione, quindi passare tale connessione con ambito di contesto al componente di memoria agente con ambito di richiesta.

Il lavoro in background o differito che legge o scrive i record di proprietà dell'utente richiede la stessa protezione. Mantenere la connessione autorizzata e il suo contesto utente finale valido fino al completamento del lavoro, o organizzare per il lavoratore di acquisire una nuova connessione e allegare il contesto dell'utente autenticato corretto. Non eseguire mai questo lavoro tramite il proprietario dello schema semplicemente per ignorare un contesto utente finale mancante.