Considerações sobre Segurança

Escopo: Este documento abrange considerações de segurança relacionadas ao Oracle AI Agent Memory Python SDK. Aplica-se a aplicativos que usam os recursos de memória ativa do SDK ou apenas a camada de armazenamento.

Por que é importante: o Oracle AI Agent Memory pode persistir conteúdo de thread, imagens e registros de memória no Oracle AI Database e, quando recursos apoiados por LLM são ativados, enviar conteúdo para pontos finais de modelo configurados para geração de descrição de imagem, resumo, extração de memória ou incorporações. Portanto, a implantação segura depende do tratamento cuidadoso dos dados do aplicativo, do escopo de recuperação, do acesso ao banco de dados, dos pontos finais do modelo externo e das políticas de retenção.

Considerações sobre o processamento de memória apoiado por LLM

O Oracle AI Agent Memory suporta recursos de memória ativa, como geração de descrição de imagem, resumo de threads e extração automática de memória. Quando esses recursos estão ativados, o SDK pode enviar bytes de imagem, mensagens recentes, resumos de threads, memórias recuperadas ou texto de pesquisa para o LLM configurado ou o ponto final de incorporação. Consulte Usar Imagens e Mensagens Multimodais para obter os modos de descrição e extração de imagem que determinam quando bytes de imagem são enviados para o LLM configurado.

Importante: só envie conteúdo para o Oracle AI Agent Memory que seja apropriado para o ponto final do modelo configurado e suas políticas de implantação. Se a memória ativa estiver ativada para dados que parecem incluir segredos, credenciais ou dados confidenciais desnecessários, minimize ou oculte esse conteúdo antes que as mensagens entrem no pipeline de memória. Trate memórias extraídas, resumos, cartões de contexto e outros textos derivados de modelo como saída não confiável que deve ser revisada e tratada com segurança pelo aplicativo de integração.

Aviso: O texto derivado do modelo pode se tornar um estado de memória persistente. Quando recursos automáticos de extração, resumo ou cartão de contexto são ativados, um resumo, memória extraída ou registro recuperado pode ser inserido pelo SDK em prompts posteriores, como prompts de extração de memória, resumo, cartão de contexto ou agente, antes que o aplicativo possa revisar esse valor intermediário específico. Trate isso como um fluxo de dados de LLM não confiável normal: revise e valide as saídas que seu aplicativo consome e não permita que conteúdo derivado da memória autorize ações privilegiadas ou ignore a política.

Siga estas recomendações ao usar recursos de memória ativa:

Considerações sobre persistência e minimização de dados

O Oracle AI Agent Memory foi projetado para persistir mensagens, memórias, metadados e incorporações no Oracle AI Database quando o armazenamento suportado pelo BD é usado. Isso permite a recuperação durável e a memória entre sessões, mas também significa que o aplicativo deve planejar quais dados são apropriados para reter.

A seguinte orientação ajuda a manter as implantações alinhadas com práticas seguras de tratamento de dados:

Considerações sobre o escopo de recuperação e o controle de acesso

O Oracle AI Agent Memory usa valores user_id, agent_id e thread_id fornecidos pelo chamador para recuperar o escopo. Este é um modelo de filtragem poderoso, mas não deve ser o único controle no qual seu aplicativo depende ao decidir como o conteúdo recuperado é usado ou mostrado.

Por padrão, a recuperação no escopo do thread usa correspondência exata para user_id e agent_id e uma correspondência mais ampla para thread_id para que os resultados relevantes possam abranger threads anteriores para o mesmo par usuário-agente. As chamadas de nível superior OracleAgentMemory.search() e search_async() também exigem escopo explícito do usuário e correspondência exata do usuário. Eles rejeitam o escopo do usuário omitido e o exact_user_match=False para que a API do cliente público não pesquise acidentalmente em vários usuários. A transmissão de user_id=None só é permitida com correspondência exata de usuários e destinos somente com registros sem escopo.

Use as seguintes práticas ao projetar recuperação:

Para autorização de usuário final imposta pelo banco de dados, o Oracle Agent Memory também expõe uma integração com o Oracle Deep Data Security. Este é um recurso de segurança distinto criado em atribuições de dados de banco de dados, concessões de dados e contextos de segurança de usuário final. Revise a Referência de segurança e API de Segurança de Dados Profundos antes de conceder políticas ou usar um pool de conexões de runtime compartilhado. Essa página também documenta a Auditoria Unificada e os diferentes tempos efetivos para revogação da política de banco de dados e alterações de associação de grupo do OCI IAM.

Considerações sobre integração de aplicativos e confiança do chamador

O Oracle AI Agent Memory deve ser chamado pelo aplicativo de integração ou outro código de back-end confiável, não diretamente pelos usuários finais. Ele não é um limite de segurança voltado para o usuário final e não executa a autenticação ou autorização do usuário final por conta própria. O pacote confia no chamador para fornecer o escopo correto de user_id, agent_id, thread_id e recuperação para cada operação.

