本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
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 版本。
注意
同一地区的所有保单商店都使用相同 Amazon Web Services 账户 版本的 Cedar。
如何升级到 Cedar 4?
亚马逊验证权限已将大多数客户升级到 Cedar 4。如果您从未创建过策略存储,那么您创建的任何新策略存储都将使用 Cedar 4。如果您是现有客户,那么我们可能已经将您升级到 Cedar 4。查看 如何判断我的保单商店使用的是 Cedar 2 还是 Cedar 4? 您的保单商店使用的是哪个版本的 Cedar。
如果您尚未升级,则验证权限会在您的一个策略存储中检测到与 Cedar 4 不兼容的策略、策略模板、架构或授权请求。我们将在 2025 年晚些时候向您发送一封电子邮件通知,说明哪些资源不兼容。要更快地升级,请使用开箱 Amazon Web Services 支持。
重要
同一个保单存储库 Amazon Web Services 账户 使用相同版本的 Cedar。如果您账户中的一个保单存储与 Cedar 4 不兼容,则您不能在该账户的任何保单存储区中使用 Cedar 4。
我可以将我的保单商店从 Cedar 4 降级到 Cedar 2 吗?
不是。 如果您在保单商店升级到 Cedar 4 后遇到问题,请使用打开案例 Amazon Web Services 支持。
为什么我收到一条错误消息,说我的策略存储已配置为 Cedar 2?
Amazon 验证权限的某些功能依赖于 Cedar 4 中的新功能。如果您的政策存储库不使用 Cedar 4,则无法使用以下 API 字段:
-
在IsAuthorizedBatchIsAuthorized、IsAuthorizedWithToken和BatchIsAuthorizedWithToken操作中:
datetime,decimal或者attributes或context字段中的duration值
在升级策略存储之前,您不能在 Cedar 2 之后引入的策略、策略模板或架构中使用语法或数据类型。
如何使我的架构与 Cedar 4 兼容?
已验证权限控制台可以自动修复架构中的一些兼容性问题。如果您的架构无法自动修复,控制台将显示错误列表供您手动修复。
重要
即使您的策略存储使用 Cedar 2,Amazon 验证权限控制台中的代码编辑器也始终显示来自 Cedar 4 的错误和警告。您可以使用保存更改按钮或已验证权限 API 继续进行与 Cedar 4 不兼容的架构更新。
使用控制台修复架构
-
登录 Amazon Web Services Management Console 并通过 verif iedPermissions 打开亚马逊验证
权限控制台。 -
在导航窗格中,选择策略存储,然后选择要检查的策略存储。
-
在导航窗格中选择 “架构”。
-
如果你的架构可以自动修复,你会看到一个标语,上面写着 “点击'修复'预览兼容版本”。选择 “修复”。
-
查看对架构所做的更改,然后单击 “预览更新的架构”。
-
查看更新的架构,然后单击 “保存更改”。
如果您的架构无法自动修复,则可以在控制台中看到需要自行修复的错误列表。
-
如上所述,打开 “编辑架构” 页面。
-
选择 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 文档中找到有效的扩展类型名称列表。
如果您仍然不确定如何解决架构中的错误,请联系 Amazon Web Services 支持
如何使我的保单和模板与 Cedar 4 兼容?
已验证权限控制台会显示您的策略或模板中存在的任何导致其与 Cedar 4 不兼容的错误。
在控制台中查看策略或模板的错误
-
登录 Amazon Web Services Management Console 并通过 verif iedPermissions 打开亚马逊验证
权限控制台。 -
在导航窗格中,选择策略存储,然后选择要检查的策略存储。
-
根据需要在导航窗格中选择策略或策略模板。
-
选择不兼容的策略或模板。
-
选择 “编辑”
-
将鼠标悬停在代码编辑器左侧边框中的红色错误图标上。错误消息显示在工具提示中。
以下是您可能遇到的一些常见错误以及如何解决这些错误:
- 策略中禁止使用空集文字
-
在 Cedar 2 中,你可以使用语法
mySet == []来检查集合是否为空。在 Cedar 4 中,使用此语法的策略不再针对架构进行验证。mySet == []在您的保单中替换为mySet.isEmpty()。