보안 고려사항

범위: 이 문서에서는 Oracle AI Agent Memory Python SDK와 관련된 보안 고려 사항을 다룹니다. SDK의 활성 메모리 기능 또는 저장소 계층만 사용하는 애플리케이션에 적용됩니다.

중요한 이유: Oracle AI Agent Memory는 Oracle AI Database에서 스레드 콘텐츠, 이미지, 메모리 레코드를 보관할 수 있으며, LLM 지원 기능이 활성화된 경우 이미지 설명 생성, 요약, 메모리 추출 또는 임베딩을 위해 구성된 모델 엔드포인트로 콘텐츠를 전송할 수 있습니다. 따라서 보안 배포는 애플리케이션 데이터, 검색 범위, 데이터베이스 액세스, 외부 모델 엔드포인트 및 보존 정책의 신중한 처리에 따라 달라집니다.

LLM 지원 메모리 처리와 관련된 고려 사항

Oracle AI Agent Memory는 이미지 설명 생성, 스레드 요약 및 자동 메모리 추출과 같은 활성 메모리 기능을 지원합니다. 이러한 기능이 활성화되면 SDK는 이미지 바이트, 최근 메시지, 스레드 요약, 검색된 메모리 또는 검색 텍스트를 구성된 LLM 또는 임베딩 엔드포인트로 전송할 수 있습니다. 이미지 바이트가 구성된 LLM으로 전송되는 시기를 결정하는 이미지 설명 및 추출 모드는 Use Images and Multimodal Messages를 참조하십시오.

중요: 구성된 모델 끝점 및 배포 정책에 적합한 콘텐츠를 Oracle AI Agent Memory로만 전송합니다. 암호, 자격 증명 또는 불필요한 민감한 데이터가 포함된 것으로 보이는 데이터에 대해 활성 메모리가 사용으로 설정된 경우 메시지가 메모리 파이프라인에 들어가기 전에 해당 콘텐츠를 최소화하거나 개정하십시오. 추출된 메모리, 요약, 컨텍스트 카드 및 기타 모델 파생 텍스트를 통합 응용 프로그램에서 안전하게 검토하고 처리해야 하는 신뢰할 수 없는 출력으로 처리합니다.

경고: 모델에서 파생된 텍스트는 영구 메모리 상태가 될 수 있습니다. 자동 추출, 요약 또는 컨텍스트 카드 기능이 사용으로 설정된 경우 요약, 추출된 메모리 또는 검색된 레코드를 SDK에서 메모리 추출, 요약, 컨텍스트 카드 또는 에이전트 프롬프트와 같은 이후 프롬프트에 삽입하여 애플리케이션이 특정 중간 값을 검토할 수 있습니다. 이를 일반적인 신뢰할 수 없는 LLM 데이터 플로우로 취급합니다. 애플리케이션이 소비하는 출력을 검토 및 검증하고, 메모리 파생 콘텐츠가 권한 있는 작업을 승인하거나 정책을 우회하지 않도록 합니다.

active-memory 기능을 사용할 때는 다음 권장 사항을 따르십시오.

지속성 및 데이터 최소화에 대한 고려 사항

Oracle AI Agent Memory는 DB 지원 저장소를 사용할 때 Oracle AI Database에 메시지, 메모리, 메타데이터, 임베딩을 보관할 수 있도록 설계되었습니다. 이를 통해 내구성이 뛰어난 검색 및 세션 간 메모리를 사용할 수 있지만, 애플리케이션은 보유하기에 적합한 데이터를 계획해야 합니다.

다음 지침은 안전한 데이터 처리 관행에 맞춰 배포를 유지하는 데 도움이 됩니다.

검색 범위 및 액세스 제어 관련 고려 사항

Oracle AI Agent Memory는 호출자가 제공한 user_id, agent_id 및 thread_id 값을 사용하여 검색 범위를 지정합니다. 이는 강력한 필터링 모델이지만 검색된 콘텐츠가 사용되거나 표시되는 방법을 결정할 때 애플리케이션이 사용하는 유일한 제어는 아니어야 합니다.

