代理访问模型

发布于

在过去的十二年中,企业安全已经逐渐摒弃了对网络的信任。BeyondCorp 的理念指出,请求的来源——无论是在企业边界内还是开放的互联网——都不应该决定是否被允许。身份和设备的健康状况才是关键。这一模型取得了成功,现在是零信任(Zero Trust)架构的基础。

谷歌的 BeyondCorp 假设了一个特定的前提:一个人在一台设备上,以人的速度进行操作。如今,组织开始部署代理(agents),这些软件主体能够代表我们进行推理、行动,并深入系统。任务范围内的代理运行是暂时的,完成其工作后即结束。而一个长期运行的代理服务可以处理多个此类任务,并比人类更快地移动数据。

我们为人类构建的控制措施在面对代理时并不会显著失效。它们默默失效,表现为授权过多、识别不足和信任时间过长。

本文提出了一种代理的访问模型——**代理访问模型(AAM)**。我们将描述该模型并展示如何构建其组件。随后,通过一个具体示例来说明,区分现有的单一主体控制与更复杂的**多玩家访问控制**问题。

目前的许多工作尝试让每个访问决定变得更智能,而 AAM 则采取了不同的方法:缩小代理的能力,这样需要判断的内容就会减少。

## 变革

十年前,企业安全面临的最棘手问题是:*这个请求来自哪里,我是否信任这个地方?* BeyondCorp 的回答是,您根本不应该信任这个地方。您需要验证用户身份、审问设备,并对特定请求做出访问决定。位置成为众多信号之一,而不是决定性因素。

这种重新框架的成功在于主体的可辨识性。每个人每天早上都会登录,携带一两台设备,以人的速度工作,并产生逐渐归纳的访问决策,系统可以对此进行推理。围绕这种主体形态,我们构建了一个完整的行业:单点登录、设备状态、条件访问、会话风险评分。

但代理并不具备这种形态。

代理服务可能会运行多个任务。在本文中,代理是一个任务范围内的运行。我们使用**任务执行图**来表示与该运行相关的所有工作,并受到相同能力上限和信任级别的约束。解决不同任务的相同工具,在消耗不同事件或在未来的计划上运行时,会生成新的图。一个单一的人类指令(*对这两个账簿进行调和*,*处理过夜的警报*,*打开一个修复此错误的拉取请求*)可以分配一个或多个这样的任务。每个任务可能需要访问数据库、源代码控制、日志、工单系统、知识库、文档或电子表格。任务可能需要广泛的访问权限,这种权限必须及时满足,并且理想情况下不再超出必要时间。

代理必须具备完成任务所需的足够权限,但不能更多。最小权限原则在访问控制中自古而流传。变化的是执行的速度和频度。对于人类的工作群体,最小权限通常是每季度审查的政策,而对于大量短生命周期的代理,系统则需要实时运行并留下审计记录。

## 为什么人类模型不适用

代理类似于服务账户或非常快速的用户。四个属性使得这两种控制都不适合。

**代理是暂时性的,而凭证是持久的。** 服务账户是为长期运行的软件设计的:如薪资系统、夜间批处理作业。它们通常配有持久密钥、广泛范围和罕见轮换。当这些凭证用于短寿命的代理时,这些凭证往往超出它们被发放时的工作时间,留存于内存、日志或环境变量中,容易被重放。凭证的生命周期应该与任务的生命周期相匹配。对于代理来说,通常是几分钟。

**代理以机器速度操作。** 针对人类活动调优的异常检测、速率限制和数据丢失控制可能反应过慢。一位拥有数据库连接和外部网络路径的代理可以在人类调校的控制完成采样之前,读取一个表并将其发送到外部端点。因此,预防控制必须在操作点上内联运行。

**提示并不是边界。** 团队通常告诉代理“不要访问生产”或“绝不要发送数据给第三方”。这些指令有助于塑造行为,但并未强制执行访问权限。模型可能会被注入到它读取的数据内容中,或自行产生不安全的行为。推断出的意图可以为风险决策提供信息,但攻击者可以通过相同的文本来操控该信号。强制执行应在中介工具调用的框架里进行,以及在处理数据包的网络层中进行。一个可以轻易逾越的边界并不是真正的边界。

