Remarques concernant la sécurité

Portée : ce document traite des considérations de sécurité liées au kit SDK Python Oracle AI Agent Memory. Elle s'applique aux applications qui utilisent les fonctionnalités de mémoire active du kit SDK ou la couche de stockage uniquement.

Pourquoi est-ce important ? Oracle AI Agent Memory peut rendre persistants les enregistrements de contenu, d'image et de mémoire de thread dans Oracle AI Database et, lorsque les fonctionnalités soutenues par le LLM sont activées, envoyer du contenu aux adresses de modèle configurées pour la génération de description d'image, la synthèse, l'extraction de mémoire ou les incorporations. Le déploiement sécurisé dépend donc d'un traitement minutieux des données d'application, de la portée de l'extraction, de l'accès à la base de données, des adresses de modèle externe et des stratégies de conservation.

Remarques concernant le traitement de la mémoire sauvegardée par LLM

Oracle AI Agent Memory prend en charge des fonctionnalités de mémoire active telles que la génération de description d'image, la synthèse des threads et l'extraction automatique de la mémoire. Lorsque ces fonctionnalités sont activées, le kit SDK peut envoyer des octets d'image, des messages récents, des récapitulatifs de threads, des mémoires extraites ou du texte de recherche au LLM configuré ou à l'adresse d'intégration. Reportez-vous à Utilisation des images et des messages multimodaux pour connaître les modes de description et d'extraction d'image qui déterminent le moment où les octets d'image sont envoyés au LLM configuré.

Important : envoyez uniquement le contenu à l'agent Oracle AI Agent Memory approprié à l'adresse de modèle configurée et aux stratégies de déploiement. Si la mémoire active est activée pour les données qui semblent inclure des clés secrètes, des informations d'identification ou des données confidentielles inutiles, réduisez ou occultez ce contenu avant que les messages n'entrent dans le pipeline de mémoire. Traiter les mémoires extraites, les résumés, les cartes de contexte et tout autre texte dérivé du modèle comme une sortie non fiable qui doit être examinée et gérée en toute sécurité par l'application d'intégration.

Avertissement : le texte dérivé d'un modèle peut devenir un état de mémoire persistant. Lorsque les fonctionnalités d'extraction automatique, d'agrégation ou de carte contextuelle sont activées, le kit SDK peut insérer un enregistrement récapitulatif, extrait ou extrait dans des invites ultérieures, telles que l'extraction de mémoire, l'agrégation, la carte contextuelle ou les invites d'agent, avant que l'application puisse vérifier cette valeur intermédiaire spécifique. Traitez cela comme un flux de données LLM non sécurisé normal : vérifiez et validez les sorties consommées par votre application, et ne laissez pas le contenu dérivé de la mémoire autoriser des actions privilégiées ou contourner la stratégie.

Suivez les recommandations suivantes lors de l'utilisation des fonctionnalités de mémoire active :

Remarques concernant la persistance et la minimisation des données

Oracle AI Agent Memory est conçu pour rendre persistants les messages, les mémoires, les métadonnées et les incorporations dans Oracle AI Database lorsque l'emplacement de stockage sauvegardé par la base de données est utilisé. Cela permet une extraction durable et une mémoire intersession, mais cela signifie également que l'application doit planifier les données à conserver.

Les conseils suivants vous aident à aligner les déploiements sur les pratiques de gestion des données sécurisées :

Remarques concernant la portée de l'extraction et le contrôle d'accès

Oracle AI Agent Memory utilise les valeurs user_id, agent_id et thread_id fournies par l'appelant pour l'extraction de la portée. Il s'agit d'un modèle de filtrage puissant, mais il ne doit pas être le seul contrôle sur lequel repose votre application lorsque vous décidez de la façon dont le contenu extrait est utilisé ou affiché.

Par défaut, l'extraction de niveau thread utilise une correspondance exacte pour user_id et agent_id, ainsi qu'une correspondance plus large pour thread_id afin que les résultats pertinents puissent couvrir les threads passés pour la même paire utilisateur-agent. Les appels de niveau supérieur OracleAgentMemory.search() et search_async() nécessitent également une portée explicite de l'utilisateur et une correspondance exacte de l'utilisateur. Ils rejettent la portée utilisateur omise et exact_user_match=False afin que l'API client publique ne recherche pas accidentellement sur plusieurs utilisateurs. La transmission de user_id=None est autorisée uniquement avec une correspondance utilisateur exacte et cible uniquement les enregistrements non ciblés.

Utilisez les exercices suivants lors de la conception de l'extraction :

Pour les autorisations de l'utilisateur final appliquées à la base de données, la mémoire de l'agent Oracle présente également une intégration avec Oracle Deep Data Security. Il s'agit d'une fonctionnalité de sécurité distincte basée sur les rôles de données de base de données, les autorisations de données et les contextes de sécurité de l'utilisateur final. Consultez l'API de sécurité des données profondes et la référence de sécurité avant d'accorder des stratégies ou d'utiliser un pool de connexions d'exécution partagé. Cette page documente également l'audit unifié et les différents temps d'effet pour la révocation de stratégie de base de données et les modifications d'appartenance à un groupe OCI IAM.

Remarques concernant l'intégration des applications et la confiance des appelants

Oracle AI Agent Memory est destiné à être appelé par l'application d'intégration ou par un autre code back-end sécurisé, et non directement par les utilisateurs finaux. Il ne s'agit pas d'une limite de sécurité orientée utilisateur final, et il n'effectue pas d'authentification ou d'autorisation de l'utilisateur final par lui-même. Le package fait confiance à l'appelant pour fournir la portée d'extraction user_id, agent_id, thread_id et la portée d'extraction correcte pour chaque opération.

