把代码、流量与安全情报连成闭环:AI 时代的自适应应用防护

2026-09-29 11 预计阅读时间: 1 分钟
来源: blog.cloudflare.com AI 摘要 Original link

Disclaimer: This article is an AI-assisted summary. Read it together with the original source when precision matters. The summary may omit context, version differences, or edge cases and is not official documentation.

预计阅读时间:10 分钟

AI 应用正在改变传统安全边界。一次请求不再只是“用户访问接口”,它可能触发智能体调用数据库、执行工具、生成代码,甚至继续访问其他服务。Cloudflare 提出的自适应安全框架,核心思路是把风险发现、智能体治理、运行时保护和 AI 驱动的响应连接起来,让防御策略在持续反馈中更新,而不是依赖一组长期不变的静态规则。

为什么只保护入口已经不够

传统 Web 安全通常围绕入口流量展开:识别恶意 IP、拦截注入、限制请求频率。这些机制仍然重要,但 AI 智能体带来了新的执行链:

用户请求
  -> 模型理解意图
  -> 智能体选择工具
  -> 工具访问数据库或外部 API
  -> 模型整理结果并返回

攻击可能发生在任何一环。提示词注入可以诱导智能体选择高权限工具;被污染的外部内容可能改变模型行为;看似正常的单次请求,也可能在连续工具调用后造成数据泄露。

因此,自适应防护需要同时回答三个问题:

  • 代码有什么风险:依赖、配置、密钥和权限是否暴露了攻击面。
  • 流量正在做什么:请求来自谁,访问了什么资源,行为是否偏离基线。
  • 运行时准备执行什么动作:智能体选择了哪个工具,参数是什么,影响范围有多大。

只有将这些上下文汇合起来,系统才能区分“用户查询订单”和“智能体批量导出客户资料”之间的风险差异。

四个环节必须形成反馈回路

这套框架可以理解为一个持续运转的闭环,而不是四个相互隔离的安全产品。

1. 风险发现

风险发现覆盖代码、依赖、配置和对外暴露面。发现结果不应停留在扫描报告里,而应进入运行时策略。例如,某个接口刚被识别为包含敏感数据,它随后收到的访问请求就应接受更严格的身份检查和速率限制。

2. 智能体治理

智能体治理关注的不是模型“说了什么”,而是它“能够做什么”。治理策略至少应描述:

  • 哪个智能体可以调用哪些工具;
  • 哪些操作必须获得人工批准;
  • 可读取的数据类别和租户范围;
  • 单次任务允许的调用次数、成本和执行时间;
  • 每次工具调用如何记录和追踪。

智能体身份也不应与终端用户身份混在一起。一次操作最好同时保留用户、智能体、模型版本和工具身份,便于审计责任链。

3. 运行时保护

运行时是做出最终决定的位置。防护层可以结合身份、请求内容、资源敏感度、历史行为和威胁情报,返回允许、拒绝或要求人工确认。

关键点是把控制放在工具调用之前,而不是等模型输出结果后再检查。对于转账、删除资源、执行代码等不可逆操作,事后检测通常已经太晚。

4. AI 驱动的响应

AI 可以帮助聚合同类告警、解释异常调用链并提出策略调整建议,但不意味着所有响应都应自动执行。封禁账号、修改生产策略或隔离关键服务等高影响动作,仍需确定性的边界、审批和回滚机制。

有效闭环应类似:

发现风险 -> 更新上下文 -> 运行时决策 -> 记录结果
    ^                                  |
    +------- 情报分析与策略优化 <-------+

可以这样实践:在工具调用前增加授权网关

下面是一个简化、厂商中立的示例,用来展示智能体如何在调用工具前请求策略决策。它不是 Cloudflare 产品 API,而是可以改造成内部授权服务的最小项目。

先创建 policy.json:

{
  "blocked_tools": ["shell.exec"],
  "sensitive_resources": ["customer_pii", "payment_records"],
  "risk_threshold": 70
}

再创建 app.py:

import json
from http.server import BaseHTTPRequestHandler, HTTPServer

with open('policy.json', encoding='utf-8') as f:
    POLICY = json.load(f)


def authorize(event):
    tool = event.get('tool', '')
    resource = event.get('resource', '')
    risk_score = int(event.get('risk_score', 0))

    if tool in POLICY['blocked_tools']:
        return {'decision': 'deny', 'reason': 'tool is blocked'}

    if resource in POLICY['sensitive_resources']:
        return {'decision': 'review', 'reason': 'sensitive resource'}

    if risk_score >= POLICY['risk_threshold']:
        return {'decision': 'review', 'reason': 'risk threshold exceeded'}

    return {'decision': 'allow', 'reason': 'policy checks passed'}


class Handler(BaseHTTPRequestHandler):
    def do_POST(self):
        if self.path != '/authorize':
            self.send_error(404)
            return

        length = int(self.headers.get('Content-Length', '0'))
        try:
            event = json.loads(self.rfile.read(length))
            result = authorize(event)
            body = json.dumps(result).encode()
            self.send_response(200)
            self.send_header('Content-Type', 'application/json')
            self.send_header('Content-Length', str(len(body)))
            self.end_headers()
            self.wfile.write(body)
        except (ValueError, TypeError, json.JSONDecodeError) as exc:
            self.send_error(400, str(exc))


HTTPServer(('127.0.0.1', 8080), Handler).serve_forever()

启动服务并发送一次授权请求:

python3 app.py

在另一个终端执行:

curl -s http://127.0.0.1:8080/authorize \
  -H 'Content-Type: application/json' \
  -d '{
    "user": "alice",
    "agent": "support-agent",
    "tool": "database.read",
    "resource": "customer_pii",
    "risk_score": 42
  }'

由于请求涉及敏感资源,结果应为:

{"decision": "review", "reason": "sensitive resource"}

接入真实系统时,需要做几项关键改造:风险分数必须由可信的安全组件计算,不能接受客户端自报;用户和智能体身份应通过签名令牌传入;策略版本、输入摘要和决策结果应写入不可篡改的审计记录;授权服务不可用时,则应根据操作风险选择拒绝、降级或只读模式。

落地时避免把“自适应”变成“不可预测”

持续学习并不等于让模型直接修改生产防火墙。更稳妥的采用路径是:

  1. 先观察:记录智能体工具调用和决策建议,不立即阻断。
  2. 再约束高风险动作:优先保护代码执行、数据导出、权限修改和资金操作。
  3. 逐步自动化:只自动处置低影响、可回滚且置信度高的事件。
  4. 持续评估误报:将拒绝率、人工复核率、绕过案例和业务延迟纳入指标。
  5. 防止反馈污染:攻击者可能故意制造样本来影响基线或策略,因此训练和反馈数据也要验证来源。

自适应应用安全的价值,不在于增加另一个 AI 检测器,而在于让代码风险、网络流量、智能体动作和安全情报共享同一套上下文。真正可用的系统既要快速响应新攻击,也必须保持策略可解释、变更可审计、操作可回滚。


相关推荐