跳至正文
创始价格 — 早期客户锁定立即开始 →

AI智能体多租户:凭证隔离、命名空间分离与SOC 2

AI智能体多租户是智能体平台的架构属性,它在基础设施层将每个租户的凭证、内存、执行上下文和审计记录与其他所有租户相互隔离,而非依赖开发者约定或智能体指令遵循。与Web应用多租户不同,智能体持有活跃的API密钥,在请求间累积持久内存,并执行已验证的工具调用:这三个维度超越了数据行隔离,必须按租户分区以满足OWASP LLM06和SOC 2 CC6.1的要求。

AI智能体多租户是智能体平台的架构属性,确保为不同租户提供服务的智能体无法访问彼此的凭证、内存、执行上下文或审计记录。这通过按租户的凭证库范围、黑板命名空间ACL、容器化执行隔离和分区审计日志在基础设施层强制执行,使建立在该平台上的B2B SaaS产品将租户隔离作为结构性保障而非开发者职责来继承。

为何智能体多租户比Web应用更难

传统Web应用多租户只隔离一件事:数据行。添加tenant_id列,过滤每个查询即可。智能体多租户必须隔离Web应用从未需要处理的三个额外维度。任何一个维度的失败都构成OWASP LLM06敏感信息披露下的跨租户数据泄露事件。

Web应用从未面对的三个隔离维度

凭证隔离:Web应用通过会话令牌识别用户;会话对外部服务没有持久访问权限。智能体需要真实的按租户范围API密钥。如果租户A和租户B的智能体共享一个OpenAI密钥,租户A的大量使用会降低租户B的速率限制空间;租户A的账单包含租户B的令牌消耗;在租户A被攻破后撤销密钥也会中断租户B;提供商控制面板中的密钥使用日志无法按租户分区,违反SOC 2 CC6.1逻辑访问要求。

内存隔离:智能体在交互间累积工作记忆(上下文窗口)、语义记忆(向量存储嵌入)和协调状态(黑板条目)。如果这些内存存储中的任何一个未按租户分区,在某个任务中检索到智能体上下文的租户A文档,可能在语义相似的任务中出现在租户B的智能体上下文中,无需任何对抗性输入。这是OWASP LLM06 v1.1的典型跨租户数据泄露场景。

审计日志隔离:租户A和租户B工具调用混杂的共享审计日志无法在不暴露租户B记录的情况下导出给租户A的合规团队。SOC 2 CC6.1要求每个租户的审计员只能看到自己的记录,这需要存储层分区而不只是查询时过滤。

Shared-Nothing vs Pool vs Bridge:三种多租户模型

孤岛模型(Shared-Nothing):每个租户拥有完全专用的基础设施。每租户成本最高但隔离最强。适合有严格数据驻留要求的企业租户和受监管行业。

池模型:所有租户共享基础设施,仅通过应用层的tenant_id参数过滤来实现隔离。成本最低,隔离最弱。仅适用于无企业客户的低敏感度工作负载。

桥接模型:在控制平面强制隔离的共享计算基础设施。每个租户获得由基础设施ACL强制执行的专用凭证库范围和内存命名空间;计算共享但受Kubernetes命名空间ResourceQuota约束。这是B2B SaaS的推荐默认值。OpenLegion的项目范围架构是桥接模型的实现。

OWASP LLM06:跨租户敏感信息披露

OWASP LLM Top 10 v1.1将跨租户数据泄露归类为LLM06:高严重程度的敏感信息披露。

跨租户数据泄露攻击向量

  1. 租户A的智能体处理客户支持请求。它将租户A的内部产品文档和客户记录检索到上下文窗口,然后将相关段落嵌入并存储到共享向量存储中。
  2. 租户B的智能体处理语义相似的请求。它查询共享向量存储;由于没有按租户分区的索引,查询返回租户A的嵌入段落作为Top-K最近邻。
  3. 租户A的内部客户记录出现在租户B的智能体上下文中。

无需对抗性输入。数据泄露是架构失败。

包括提示注入(LLM01)的完整框架请参见AI智能体安全与OWASP LLM Top 10威胁模型

内存泄露:工作记忆、向量存储和黑板状态