기본적으로 스레드 범위 검색은 user_id 및 agent_id에 대한 정확한 일치와 thread_id에 대한 광범위한 일치를 사용하므로 관련 결과가 동일한 사용자 에이전트 쌍에 대한 과거 스레드로 확장될 수 있습니다. 최상위 레벨 OracleAgentMemory.search() 및 search_async() 호출에는 명시적 사용자 범위 지정과 정확한 사용자 일치도 필요합니다. 생략된 사용자 범위 및 exact_user_match=False를 거부하므로 공용 클라이언트 API는 실수로 여러 사용자를 검색하지 않습니다. user_id=None 전달은 정확한 사용자 일치와 범위가 지정되지 않은 레코드만 대상으로만 허용됩니다.

검색을 설계할 때 다음 연습을 사용합니다.

데이터베이스에 적용된 최종 사용자 권한 부여의 경우 Oracle Agent Memory는 Oracle Deep Data Security와의 통합도 노출합니다. 이 기능은 데이터베이스 데이터 롤, 데이터 권한 부여 및 일반 유저 보안 컨텍스트를 기반으로 작성된 고유한 보안 기능입니다. 정책을 부여하거나 공유 런타임 접속 풀을 사용하기 전에 딥 데이터 보안 API 및 보안 참조를 검토하십시오. 이 페이지에서는 통합 감사와 데이터베이스 정책 취소 및 OCI IAM 그룹 멤버쉽 변경에 대한 다양한 유효 시간을 문서화합니다.

애플리케이션 통합 및 호출자 신뢰와 관련된 고려 사항

Oracle AI Agent Memory는 최종 사용자가 직접 호출하지 않고 통합 애플리케이션 또는 기타 신뢰할 수 있는 백엔드 코드를 통해 호출됩니다. 최종 사용자 대면 보안 경계가 아니며 자체적으로 최종 사용자 인증 또는 권한 부여를 수행하지 않습니다. 패키지는 호출자를 신뢰하여 각 작업에 대해 올바른 user_id, agent_id, thread_id 및 검색 범위를 제공합니다.

중요: 통합 애플리케이션은 최종 사용자 인증, 액세스 권한 부여, Oracle AI Agent Memory API를 호출하기 전의 올바른 user_id 및 범위 도출을 담당합니다. 호출자가 제공한 user_id는 ID 증명이 아닌 범위 지정 값입니다.

SDK를 에이전트 응용 프로그램에 통합하는 경우 다음 연습을 사용합니다.

로깅 및 진단 관련 고려 사항

Oracle AI Agent Memory는 표준 Python 로깅을 사용하며 통합 애플리케이션에 대한 애플리케이션 로그 처리기 또는 로그 레벨을 구성하지 않습니다. 애플리케이션은 oracleagentmemory 로거를 사용으로 설정하고 기존 로깅 구성을 통해 SDK 로그를 경로 지정할 수 있습니다.

SDK 로그를 사용할 때 다음 연습을 사용하십시오.

데이터베이스 액세스, 스키마 관리 및 암호 관련 고려 사항

Oracle AI Agent Memory는 호출자가 제공한 Oracle AI Database 연결 또는 풀을 사용합니다. 패키지는 데이터베이스 인증서 자체를 생성하거나 관리하지 않습니다. 또한 호출자 대신 데이터베이스 네트워크 암호화를 생성, 협상 또는 업그레이드하지 않습니다.

중요: 프로덕션 코드는 TLS 사용 Oracle AI Database 연결 또는 풀을 Oracle AI Agent Memory에 전달해야 합니다. SDK는 호출자가 제공한 연결 또는 풀을 있는 그대로 사용하며 일반 텍스트 DSN을 업그레이드하지 않습니다. 신뢰할 수 없는 네트워크, 공유 네트워크 또는 외부 네트워크에서 일반 텍스트 데이터베이스 연결을 사용하지 마십시오. python-oracledb를 사용할 때는 공식 섹션 Securely Encrypting Network Traffic to Oracle AI Database를 따르고 연결 또는 풀 생성의 일부로 TLS 또는 승인된 다른 암호화된 전송을 구성합니다.