**代理在多个跳转中组成权限。** 一个代理可以调用一个工具,该工具再调用另一个代理,后者代表最初的人类调用一个 API。在这个链条的某个地方,关于“这是谁的授权,他们被允许做什么”的答案可能会消失。现有的机制更好地处理单跳委派,而不是多个跳转或多个用户。

## 代理访问模型

代理访问模型开始于一个规则:**不要信任运行。对每个操作进行授权,并针对任务及其累积状态进行授权。**

BeyondCorp 从网络中去除了隐式信任,而 AAM 则去除了任务执行图中的隐式信任。一个操作的授权并不会自动延续到下一个操作。每个操作会根据三点进行评估:代理是谁、被授权执行什么任务以及该图已经触及的哪些政策相关资源。累积状态只能减少图的剩余能力。

谷歌的**Beyond Zero**采取了相同的开局策略:将信任的边界从应用缩小到个别操作,并以机器速度做出决策。Beyond Zero 在每个授权决策背后放置了一个推理引擎,而 AAM 限制了该引擎必须评估的能力集。这两种方法相辅相成。对于那些跨越声明的调解边界的操作,AAM 记录代理、主体和每个授权决策背后的任务。

AAM 有五个原则。

1. **凭证是短期和有界的。** 代理接收为任务铸造的凭证,并随任务过期。令牌是发送方约束的,因此单凭被盗令牌不能在没有由框架持有的证明密钥的情况下被重放。

2. **强制执行发生在框架和网络中,而不是在提示中。** 策略应用于工具调用和网络请求实际发生的地方。提示是表达意图的地方,而不是强制执行边界的地方。

3. **人类监督是例外。** 批准仅限于值得的决策。对于每一步都需要人批准会造成疲惫和机械点击。

4. **授权是根据证据进行审查的。** 直接捕获的活动可以显示某个任务模板是否过于宽泛或窄小。系统会提出更改的建议并供审查,经过批准的更改适用于未来任务。它永远不会扩大正在进行的任务。

5. **能力状态是单向移动的。** 当发生声明的受保护事件时,根据政策,信任瓣圈会在任务执行图中减少能力。通过信任瓣圈移除的权限仅在新授权的任务中返回。

## 参考架构

此架构具有四个主动控制和两个支持系统。主动控制管理任务。代理活动日志和授权审查循环依据其留下的证据运作。AAM 定义这些部分如何结合以及每个部分必须保证的内容。这是一个参考架构,而不是网络级别的规范。

### 4.1 代理身份代理

在调度时,**代理身份代理**发放一个短期的、可验证的凭证,范围限定于任务。该凭证最迟在任务结束时过期。

该凭证是**任务范围的**:它编码“这是代理 X,代表主体 H,执行任务 T。”它也是**发送方约束的**,绑定到由框架持有的证明密钥。单独泄露的令牌不能重放,除非拥有那个密钥,且模型根本不会接收到它。

现有标准提供了这两者的原始工具。**OAuth 2.0 令牌交换(RFC 8693)** 定义了通过安全令牌服务进行的交换,并可以根据受众、资源或范围生成缩小的令牌。授权服务器的策略决定其发放内容。令牌的 `act` 声明标识当前的执行者,而嵌套的 `act` 声明可以保留先前的执行者以用于归属。**DPoP (RFC 9449)** 将 OAuth 令牌绑定到客户端密钥,并在每个受保护请求时要求进行证明。该证明覆盖 HTTP 方法和目标 URI,但不包括请求体、查询参数或工具参数。因此,框架必须授权一个不可变的请求表示并执行同样的请求。

没有标准定义 AAM 的任务模板、信任瓣圈状态或跨层强制执行。AAuth 草案 09 涉及代理与资源的身份和授权,包括每实例身份、可选任务、工具权限、审计和异步授权。它能够实现此模型的部分内容,仍然在不断发展中。AAM 依赖于四个属性的凭证:短期、任务范围、发送方约束和可归属性。它不依赖于一种协议胜出。