三种智能体内存类型各需要单独的租户隔离处理:

工作记忆(上下文窗口):智能体的当前上下文窗口不得在租户请求间共享。

语义记忆(向量存储):使用共享向量存储时,每次写入必须包含tenant_id作为强制元数据字段,每次查询必须包含在存储客户端层注入的{tenant_id: current_tenant_id}元数据过滤器。

协调状态(黑板):跨智能体共享的键值状态必须使用租户范围的键前缀,例如projects/{tenant_id}/*,并在mesh层强制执行ACL。

凭证隔离:按租户的库范围

按租户凭证范围:为何共享API密钥会失败

最常见的多租户凭证错误是为所有租户使用一个LLM API密钥。这会以四种不同方式失败:速率限制共享、成本无法归因、撤销波及范围、审计隔离破坏。

正确模式:每个租户获得自己的API密钥。完整的库架构请参见凭证管理和按租户库范围模式

JWT反模式:无撤销的令牌范围

三种缓解措施,全部需要同时采用:

  1. 短期令牌:智能体工具调用令牌的TTL不超过300秒(5分钟)。
  2. 主动撤销注册表:每租户的有效令牌ID表。
  3. 按任务令牌轮换:为每个智能体任务签发新令牌。

执行隔离:Kubernetes命名空间和资源配额

按租户命名空间:RBAC、NetworkPolicy和ResourceQuota

需要四个组件:

按租户命名空间:每个租户的智能体Pod在专用Kubernetes命名空间中运行。

具有命名空间范围ServiceAccounts的RBAC:每个租户获得专用ServiceAccount,其RoleBindings限定在自己的命名空间。

默认拒绝的NetworkPolicy:默认对每个租户命名空间应用拒绝所有入口和出口的策略。

带LimitRange的ResourceQuota:通过ResourceQuota按命名空间应用CPU、内存和Pod数量限制。

进程级沙箱控制请参见AI智能体沙箱和进程级执行隔离

多租户智能体平台的SOC 2合规

CC6.1:按数据分类的逻辑访问控制

CC6.1合规需要三个具体控制:按租户凭证库范围、按租户内存命名空间和按租户审计日志分区。

SOC 2审计员将跨租户使用的共享API密钥标记为CC6.1缺陷。完整控制映射请参见AI智能体治理和SOC 2合规框架

CC6.6:对提升权限智能体的特权访问限制

CC6.6合规需要:结构性防止跨租户提升权限智能体调用、可审计的特权智能体权限定义、特权操作的每次调用审计记录。

按租户审计日志分区

存储键模式audit/{tenant_id}/{year}/{month}/{day}/{agent_id}/{tool_call_id}.json

按租户S3存储桶策略:每个租户单独的存储桶前缀和资源策略。

OTLP资源属性:在每个OpenTelemetry日志记录中包含tenant_id作为资源属性。

按租户SIEM工作区:在共享SIEM部署中配置按租户的索引或工作区。

完整审计日志设计请参见AI智能体审计日志和按租户合规记录

反模式:不应做的事

反模式1:租户ID在智能体提示中而非基础设施中

tenant_id注入智能体系统提示并依赖智能体来强制执行自己的租户边界是最常见且最危险的多租户反模式。会因提示注入绕过、幻觉漂移和无基础设施强制执行而失败。

反模式2:无租户过滤器的共享向量存储

这是主要的OWASP LLM06数据泄露向量。修复需要每次写入的强制元数据字段tenant_id和每次查询时在存储客户端层注入的元数据过滤器。

反模式3:提示中带租户声明的共享LLM API密钥

此反模式在CC6.1失败:速率限制共享、成本归因失败、撤销波及范围和无法按租户分区的提供商审计记录。

OpenLegion的看法:通过架构而非约定实现隔离

OpenLegion通过智能体代码无法绕过的三种基础设施层机制强制执行租户隔离:按项目凭证库范围、黑板命名空间ACL和默认阻止的跨项目智能体消息传递。

隔离控制OpenLegionLangChain / LangGraphCrewAIAutoGenOpenAI Agents SDK
按租户凭证库范围基础设施强制执行开发者约定开发者约定开发者约定开发者约定
黑板命名空间ACL基础设施强制执行不可用不可用不可用不可用
跨项目智能体消息传递已阻止默认阻止不可用不可用不可用不可用
按租户预算上限(Zone 2)基础设施强制执行开发者约定开发者约定开发者约定开发者约定
按租户审计分区(WORM)基础设施强制执行开发者约定开发者约定开发者约定开发者约定
Kubernetes命名空间 + ResourceQuota平台管理自我管理自我管理自我管理自我管理

托管基础设施层请参见具有租户隔离保障的托管AI智能体平台

常见问题

什么是AI智能体多租户?

AI智能体多租户是智能体平台的架构属性,确保为不同租户提供服务的智能体无法访问彼此的凭证、内存、执行上下文或审计记录,在基础设施层而非开发者约定中强制执行。它与传统Web应用多租户的不同在于需要三个额外的隔离维度:按租户凭证库范围、按租户内存分区(向量存储和黑板)以及按租户审计日志分区。

什么是OWASP LLM06,它如何影响多租户智能体系统?

OWASP LLM Top 10 v1.1 LLM06敏感信息披露将跨租户数据泄露归类为高严重程度:智能体处理租户A的数据,将检索的文档存储在没有租户分区的共享内存层中,然后在租户B的响应中显示。攻击不需要对抗性输入。缓解需要在存储客户端层的按租户内存分区、按租户凭证范围和按租户审计日志分区。

SOC 2 CC6.1和CC6.6如何适用于多租户智能体平台?

SOC 2 Type II CC6.1要求根据数据分类限制逻辑访问;在多租户智能体系统中,租户边界是主要分类边界。CC6.6适用于具有数据库写入或外部API调用等提升工具权限的智能体;这些智能体在功能上是特权用户,必须在结构上防止它们处理其分配租户范围之外的请求。跨租户使用的共享API密钥通常会被标记为CC6.1缺陷。

多租户智能体系统中的JWT令牌TTL漏洞是什么?

用于智能体工具调用中租户上下文的JWT访问令牌通常在3600秒(1小时)后过期;如果为租户A颁发的令牌被错误缓存、因基础设施漏洞共享或在调试日志中被捕获,它可以在整个TTL期间无需检测地用于归因于租户A的已验证调用。缓解需要三种同时应用的控制:TTL不超过300秒的短期令牌、按租户的主动令牌撤销注册表和按任务令牌轮换。

Kubernetes命名空间隔离如何用于多租户智能体?

Kubernetes命名空间隔离通过四个组件提供执行隔离:按租户专用命名空间、具有按租户ServiceAccounts和命名空间范围RoleBindings的RBAC、具有默认拒绝和仅必要外部端点明确允许列表的NetworkPolicy,以及具有按命名空间计算限制的ResourceQuota。命名空间隔离解决多租户的计算维度,必须与按租户凭证范围和内存分区相结合。

多租户智能体系统中的共享向量存储反模式是什么?

使用在存储客户端层注入的每查询租户过滤器的共享向量存储是主要的OWASP LLM06数据泄露向量。正确实现需要每次写入的tenant_id元数据字段和每次查询在向量存储客户端层注入的元数据过滤器,而不是从智能体代码作为参数传递。对于严格的合规要求,按租户命名空间或独立索引在存储地址层强制执行边界。

OpenLegion如何强制执行租户隔离?

OpenLegion通过三种基础设施层机制强制执行租户隔离:按项目凭证库范围(Zone 2使用来自mesh会话的已验证项目上下文而非智能体提供的参数来解析$CRED{}句柄;跨项目凭证解析在架构上是不可能的)、黑板命名空间ACL(智能体仅对其项目的键前缀具有读写权限,由mesh监督员强制执行)和默认阻止的跨项目智能体消息传递。

智能体平台的三种多租户架构模型是什么?

三种多租户模型具有不同的隔离保证和成本特征:孤岛模型(Shared-Nothing)为每个租户提供完全专用的基础设施;池模型共享所有基础设施,仅在应用层应用隔离;桥接模型共享计算基础设施,同时通过按租户凭证库范围和内存命名空间ACL在控制平面强制隔离。桥接模型是B2B SaaS的推荐默认值。