중요: 애플리케이션 코드, 체크인된 구성 또는 익스포트된 아티팩트에 직접 API 키, 비밀번호 또는 기타 암호를 포함하지 마십시오. 항상 보안 주입(Injection) 방식을 사용하고 자격 증명 액세스를 위한 최소 권한 원칙을 따릅니다.

권장되는 배치 방식은 다음과 같습니다.

네트워크 통신 및 외부 끝점에 대한 고려 사항

Oracle AI Agent Memory는 배포에서 원격 LLM 또는 임베딩 제공자를 구성할 때 외부 서비스와 통신할 수 있습니다. SDK는 구성된 클라이언트 경로를 통해 프롬프트 및 요청 매개변수를 전달하지만 주변 애플리케이션 및 배포는 이러한 연결 보안을 유지합니다.

다음을 권장합니다.

리소스 소진 벡터에 대한 고려 사항

메모리 워크플로는 시간 경과에 따라 데이터베이스 사용량, 임베딩 트래픽, LLM 토큰 사용량을 늘릴 수 있습니다. 이는 악의적인 과도한 사용과 지나치게 큰 메시지 또는 지나치게 광범위한 검색 패턴과 같은 무고한 구현 실수에 모두 해당됩니다.

생산 경화의 일부로 다음 컨트롤을 사용합니다.

권장되는 Oracle Deep Data Security 배치

Oracle Deep Data Security(Deep Sec)는 일반 사용자가 자신의 user_id를 포함하는 행만 읽고 쓸 수 있도록 허용하는 등 데이터베이스에서 에이전트 메모리 행 및 열 제약 조건을 적용할 수 있습니다. 또한 UserOwnRowsDeepDataSecurityPolicy 정책은 삽입 후 일반 사용자가 소유권 및 ID 열을 업데이트하지 못하도록 합니다. 정확한 테이블별 권한은 Deep Data Security를 참조하십시오.

이 보안 기능을 최대한 사용하려면 일반 유저 컨텍스트가 없을 때 응용 프로그램에 권한이 부여된 폴백이 없도록 각 보안 권한에 대해 별도의 DB 유저를 사용하는 것이 좋습니다.

프로덕션에서 다음과 같은 계정 구분을 사용하는 것이 좋습니다.

모든 최종 사용자 요청에 대해 OAM sdk 외부에서 사용자를 인증하고, 하나의 애플리케이션 풀 연결을 획득하고, 해당 사용자의 최종 사용자 보안 컨텍스트를 연결하고, 해당 연결을 통해 에이전트 메모리 작업을 수행합니다. 풀에 대한 접속을 해제하기 전에 컨텍스트를 지웁니다. 컨텍스트는 하나의 물리적 데이터베이스 세션에 속하므로 다른 유저가 재사용할 수 없습니다. Oracle의 Deep Sec 최종 사용자 보안 컨텍스트 수명 주기 설명서에서는 해당하는 첨부, 대체 및 릴리스 동작에 대해 설명합니다.

데이터베이스 드라이버가 획득한 모든 연결에서 현재 요청의 일반 사용자 컨텍스트를 연결하도록 구성되지 않은 경우 일반 응용 프로그램 풀을 에이전트 메모리 인스턴스로 직접 전달하지 마십시오. 그렇지 않으면 SDK 작업이 컨텍스트 없이 또는 잘못된 요청 컨텍스트를 사용하여 세션을 빌릴 수 있습니다. 대신 응용 프로그램에서 연결을 획득하고 구성한 다음 해당 컨텍스트 베어링 연결을 요청 범위의 에이전트 메모리 구성 요소로 전달합니다.

사용자 소유 레코드를 읽거나 쓰는 백그라운드 또는 지연된 작업에는 동일한 보호가 필요합니다. 권한이 부여된 접속 및 최종 사용자 컨텍스트는 작업이 완료될 때까지 유효하게 유지하거나, 작업자가 새로운 접속을 획득하고 올바른 인증된 사용자의 컨텍스트를 첨부하도록 준비합니다. 스키마 소유자를 통해 이 작업을 실행하지 말고 단순히 누락된 일반 유저 컨텍스트를 건너뛰십시오.