Important : l'application d'intégration est responsable de l'authentification de l'utilisateur final, de l'autorisation de l'accès et de la dérivation du user_id et de la portée appropriés avant d'appeler les API Oracle AI Agent Memory. Une valeur user_id fournie par l'appelant est une valeur de portée et non une preuve d'identité.

Utilisez les exercices suivants lors de l'intégration du kit SDK dans une application agénétique :

Remarques concernant la journalisation et les diagnostics

Oracle AI Agent Memory utilise la journalisation Python standard et ne configure pas de gestionnaires de journaux d'application ou de niveaux de journalisation pour l'application d'intégration. Les applications peuvent activer le journaliseur oracleagentmemory et acheminer les journaux du kit SDK via leur configuration de journalisation existante.

Utilisez les exercices suivants lors de l'utilisation des journaux SDK :

Remarques concernant l'accès à la base de données, la gestion des schémas et les clés secrètes

Oracle AI Agent Memory utilise une connexion ou un pool Oracle AI Database fourni par l'appelant. Le package ne crée ni ne gère les informations d'identification et de connexion à la base de données. Il ne crée, ne négocie ni ne met à niveau le cryptage réseau de base de données pour le compte de l'appelant.

Important : le code de production doit transmettre une connexion ou un pool Oracle AI Database avec TLS dans Oracle AI Agent Memory. Le kit SDK utilise la connexion ou le pool fourni par l'appelant tel quel et ne met pas à niveau un DSN en texte brut. N'utilisez pas de connexions de base de données en texte clair sur des réseaux non sécurisés, partagés ou externes. Lorsque vous utilisez python-oracledb, suivez la section officielle Cryptage sécurisé du trafic réseau vers Oracle AI Database et configurez TLS ou un autre transport crypté approuvé dans le cadre de la création de connexions ou de pools.

Important : n'intégrez jamais de clés d'API, de mots de passe ou d'autres clés secrètes directement dans le code d'application, la configuration réinsérée ou les artefacts exportés. Utilisez toujours des mécanismes d'injection sécurisés et respectez le principe du moindre privilège pour l'accès aux informations d'identification.

Les pratiques de déploiement suivantes sont recommandées :

Remarques concernant la communication réseau et les adresses externes

Oracle AI Agent Memory peut communiquer avec des services externes lorsque le déploiement configure un LLM distant ou des fournisseurs d'intégration. Le kit SDK transmet les invites et les paramètres de demande via le chemin du client configuré, mais l'application et le déploiement environnants restent responsables de la sécurisation de ces connexions.

Nous recommandons de suivre les points suivants :

Considérations relatives aux vecteurs d'épuisement des ressources

Les workflows de mémoire peuvent augmenter l'utilisation de la base de données, l'intégration du trafic et la consommation de jetons LLM au fil du temps. Cela est vrai à la fois pour une utilisation excessive malveillante et pour des erreurs de mise en œuvre innocentes telles que des messages surdimensionnés ou des modèles de récupération trop larges.

Utilisez les commandes suivantes dans le cadre de votre durcissement de production :

Déploiement recommandé d'Oracle Deep Data Security

Oracle Deep Data Security (Deep Sec) peut appliquer des contraintes de ligne et de colonne de mémoire d'agent dans la base de données, telles que permettre aux utilisateurs finaux de lire et d'écrire uniquement les lignes contenant leur propre user_id. La stratégie UserOwnRowsDeepDataSecurityPolicy empêche également les utilisateurs finaux de mettre à jour les colonnes de propriété et d'identité après insertion. Pour connaître les droits d'accès exacts par table, reportez-vous à Sécurité des données en profondeur.

Pour utiliser au mieux cette fonctionnalité de sécurité, nous vous recommandons d'utiliser un utilisateur de base de données distinct pour chaque responsabilité de sécurité, afin que l'application n'ait pas de basculement privilégié lorsqu'un contexte utilisateur est absent.

Nous recommandons la séparation de compte suivante en production :

Pour chaque demande de l'utilisateur final, authentifiez l'utilisateur en dehors du sdk OAM, acquérez une connexion de pool d'applications, attachez le contexte de sécurité de l'utilisateur final de cet utilisateur et exécutez l'opération Mémoire de l'agent via cette connexion. Effacez le contexte avant de libérer la connexion à un pool. Un contexte appartient à une session de base de données physique ; il ne doit pas être réutilisé pour un autre utilisateur. La documentation sur le cycle de vie du contexte de sécurité de l'utilisateur final Deep Sec d'Oracle décrit le comportement de pièce jointe, de remplacement et de publication correspondant.

Ne transmettez pas directement un pool d'applications général à une instance de mémoire d'agent, sauf si le pilote de base de données est configuré pour attacher le contexte de l'utilisateur final de la demande en cours à chaque connexion acquise. Sinon, une opération SDK peut emprunter une session sans contexte ou avec un contexte de demande incorrect. Au lieu de cela, achetez et configurez la connexion dans l'application, puis transmettez cette connexion contextuelle au composant de mémoire d'agent de niveau demande.

Le travail en arrière-plan ou différé qui lit ou écrit des enregistrements appartenant à l'utilisateur nécessite la même protection. Gardez la connexion autorisée et le contexte de l'utilisateur final valides jusqu'à la fin du travail, ou demandez au salarié d'acquérir une nouvelle connexion et d'attacher le contexte de l'utilisateur authentifié correct. N'exécutez jamais cette tâche via le propriétaire du schéma simplement pour ignorer un contexte utilisateur manquant.