本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon 验证权限与 Cedar 政策语言之间的区别
Amazon Verified Permissions 使用 Cedar 策略语言引擎来执行其授权任务。但是,原生 Cedar 实现与 Verified Permissions 中的 Cedar 实现之间存在一些差异。本主题揭示了二者之间存在的差异。
命名空间定义
Verified Permissions 的 Cedar 实现与原生 Cedar 实现存在以下区别:
-
Verified Permissions 仅支持在策略存储中定义的架构中的一个命名空间
。 -
Verified Permissions 不允许您创建空字符串或包含以下值的命名空间
: aws
amazon
、或cedar
。
策略模板支持
Verified Permissions 和 Cedar 都只允许 principal
和 resource
范围内的占位符。但是,Verified Permissions 还要求 principal
和 resource
均不能不受限制。
以下策略在 Cedar 中有效,但由于 principal
不受限制,会被 Verified Permissions 拒绝。
permit(principal, action == Action::"view", resource == ?resource);
以下两个示例在 Cedar 和 Verified Permissions 中均有效,因为 principal
和 resource
都存在限制条件。
permit(principal == User::"alice", action == Action::"view", resource == ?resource);
permit(principal == ?principal, action == Action::"a", resource in ?resource);
架构支持
已验证权限要求所有架构JSON密钥名称均为非空字符串。Cedar 在少数情况下允许使用空字符串,例如用于属性或命名空间。
扩展类型支持
Verified Permissions 支持策略中的 Cedar 扩展类型
扩展类型包括定点(decimal
)和 IP 地址(ipaddr
)数据类型。
实体的雪松JSON格式
目前,Verified Permissions 要求您使用为定义的结构(一个元素数组)传递授权请求中要考虑的EntityItem实体列表。EntitiesDefinitionVerified Permissions 目前不支持在 C edar JSON 格式
操作组定义
Cedar 授权方法要求提供实体列表,在对策略进行授权请求评估时需要考虑这些实体。
您可以在架构中定义应用程序使用的操作和操作组。但是,Cedar 不将架构作为评估请求的一部分,仅使用架构来验证您提交的策略和策略模板。由于 Cedar 在评估请求期间不引用架构,因此即使您在架构中定义了操作组,您也必须将所有操作组的列表作为必须传递给授权API操作的实体列表的一部分。
Verified Permissions 可以为您执行此操作。您在架构中定义的所有操作组都会自动附加到您传递至的实体列表中,作为 IsAuthorized
或 IsAuthorizedWithToken
操作的参数。
实体格式设置
“已验证权限” 中实体的JSON格式与 Cedar 在以下方面有所不同:
-
在 “已验证权限” 中,JSON对象必须将其所有键值对封装在名称为的JSON对象中。
Record
-
已验证权限中的JSON列表必须封装在JSON键值对中,其中键名是,值是
Set
Cedar 的原始JSON列表。 -
对于
String
Long
、和Boolean
类型名称,Cedar 中的每个键值对都由 “已验证权限” 中的JSON对象替换。该对象的名称是原始键名称。在JSON对象内部,有一个键值对,其中键名是标量值(String
、或Boolean
)的类型名称Long
,值是来自 Cedar 实体的值。 -
Cedar 实体和 Verified Permissions 实体的语法格式存在以下不同:
Cedar 格式 Verified Permissions 格式 uid
Identifier
type
EntityType
id
EntityId
attrs
Attributes
parents
Parents
例 -清单
以下示例分别显示了如何在 Cedar 和已验证权限中表示实体列表。
例 -政策评估
以下示例分别显示了 Cedar 和 Verified Permissions 中用于评估授权请求中的策略的实体是如何格式化的。
长度和大小限制
Verified Permissions 支持以策略存储的形式存储您的架构、策略和策略模板。这种存储方式会导致 Verified Permissions 施加一些与 Cedar 无关的长度和大小限制。
对象 | Verified Permissions 限制(以字节为单位) | Cedar 极限 |
---|---|---|
策略大小¹ | 10000 | 无 |
内联策略描述 | 150 | 不适用于 Cedar |
策略模板大小 | 10000 | 无 |
架构大小 | 100000 | 无 |
实体类型 | 200 | 无 |
策略 ID | 64 | 无 |
策略模板 ID | 64 | 无 |
实体 ID | 200 | 无 |
策略存储 ID | 64 | 不适用于 Cedar |
¹ Verified Permissions 中的每个策略存储都有策略限制,具体取决于策略存储中创建的策略的主体、操作和资源的总组合大小。与单个资源相关的所有策略的总大小不能超过 200000 字节。在计算模板链接策略的大小时,策略模板的大小仅计算一次,再加上用于实例化每个模板链接策略的每组参数的大小。