本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon 已验证权限升级到 Cedar 4 常见问题解答
Amazon Verified Permissions 正在将其使用的 Cedar 版本从版本 2 升级到版本 4。Cedar 是您用来在策略存储库中编写策略、策略模板和架构的开源语言。借助已验证权限中的 Cedar 4 支持,您可以使用is
操作员和实体标签等新功能来编写更具表现力的策略。
Amazon 已验证权限会自动将策略存储升级到 Cedar 4。但是,为Cedar 2编写的某些策略、架构和授权请求与Cedar 4不兼容。如果您的保单存储是这种情况,那么我们不会自动对其进行升级。在升级到 Cedar 4 之前,您可能需要对策略、策略模板、架构或应用程序代码进行更改。
主题
为什么有些策略、策略模板和架构与 Cedar 4 不兼容?
自Cedar 2以来,Cedar团队已经进行了几项不向后兼容的更改,以修复错误并简化语言。这些更改包括:
策略、策略模板和架构的语法更改
更精确的策略验证器,可以检测到更多错误
对内置函数行为的改变,比如
isInRange
有关向后不兼容的更改的完整列表,请查找 Cedar 变更日志(*)
中标记为的项目。
如何判断我的保单商店使用的是 Cedar 2 还是 Cedar 4?
您可以使用 Amazon Verified Permissions 控制台或使用GetPolicyStore操作来查看您的策略商店使用的 Cedar 版本。
注意
同一地区的所有保单商店都使用相同 AWS 账户 版本的 Cedar。
如何升级到 Cedar 4?
亚马逊验证权限已将大多数客户升级到 Cedar 4。如果您从未创建过策略存储,那么您创建的任何新策略存储都将使用 Cedar 4。如果您是现有客户,那么我们可能已经将您升级到 Cedar 4。请参阅 如何判断我的保单商店使用的是 Cedar 2 还是 Cedar 4? ,查看您的保单商店使用的是哪个版本的 Cedar。
如果您尚未升级,则验证权限会在您的一个策略存储中检测到与 Cedar 4 不兼容的策略、策略模板、架构或授权请求。我们将在 2025 年晚些时候向您发送一封电子邮件通知,说明哪些资源不兼容。要更快地升级,请使用开箱 支持。
重要
同一个保单存储库 AWS 账户 使用相同版本的 Cedar。如果您账户中的一个保单存储与 Cedar 4 不兼容,则您不能在该账户的任何保单存储区中使用 Cedar 4。
我可以将我的保单商店从 Cedar 4 降级到 Cedar 2 吗?
不是。 如果您在保单商店升级到 Cedar 4 后遇到问题,请使用打开案例 支持。
为什么我收到一条错误消息,说我的策略存储已配置为 Cedar 2?
Amazon 验证权限的某些功能依赖于 Cedar 4 中的新功能。如果您的政策存储库不使用 Cedar 4,则无法使用以下 API 字段:
-
在IsAuthorizedBatchIsAuthorized、IsAuthorizedWithToken和BatchIsAuthorizedWithToken操作中:
datetime
,decimal
或者attributes
或context
字段中的duration
值
在升级策略存储之前,您不能在 Cedar 2 之后引入的策略、策略模板或架构中使用语法或数据类型。
如何使我的架构与 Cedar 4 兼容?
您可以使用已验证权限控制台中的代码编辑器来查看哪些错误导致您的架构无法用于 Cedar 4。
重要
即使您的策略存储使用 Cedar 2,Amazon 验证权限控制台中的代码编辑器也始终显示来自 Cedar 4 的错误和警告。您可以使用保存更改按钮或已验证权限 API 继续进行与 Cedar 4 不兼容的架构更新。
在控制台中查看架构的错误
-
登录 AWS Management Console 并通过 verif iedPermissions 打开亚马逊验证
权限控制台。 -
在导航窗格中,选择策略存储,然后选择要检查的策略存储。
-
在导航窗格中选择 “架构”。
-
选择 Edit schema。
-
选择 JSON 模式。
-
将鼠标悬停在代码编辑器左侧边框中的红色错误图标上。错误消息显示在工具提示中。
以下是您可能遇到的一些常见错误以及如何解决这些错误:
- 无法从 JSON 解析架构:`
field-name
-
使用 Cedar 2,您可以在架构的某些部分(例如类型定义)中包含任意字段,即使它们作为 Cedar 架构的一部分没有任何意义。在 Cedar 4 中,不再允许这样做。要解决此错误,请
field-name
从 JSON 架构中移除名为的字段。有关有效架构字段的列表,请参阅 Cedar 文档。 - 未知的扩展类型 `
extension-name
` -
在 Cedar 2 中,当你声明的属性
type
为时Extension
,你可以为该name
字段指定任何值,无论该值是否为有效的扩展类型名称。现在,这是 Cedar 4 的错误。要解决此问题,请extension-name
替换为有效的扩展类型名称。您可以在 C edar 文档中找到有效的扩展类型名称列表。