生产环境中的 Memory Bank:避免客户会话间 PII 泄露的 3 种模式
Gemini Enterprise Agent Platform 的持久内存是强大的加速器,但如果没有租户隔离配置,也是无声的数据泄露向量。三种生产模式,防止一个客户的数据污染另一个客户的会话。
Fabiano Brito
CTO, Autenticare
Gemini Enterprise Agent Platform 将 Memory Bank 作为一级特性引入:智能体在会话间持久化上下文,学习用户偏好,无缝恢复中断的对话。对于保险、银行、医疗等客户服务场景,这具有切实价值。
问题在于:没有租户隔离的持久内存,就是预设的数据泄露。
在多客户部署中,共享智能体存储和检索记忆。如果分区键缺失或不正确,Memory Bank 的向量搜索会返回来自其他客户先前会话的片段。模型在不发出任何警告的情况下使用这些片段完成响应。用户看到了不属于自己的数据。工程师收不到任何告警。
这不是假设性场景——这是不做额外配置时的平台默认行为。
为什么 Memory Bank 默认暴露 PII
Memory Bank 基于向量索引构建。每个条目是带有可选元数据的记忆片段。当智能体为新会话检索上下文时,它使用当前对话的语义嵌入查询索引——除非显式配置,否则不会使用身份过滤器。
语义搜索找到的是相关内容,而不是属于你的内容。在没有分区的情况下,“我的账户余额是多少?“可能返回另一个客户早前会话中问过同样问题的记忆片段。
配置良好的持久内存,是区分"会学习的智能体"与"会泄露的智能体"的关键所在。差异就在一个元数据字段。
模式 1 — 按租户划分的内存 Profile
最直接的模式:每个客户(租户)拥有自己的 Memory Profile——Memory Bank 内的隔离命名空间。智能体只在当前活跃租户的 Profile 内读写。
在 Gemini Enterprise Agent Platform 中,这意味着在所有内存操作中将 tenant_id 作为强制过滤条件传入:
# 错误 — 无租户范围
memory_bank.search(query=user_message, top_k=5)
# 正确 — 带租户过滤
memory_bank.search(
query=user_message,
top_k=5,
filter={"tenant_id": session.tenant_id}
)
元数据过滤器会从搜索中排除所有不属于当前租户的片段。这不是可选功能——这是区分真实隔离与表面隔离的那条线。
适用场景: 任何多客户部署。始终如此,无一例外。
模式 2 — 按数据敏感度差异化 TTL
不是所有记忆都有相同的有效期——也不是相同的风险等级。偏好数据(沟通风格、偏好的报告格式)风险低,受益于较长的生命周期。事务性数据(查询的余额、已授权的操作)相关性窗口短,风险高。
按数据类别配置差异化的 TTL(生存时间):
MEMORY_TTL = {
"preference": 60 * 60 * 24 * 90, # 90 天 — 低风险
"interaction": 60 * 60 * 24 * 30, # 30 天 — 中等风险
"transactional": 60 * 60 * 24 * 1, # 1 天 — 高风险
"pii_explicit": 60 * 60 * 4, # 4 小时 — 关键
}
memory_bank.write(
content=fragment,
metadata={
"tenant_id": session.tenant_id,
"category": "transactional",
},
ttl=MEMORY_TTL["transactional"]
)
对敏感数据设置短 TTL,不仅仅是满足 GDPR 合规要求——它最小化了在隔离因 bug 被绕过时的暴露窗口。
适用场景: 任何处理金融、医疗或个人标识数据的系统。短 TTL 是深度防御的一层。
模式 3 — 带溯源的内存审计日志
模式 1 和 2 在正常条件下防止泄露。模式 3 用于检测出现问题的情况。
写入 Memory Bank 的每个片段都应携带最小审计跟踪信息:谁写入的、在哪个会话中、关联哪个租户、何时写入。在生产环境中:
memory_bank.write(
content=fragment,
metadata={
"tenant_id": session.tenant_id,
"session_id": session.id,
"agent_id": agent.id,
"written_at": datetime.utcnow().isoformat(),
"category": classify_pii(fragment), # 枚举: none / low / high
},
ttl=MEMORY_TTL[classify_pii(fragment)]
)
有了这个日志,任何内存读取都可以被审计。当客户报告看到了他人的数据,你拥有完整的溯源能力用于调查——并证明合规性。
适用场景: 任何受监管的系统(医疗、金融、教育),其中可审计性是法律要求。
三种模式的组合
租户隔离
在所有 Memory Bank 操作中强制设置 tenant_id 过滤器,防止客户间的跨访问。
按敏感度差异化 TTL
事务性数据数小时内过期,偏好数据数周内过期。在隔离失效时最小化暴露窗口。
审计日志
每个片段完整的来源可追溯性。检测跨会话异常并证明合规性。
相关文章
主要来源:Google Cloud Blog — 介绍 Gemini Enterprise Agent Platform