### 4.2 任务范围访问引擎

凭证确定了代理的身份以及其正在执行的任务。**任务范围访问引擎**决定每个请求是否可以进行这个身份对这个资源的操作。它通过使任务本身成为决策的优先输入,扩展了 BeyondCorp 的访问控制引擎。

其工作是使最小权限成为默认和上限。任务授权可能是:“代理 X,进行任务 T,可以在接下来的十分钟内读取表 A、B 和 C。”这就是框架。未声明的操作将被拒绝。

框架来自哪里?一个任务的范围在代理调度时声明,而不是在运行时由代理协商。在常见情况下,一个人或一个代表人类的系统定义了一次任务模板:“调和可以读取这三张表并发布到这个频道。”每次调度都会实例化它。模板是配置的单元,因此策略的数量跟踪的是不同任务的数量,而不是运行的数量。在调度时,访问引擎将经过批准的模板与发起主体和代理服务的权限交集,然后应用资源拥有者和租户的策略。这个交集就是任务的能力上限。代理可以要求更少的权限,而信任瓣圈可以移除权限。更广泛的权限需要重新授权的任务。

对于每个操作,适配器构建并冻结完整的请求表示,包括操作、资源、受影响的范围、租户和接收者的参数。访问引擎根据当前的能力上限对此表示进行授权,适配器执行同样的表示。凭证续约重新验证原始上限和当前的信任瓣圈状态。它无法恢复被移除的能力或延长最大任务生命周期。

### 4.3 中介层(框架和网络)

**中介层**管理两个边界:框架暴露的工具路径和强制通过部署网络边界的出站流量。

第一个是框架,即处理代理工具调用的运行时。它在声明的工具路径中拦截调用,检查它们是否符合任务政策,并发出强制执行事件,受第 4.6 节所描述的收集缺口的约束。框架可以区分读取操作与更新操作,并约束影响范围的参数。MCP 标准化了定义传输的请求并为 HTTP 传输提供了 OAuth 资源服务器边界。其授权层没有定义 AAM 的每个工具或参数政策。框架或工具服务器必须强制执行这一点。远程 MCP 服务器仍然是一个单独的强制执行边界,具有自己的下游访问和出口。

第二层是网络层,即代理连接的出站路径。如果代理仍然可以打开一个任意的套接字连接到互联网,那么完美的介导工具调用集合毫无意义。网络层控制决定哪些目标和协议可被强制流量通过,包括来自子进程和委派运行时的流量。网络通常可以看到目标和传输属性。它只能在协议暴露该信息或流量在可信赖的中介点结束时,强制执行 HTTP 方法、租户、接收者或应用操作。

一个框架必须确保其强制执行。它的默认是拒绝:一个工具调用被允许是因为任务范围的政策对其进行了命名,而不是因为代理请求了它。网络层应用相同的纪律。MCP 逐步授权也只能保持在任务的能力上限内。范围挑战无法恢复被信任瓣圈移除的能力,也无法给当前任务增加权限。

这两个强制实施点的失败模式不同。利用框架漏洞的请求仍应符合网络政策。网络配置错误不应授予工具访问权限。这两个实现应能尽可能独立失败,尽管它们共享任务政策和信任瓣圈状态。这个控制平面是一个共同的依赖项,必须以禁止方式失败。

### 4.4 信任瓣圈

**信任瓣圈**赋予信任以**状态化**的性质。其主要目的是限制数据外流。“信任”是对任务执行图仍然能够做什么的简写,并不是对模型的意图或可靠性做出判断。像棘轮一样,其能力状态只能在任务过程中收紧。

政策提前声明参与信任瓣圈的受保护事件、每次转换所施加的限制,以及必须观察新状态的组件。保护性读取可能会移除外部目标,同时保留一个狭窄类型的内部输出。另一个任务可能会在特定查询类型后缩小数据库范围。

