让 AI Agent 安全地花钱:Amazon Bedrock AgentCore Payments 的防护机制

2026-06-02 17 预计阅读时间:1 分钟
来源:aws.amazon.com AI 摘要 原文链接

免责声明:本文为 AI 摘要整理,建议结合原文阅读。摘要可能省略上下文、版本差异或边界条件,不作为官方说明。

预计阅读时间:11 分钟

让一个 AI Agent 帮你下单付款,听起来很方便——直到它花错了钱。Agent 自主调用支付接口的那一刻,风险就从"对话幻觉"升级成了"真实损失"。Amazon Bedrock AgentCore Payments 正是为了解决这个问题而生:在 Agent 和支付动作之间插入一层内置的防护栏(guardrails),让 agentic payments 既灵活又可控。

Agent 支付的四个核心风险

当 Agent 拥有支付能力时,传统聊天场景里的"说错话"变成了"花错钱"。来源文章指出了几个关键风险点:

1. 未授权支出 — Agent 可能绕过用户意图直接完成交易。比如用户只是想"看看价格",Agent 却自作主张下了单。

2. 预算失控 — 没有上限约束的 Agent 可以反复调用支付接口,累积金额远超预期。这在批量采购、订阅续费等场景尤其危险。

3. 目标偏移(Goal drift) — Agent 在多步推理中偏离原始任务,把"买一本书"演变成"买整个系列",每次决策都看似合理但整体失控。

4. 上下文注入攻击 — 恶意提示或第三方数据可能引导 Agent 向错误的收款方付款,或者以不合理价格成交。

这些风险的本质是:Agent 的推理链路太长、决策点太多,而传统支付 API 只管"能不能付",不管"该不该付"。

AgentCore Payments 的防护思路

AgentCore Payments 把防护逻辑从"事后审计"挪到了"事前拦截"。它的核心机制可以概括为三层:

  • 意图校验层:在 Agent 触发支付动作前,校验当前推理链是否与用户原始意图一致。不一致则拦截。
  • 预算约束层:为每次会话或每个任务设定支出上限,超出即阻断后续支付调用。
  • 审批流层:高风险或高金额交易需要外部确认(人类审批或二次授权),Agent 不能独自完成。

这三层不是独立开关,而是组合生效。你可以设定"单笔超过 $50 需审批,单会话总额不超过 $200",Agent 在执行过程中会自动检查这些条件。

实践:用 AgentCore Payments 配置一个受控的支付 Agent

下面用一个可运行的 Python 示例展示如何创建一个带支付防护的 Bedrock Agent。示例基于 AWS SDK(boto3),你需要有 AWS 账号且开通 Bedrock 服务。

前提:安装 boto3,配置好 AWS credentials(aws configure),且你的账号已启用 Amazon Bedrock AgentCore Payments。

import boto3
import json
import uuid

client = boto3.client("bedrock-agent", region_name="us-east-1")

# 1. 创建 Agent,关联支付防护配置
agent_response = client.create_agent(
    agentName=f"payment-agent-{uuid.uuid4().hex[:8]}",
    agentResourceRoleArn="arn:aws:iam::123456789012:role/BedrockAgentExecutionRole",
    description="A purchasing agent with payment guardrails",
    # 关键:启用 AgentCore Payments 并注入防护规则
    guardrailConfiguration={
        "paymentGuardrails": {
            # 单笔交易上限 — 超过此金额自动拦截
            "maxTransactionAmount": 50.00,
            # 单会话累计上限 — 防止 Agent 反复小额支付绕过单笔限制
            "maxSessionTotalAmount": 200.00,
            # 需要审批的金额阈值 — 低于此值自动放行,高于此值需人类确认
            "approvalThreshold": 30.00,
            # 允许的收款方白名单 — 只能向列表中的商户付款
            "allowedPayees": [
                "amazon.com",
                "stripe-merchant-abc",
            ],
            # 拦截时的行为:BLOCK 直接拒绝,HUMAN_APPROVAL 挂起等待审批
            "blockBehavior": "HUMAN_APPROVAL",
        }
    },
    foundationModelId="anthropic.claude-3-5-sonnet-20241022-v2:0",
)

agent_id = agent_response["agent"]["agentId"]
print(f"Agent created: {agent_id}")

# 2. 创建 Action Group — 让 Agent 能调用支付工具
action_response = client.create_agent_action_group(
    agentId=agent_id,
    actionGroupName="PaymentAction",
    actionGroupState="ENABLED",
    description="Execute a payment with guardrail checks",
    # 定义 Agent 可调用的支付函数 schema
    functionSchema={
        "functions": [
            {
                "name": "make_payment",
                "description": "Make a payment to a specified payee",
                "parameters": {
                    "payee_id": {
                        "type": "string",
                        "description": "The merchant/payee identifier",
                        "required": True,
                    },
                    "amount": {
                        "type": "number",
                        "description": "Payment amount in USD",
                        "required": True,
                    },
                    "reason": {
                        "type": "string",
                        "description": "Why this payment is being made",
                        "required": True,
                    },
                },
            }
        ]
    },
)

