

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 架构约束
<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）
+ 参数类型会自动从操作架构映射到 Cedar 类型。

下表显示了 7 种基本 JSON 架构类型和 Cedar 类型之间的对应关系：


| JSON 架构 | 雪松 | 注意 | 
| --- | --- | --- | 
|  `string`  |  `String`  |  | 
|  `integer`  |  `Long`  |  | 
|  `boolean`  |  `Bool`  |  | 
|  `number`  |  `Decimal`  | Decimal 是 Cedar 中的一种扩展类型，它与 IEEE 浮点数不完全匹配，因此数字将被截断为 Cedar 表示形式 | 
|  `object`  |  `Record`  | 类型对应关系以递归方式应用于属性，`required`属性列表用于决定记录的哪些属性是必需的 | 
|  `array`  |  `Set`  | Cedar `Set` 没有项目顺序的概念，因此 JSON 数组中项目的顺序不会转换为 Cedar | 
|  `null`  |  `Entity`  | 由于 Cedar 对单独的类型没有 1:1 的匹配`null`，因此架构将包含一个唯一的实体来表示每种类型 `null` | 

将此表视为高级概述。有关详细和细致入微的用例的更多信息，请参阅[上的开源 MCP 架构生成器](https://github.com/cedar-policy/cedar-for-agents/tree/main/rust/cedar-policy-mcp-schema-generator)。 GitHub

## 你不能做什么
<a name="policy-limitations"></a>
+ 无法引用 AgentCore 命名空间之外的实体类型
+ 无法访问除之外的上下文字段`context.input`（`context.output`只能与护栏一起使用）
+ 无法在上使用自定义属性 OAuthUser （改用标签）
+ 无法在策略中定义新的实体类型
+ 不能使用浮点数。Cedar 没有浮点类型，因此将分数值表示为`decimal("…​")`，它支持不超过 4 位小数
+ 不能使用正则表达式。模式匹配仅限于使用`*`通配`like`符的运算符。有关更多信息，请参阅[通配符的工作原](example-policies-action-resource.md#example-policies-action-resource-wildcards)理 