一个图可以处于限制状态。在凭证、工具或出口启用之前,调度政策评估初始提示、恢复的内存和转移的输入。拥有未知或未分类输入的任务开始时处于限制状态或失败为禁止。

我们最初为人类构建的数据丢失控制是基于人类的速度和数量来泄露数据。能够在保留外部路径的情况下读取记录系统的代理可以以机器的速度外流数据。信任瓣圈在发布敏感响应之前,先收紧出站路径。何谓“收紧”的定义由政策规定,而不是由代理或模型解释。对于网络来说,可能是目标白名单。对于数据来说,可能是更狭窄的资源或查询范围。这些轴在政策中提前声明,因此操作员可以准确看到每次转换移除哪些能力。

并行工作使这一过程超越了简单的双状态转换。框架在所有强制点采纳新状态之前保持响应。当所有要求都得到满足时,状态存储会使用比较和设置,或单写者来序列化更新。每个组件停止使用旧状态,清除缓存的决策,确认新版本。框架取消或排空旧工作。网络强制在所有确认到达后关闭或重新授权持续连接。框架仅在所有确认到达后才释放响应。任何冲突、超时、错误或缺失的确认都会阻碍响应。转换失败为禁止。

相同的规则适用于数据流。当分类已知时,转换在流开始之前完成。如果分类取决于返回的内容,则响应在分类和转换完成之前保持缓冲。限制状态适用于整个任务。需要移除某个权能的工作开始时是一个新的授权任务,跨越新的隔离边界。受保护的数据只能以至少与其来源一样严格的分类通过调度输入进入该任务。调度者在该状态下初始化新的图,除非经过授权的去分类步骤生成了更低的分类。

信任瓣圈为操作员提供了一个确定的能力边界,便于检查和测试。它并未证明每个允许的输出都是安全的。目标政策、接收者范围、类型操作和有效负载限制依然重要。宽泛的信任瓣圈政策会将良性活动与恶性活动一并拒绝,特别是在分类和目标政策粗糙时。这些拒绝也是修正下一个任务模板的证据。

### 授权审查循环

最小权限一直存在一个操作问题。必须有人决定“最小”的含义。政策所有者可能过度授权以避免支持票。对于大量短生命周期的代理,逐个运行手动调整权限是不切实际的。

**授权审查循环**使用强制点捕获的活动来审查任务模板与实际运行的匹配度。它询问两个问题:

- *这个任务模板是否过度授权?* 有一项授权在多次成功运行中未被使用。建议撤回。
- *这个任务模板是否未授权?* 关联凭证与失败工作相符,且任务定义和资源拥有者支持请求。建议扩大范围,并附上证据。

仅仅重复拒绝并没有证明太多。攻击者可以不断重复禁止的操作,直到看起来很常见,而未使用的权限则可能涵盖稀有的恢复路径。循环将证据与政策所有者的建议相连。批准的变更仅适用于未来的任务模板。活动任务保留其原先的上限和信任瓣圈状态。审计员所读取的政策是正在执行的政策。

### 代理活动日志

代理活动从普通应用日志中很难重构。**代理活动日志** 是一个附加式、可查询的活动记录,由身份代理、访问引擎、框架、信任瓣圈状态存储和网络强制执行点捕获。它并不依赖于模型自身行为的记述。

SIEM 仍然是这些记录的目的地。差距在于源头。代理活动通常由应用代码在强制路径之外发出,并且形态无法区分读取和删除,也无法将某个行为连接到执行该行为的人。代理活动日志的贡献在于提供一个由外部控制点提供的公共事件契约,旨在解决实际调查中提出的问题。

**代理是被动态链接的软件。** 其记录可能包含有关人员、客户和其他组织的信息。这些记录仍然适用相关的隐私、访问、保留和数据治理要求。有效的日志记录不需要对提示、推理、响应或数据包内容进行整体捕获。一个组织保留多少记录,谁可以读取以及多长时间仍然是政策决定的结果。

---

原文链接:[点击查看](https://blog.cloudflare.com/the-agent-access-model/)

评论

暂无评论。

0.052336s