

# 架构约束
<a name="policy-schema-constraints"></a>

Amazon Bedrock AgentCore Gateway 的策略必须根据网关的 MCP 工具清单自动生成的特定 Cedar 架构进行验证。此架构定义了您的策略中可能包含的内容。

**Topics**
+ [主要类型](#policy-principal-type)
+ [资源类型](#policy-resource-type)
+ [操作](#policy-actions)
+ [上下文](#policy-context)
+ [你不能做什么](#policy-limitations)

## 主要类型
<a name="policy-principal-type"></a>

主体类型取决于为 AgentCore 网关配置的身份验证方法：

 `AgentCore::OAuthUser`   
+ 用于 OAuth-authenticated 网关
+ 有`id`属性（来自 JWT 订阅声明）
+ 支持 OAuth 声明的标签（用户名、范围、角色等）

 `AgentCore::IamEntity`   
+ 用于 IAM-authenticated 网关（AWS\_IAM 授权机构）
+ 具有包含来电者的 IAM ARN 的`id`属性
+ 不支持标签；使用模式匹配`principal.id`进行访问控制

## 资源类型
<a name="policy-resource-type"></a>
+ 必须是 `AgentCore::Gateway` 
+ 代表 MCP 网关实例
+ 可以按类型 (`is`) 或特定的 ARN () 进行匹配 `==`
+ 必须使用特定的 ARN 来指代特定的操作

## 操作
<a name="policy-actions"></a>
+ 每个 MCP 工具都变成一个动作：`AgentCore::Action::"ToolName"`
+ 所有工具操作都继承自 CallTool → Mcp 层次结构
+ 示例：`Action::"RefundTool___process_refund"`是一个 CallTool

## 上下文
<a name="policy-context"></a>
+ 只有可用的上下文是 `context.input` 
+ 包含 MCP 清单中定义的工具输入参数
+ 每个工具都有一个键入的输入结构（例如 RefundTool \_\_\_process\_refunInput）
+ 参数类型会自动从 JSON 架构映射到 Cedar 类型：
  + 字符串 → 字符串
  + 整数 → 长整数
  + 布尔值 → 布尔
  + 数字 → 十进制

## 你不能做什么
<a name="policy-limitations"></a>
+ 无法引用 AgentCore 命名空间之外的实体类型
+ 无法访问除之外的上下文字段`context.input`（`context.output`只能与护栏一起使用）
+ 无法在上使用自定义属性 OAuthUser （改用标签）
+ 无法在策略中定义新的实体类型