print(f"Action group created: {action_response['agentActionGroup']['actionGroupId']}")

# 3. 准备 Agent(编译防护规则和 action schema)
client.prepare_agent(agentId=agent_id)

# 4. 创建 Agent Alias 用于调用
alias_response = client.create_agent_alias(
    agentId=agent_id,
    agentAliasName="production",
)

alias_id = alias_response["agentAlias"]["agentAliasId"]
print(f"Agent alias: {alias_id}")
print("\n配置摘要:")
print("  单笔上限: $50 | 会话上限: $200 | 审批阈值: $30")
print("  允许收款方: amazon.com, stripe-merchant-abc")
print("  超阈值行为: 挂起等待人类审批")

运行后你会得到一个带完整支付防护的 Agent ID。接下来用 Bedrock Agent Runtime 调用它:

runtime_client = boto3.client("bedrock-agent-runtime", region_name="us-east-1")

# 模拟用户请求:买一本 $25 的书(低于审批阈值,应自动放行)
response = runtime_client.invoke_agent(
    agentId=agent_id,
    agentAliasId=alias_id,
    sessionId="session-001",
    inputText="帮我从 amazon.com 买一本《Designing Data-Intensive Applications》,价格 $25",
)

# 读取 Agent 的流式响应
for event in response["completion"]:
    if "chunk" in event:
        print(event["chunk"]["bytes"].decode("utf-8"))

# 再试一个超过审批阈值的请求($45,需人类确认)
response2 = runtime_client.invoke_agent(
    agentId=agent_id,
    agentAliasId=alias_id,
    sessionId="session-002",
    inputText="从 amazon.com 采购一套 Kubernetes 运维手册,$45",
)

for event in response2["completion"]:
    if "chunk" in event:
        print(event["chunk"]["bytes"].decode("utf-8"))
    # 拦截事件会包含 guardrail intervention 信息
    if "guardrailIntervention" in event:
        print("⚠️ 防护栏拦截:", json.dumps(event["guardrailIntervention"], indent=2))

第二个请求因为金额超过 $30 的审批阈值,Agent 不会直接执行支付,而是挂起交易并返回审批请求。这就是 AgentCore Payments 的核心价值——Agent 可以"想花钱",但能不能花由防护规则决定

防护栏不是万能的:需要知道的边界

AgentCore Payments 解决了"Agent 乱花钱"的核心问题,但有几个现实边界值得注意:

白名单维护成本allowedPayees 需要手动维护。如果你的 Agent 需要对接大量动态商户,白名单管理本身就成了一个工程问题。可以考虑用内部商户注册服务动态生成白名单。

审批流的延迟 — 人类审批意味着交易不会即时完成。对于需要秒级响应的场景(如实时竞价),审批阈值要设得足够低,或者用自动规则替代人工确认。

多 Agent 协作场景 — 当前防护规则绑定在单个 Agent 上。如果多个 Agent 协作完成一个采购流程(一个比价、一个下单),每个 Agent 的会话预算是独立的,总额可能超出预期。需要在编排层额外做预算聚合。

防护规则本身的测试 — guardrail 配置是声明式的,但实际拦截行为取决于 Agent 的推理路径。建议用一组测试 prompt(故意触发超限、非法收款方等场景)验证防护是否按预期生效,类似对 API 做安全测试。

上手清单

如果你准备在项目中引入 agentic payments,按这个顺序推进:

  1. 先定义风险边界 — 列出你能接受的最大单笔金额、日累计金额、允许的收款方类型。这些数字直接决定 guardrail 参数。
  2. 从窄场景开始 — 先让 Agent 只能做一种支付(比如续费订阅),验证防护规则生效后再扩展到更多场景。
  3. 设置审批通知通道 — 配好 SNS/Slack/邮件通知,让审批请求能及时触达负责人,否则挂起的交易会变成沉默的失败。
  4. 做对抗测试 — 用"帮我买最贵的版本""绕过限制分三次买"等 prompt 主动测试防护强度。
  5. 监控审计日志 — CloudTrail 和 Bedrock 的 invocation logs 要接入分析管道,拦截事件和成功交易都需要可追溯。

Agent 支付不是"能不能做"的问题,而是"怎么做才不会失控"。AgentCore Payments 把防护从可选插件变成了内置机制——这应该是所有 agentic payment 系统的默认起点。


相关推荐