Importante: O aplicativo de integração é responsável por autenticar o usuário final, autorizar o acesso e derivar o user_id e o escopo corretos antes de chamar as APIs do Oracle AI Agent Memory. Um user_id fornecido pelo chamador é um valor de escopo, não uma prova de identidade.

Use as seguintes práticas ao integrar o SDK em um aplicativo agentic:

Considerações sobre logs e diagnósticos

O Oracle AI Agent Memory usa o registro em log Python padrão e não configura handlers de log de aplicativos ou níveis de log para o aplicativo de integração. Os aplicativos podem ativar o logger oracleagentmemory e rotear logs do SDK por meio de sua configuração de log existente.

Use as seguintes práticas ao consumir logs do SDK:

Considerações sobre acesso ao banco de dados, gerenciamento de esquemas e segredos

O Oracle AI Agent Memory usa uma conexão ou pool do Oracle AI Database fornecido pelo chamador. O pacote não cria nem gerencia as próprias credenciais do banco de dados. Ele também não cria, negocia ou atualiza a criptografia de rede do banco de dados em nome do chamador.

Importante: O código de produção deve passar uma conexão ou um pool do Oracle AI Database ativado para TLS para o Oracle AI Agent Memory. O SDK usa a conexão ou o pool fornecido pelo chamador no estado em que se encontra e não atualiza um DSN de texto simples. Não use conexões de banco de dados de texto sem formatação em redes não confiáveis, compartilhadas ou externas. Ao usar o python-oracledb, siga a seção oficial Criptografando Seguramente o Tráfego de Rede para o Oracle AI Database e configure o TLS ou outro transporte criptografado aprovado como parte da conexão ou da criação do pool.

Importante: Nunca incorpore chaves de API, senhas ou outros segredos diretamente no código do aplicativo, na configuração de check-in ou nos artefatos exportados. Sempre use mecanismos de injeção seguros e siga o princípio de privilégio mínimo para acesso a credenciais.

As seguintes práticas de implantação são recomendadas:

Considerações sobre comunicação de rede e pontos finais externos

O Oracle AI Agent Memory pode se comunicar com serviços externos quando a implantação configura provedores remotos de LLM ou incorporação. O SDK encaminha prompts e solicita parâmetros por meio do caminho do cliente configurado, mas o aplicativo e a implantação adjacentes permanecem responsáveis por proteger essas conexões.

Recomendamos o seguinte:

Considerações sobre os vetores de exaustão de recursos

Os fluxos de trabalho de memória podem aumentar o uso do banco de dados, incorporar tráfego e consumo de token de LLM ao longo do tempo. Isso é verdade tanto para o uso excessivo malicioso quanto para erros inocentes de implementação, como mensagens de grandes dimensões ou padrões de recuperação excessivamente amplos.

Use estes controles como parte de sua proteção de produção:

Implementação recomendada do Oracle Deep Data Security

O Oracle Deep Data Security (Deep Sec) pode impor restrições de linha e coluna da Memória do Agente no banco de dados, como permitir que os usuários finais leiam e gravem apenas linhas que contenham seu próprio user_id. A política UserOwnRowsDeepDataSecurityPolicy também impede que os usuários finais atualizem as colunas de propriedade e identidade após a inserção; consulte Segurança de Dados Profunda para obter as permissões exatas por tabela.

Para usar essa funcionalidade de segurança em toda a extensão, recomendamos usar um usuário do banco de dados separado para cada responsabilidade de segurança, para que o aplicativo não tenha fallback privilegiado quando um contexto de usuário final estiver ausente.

Recomendamos a seguinte separação de contas em produção:

Para cada solicitação do usuário final, autentique o usuário fora do sdk do OAM, adquira uma conexão de pool de aplicativos, anexe o contexto de segurança do usuário final desse usuário e execute a operação de Memória do Agente por meio dessa conexão. Limpe o contexto antes de liberar a conexão com um pool. Um contexto pertence a uma sessão de banco de dados físico; ele não deve ser reutilizado para outro usuário. A documentação de ciclo de vida do contexto de segurança do usuário final de Securitização Profunda da Oracle descreve o comportamento correspondente de anexo, substituição e release.

Não informe um pool de aplicativos gerais diretamente a uma instância da Memória do Agente, a menos que o driver do banco de dados esteja configurado para anexar o contexto do usuário final da solicitação atual em cada conexão adquirida. Caso contrário, uma operação do SDK poderá pedir emprestado uma sessão sem contexto ou com o contexto de solicitação errado. Em vez disso, adquira e configure a conexão no aplicativo e, em seguida, passe essa conexão contextual para o componente Memória do Agente no escopo da solicitação.

O trabalho em segundo plano ou diferido que lê ou grava registros de propriedade do usuário precisa da mesma proteção. Mantenha a conexão autorizada e seu contexto de usuário final válidos até que o trabalho seja concluído, ou organize para que o colaborador adquira uma nova conexão e anexe o contexto do usuário autenticado correto. Nunca execute este trabalho através do proprietário do esquema simplesmente para ignorar um contexto de usuário final ausente.