本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
中的 “政策” 入门 AgentCore
在本教程中,您将学习如何使用 AgentCore CLI 设置策略并将其与亚马逊 Bedrock AgentCore Gateway 集成。 AgentCore 您将使用Cedar政策创建退款处理工具,该工具执行退款金额的业务规则。
先决条件
在开始之前,请确保您具备以下条件:
-
AWS 配置了凭据的账户。要配置凭证,您可以按照 AWS CLI 入门中的步骤安装和使用 AWS 命令行界面。
-
Node.js 已安装 20 多个
-
创建角色、Lambda 函数、策略引擎和使用 Amazon Bedrock 的 IAM 权限 AgentCore
-
处理退款请求的 Lambda 函数。您可以使用现有函数,也可以为本教程创建一个函数。记下步骤 2 中使用的函数 ARN。
AgentCore CLI 会在部署期间检查 CDK 引导堆栈。如果需要引导,则交互式部署会要求确认。agentcore deploy --yes用于自动授权。
第 1 步:设置和安装
安装 C AgentCore LI:
npm install -g @aws/agentcore
创建一个新 AgentCore 项目:
例
第 2 步:添加带有策略引擎的网关
使用 AgentCore CLI 向您的项目添加网关、Lambda 函数目标和策略引擎。
添加网关
创建没有入站授权的网关(为简单起见,请参阅本教程),并将您的代理连接到该网关:
例
使用退款工具添加 Lambda 函数目标
使用定义退款处理工具的工具架构将您的 Lambda 函数注册为网关目标。在您的项目目录中创建包含以下内容的refund_tools.json文件:
[ { "name": "process_refund", "description": "Process a customer refund request for a given dollar amount", "inputSchema": { "type": "object", "description": "Input for processing a refund", "properties": { "amount": { "type": "integer", "description": "The refund amount in dollars" } }, "required": ["amount"] } } ]
例
添加策略引擎
创建策略引擎并将其以 ENFORCE 模式连接到网关:
例
创建 Cedar 政策
直接提供 Cedar 政策文件。Cedar 不允许在政策声明中使用通配符资源。这需要分两个阶段部署:首先在没有策略的情况下进行部署以创建网关,然后检索网关 ARN。然后添加策略并重新部署。
-
首先部署网关(参见步骤 3:部署),然后运行 agentcore 状态以获取网关 ARN。
-
在您的项目目录中创建一个
refund_policy.cedar文件,替换上一步中的网关 ARN:permit(principal, action == AgentCore::Action::"RefundTarget___process_refund", resource == AgentCore::Gateway::"<gateway-arn>") when { context.input.amount < 1000 }; -
添加策略并重新部署:
agentcore add policy --name RefundLimit \ --engine RefundPolicyEngine \ --source refund_policy.cedar agentcore deploy
或者,在步骤 3 中部署资源后,您可以根据自然语言描述生成 Cedar 策略:
agentcore add policy --name RefundLimit \ --engine RefundPolicyEngine \ --generate "Only allow refunds under 1000 dollars" \ --gateway PolicyGateway
该--generate标志要求首先部署网关,因为它调用的 AWS API需要网关 ARN 将自然语言转换为 Cedar。这种方法可自动解析网关 ARN,使其成为创建策略的最简单途径。
了解设置
上面的 CLI 命令在您的 AgentCore 项目中配置了多个资源。以下是每个组件的详细说明。
创建网关
agentcore add gateway 命令会创建一个充当您的 MCP 服务器端点的网关。在本教程中,为简单起见,设置会--authorizer-type NONE禁用入站授权。在生产中,使用 IAM 或 JWT 授权来保护您的网关。
添加 Lambda 目标
agentcore 添加网关目标命令将 Lambda 函数注册为网关中的目标。工具架构文件定义了代理可以传递给该函数的输入,例如退款金额。
创建策略引擎
agentcore add policy-engine 命令创建了一个策略引擎——一组用于评估和授权代理工具调用的 Cedar 策略。策略引擎拦截网关边界的所有请求,并根据定义的策略确定是允许还是拒绝每项操作。这提供了代理代码之外的确定性授权,从而确保无论代理如何实施,都要始终如一地执行安全措施。
创建 Cedar 政策
Cedar 是一种开源策略语言,由开发 AWS 用于编写授权策略。agentcore 添加策略命令创建一个 Cedar 策略,用于管理通过网关的工具调用。您可以使用根据自然语言描述生成策略--generate,也可以直接使用提供 Cedar 策略文件。--source
以下是允许 1000 美元以下退款的 Cedar 政策示例:
permit(principal, action == AgentCore::Action::"RefundTarget___process_refund", resource == AgentCore::Gateway::"<gateway-arn>") when { context.input.amount < 1000 };
该政策使用:
-
permit— 允许操作(Cedar 也支持forbid拒绝操作) -
principal— 提出请求的实体 -
action— 正在调用的特定工具 (RefundTarget___process_refund) -
resource— 策略适用的网关实例 -
when状况 — 其他要求(金额必须小于 1000 美元)
将策略附加到网关
agentcore add policy-engine 命令上的--attach-to-gateways和--attach-mode ENFORCE标志以强制模式将策略引擎连接到网关。在此模式中:
-
每个工具调用都会被截获并根据所有策略进行评估
-
默认情况下,除非明确允许,否则所有操作都将被拒绝
-
如果有任何
forbid策略匹配,则拒绝访问(禁胜语义) -
记录政策决策以 CloudWatch 进行监控和合规
这可确保通过网关进行的所有代理操作都受您的安全策略的约束。
步骤 3:部署
将所有资源部署到 AWS:
agentcore deploy
AgentCore CLI 创建网关、注册 Lambda 目标并预置策略引擎。如果您提供了 ARN-based Cedar 策略文件,请在此次部署之后将其添加并再次运行 agentcore deploy 以将其附加。此过程每次部署大约需要 2-3 分钟。
部署完成后,您可以验证资源的状态:
agentcore status
第 4 步:测试策略
通过向网关发送请求来测试策略。由于网关使用--authorizer-type NONE,因此您可以直接使用 curl 发送请求。
代理核心状态输出中显示的网关网址是基本端点。MCP 请求会转到该端点上的/mcp路径,因此在发送请求之前,请先附加/mcp到 URL。
测试 1:退款 500 美元(应该允许)
500美元的退款金额低于1000美元的上限,因此政策引擎允许该请求:
curl -X POST ++<GATEWAY_URL>++/mcp \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"RefundTarget___process_refund","arguments":{"amount":500}}}'
测试 2:退款 2000 美元(应被拒绝)
2000美元的退款金额超过了1000美元的上限,因此政策引擎拒绝了该请求:
curl -X POST ++<GATEWAY_URL>++/mcp \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"RefundTarget___process_refund","arguments":{"amount":2000}}}'
注意
<GATEWAY_URL>替换为 agentcore 状态输出中显示的网关 URL,然后添加。/mcp
你建造了什么
通过本教程,你创建了:
-
MCP 服务器(网关)— 工具的托管端点
-
Lambda target — 在网关中注册的退款处理工具
-
策略引擎 — Cedar-based 策略评估系统
-
雪松政策 ——允许退款低于1000美元的治理规则
问题排查
如果您在设置或测试期间遇到问题,请参阅以下常见问题和解决方案:
| 问题 | 解决方案 |
|---|---|
|
"AccessDeniedException" |
检查 bedrock-agentcore 的 IAM 权限:* |
|
网关没有响应 |
部署后等待 30—60 秒进行 DNS 传播 |
|
部署失败 |
运行 agentcore 状态以检查资源状态并查看错误消息 |
|
政策未执行 |
通过运行 agentcore 状态,验证策略引擎是否已在 ENFORCE 模式下连接 |
|
部署期间出现 Cedar 验证错误 |
Cedar 政策必须使用特定的资源 ARN ——通配符资源(例如 |
|
工具调用意外被拒绝 |
策略引擎正在执行,Cedar 政策拒绝了该请求。验证策略 |
|
部署因策略验证错误而失败 |
默认验证模式同时 |
清理
要移除本教程中创建的资源,请同时移除网关和策略引擎,然后重新部署:
agentcore remove gateway --name PolicyGateway agentcore remove policy-engine --name RefundPolicyEngine agentcore deploy
移除网关不会自动移除其附加的策略引擎。必须使用单独移除策略引擎agentcore remove policy-engine。