

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

# Amazon 已验证权限升级到 Cedar 4 常见问题解答
<a name="cedar4-faq"></a>

 Amazon Verified Permissions 正在将其使用的 Cedar 版本从版本 2 升级到版本 4。Cedar 是您用来在策略存储库中编写策略、策略模板和架构的开源语言。借助已验证权限中的 Cedar 4 支持，您可以使用`is`操作员和实体标签等新功能来编写更具表现力的策略。

 Amazon 已验证权限会自动将策略存储升级到 Cedar 4。但是，为Cedar 2编写的某些策略、架构和授权请求与Cedar 4不兼容。如果您的保单存储是这种情况，那么我们不会自动对其进行升级。在升级到 Cedar 4 之前，您可能需要对策略、策略模板、架构或应用程序代码进行更改。

**Topics**
+ [

## 为什么有些策略、策略模板和架构与 Cedar 4 不兼容？
](#why-are-some-policies-not-compatible-with-cedar-4)
+ [

## 如何判断我的保单商店使用的是 Cedar 2 还是 Cedar 4？
](#how-do-i-tell-cedar-2-or-cedar-4)
+ [

## 如何升级到 Cedar 4？
](#how-do-i-upgrade-to-cedar-4)
+ [

## 我可以将我的保单商店从 Cedar 4 降级到 Cedar 2 吗？
](#can-i-downgrade-from-cedar-4-to-cedar-2)
+ [

## 为什么我收到一条错误消息，说我的策略存储已配置为 Cedar 2？
](#why-am-i-receiving-an-error-message-policy-store-configured-for-cedar-4)
+ [

## 如何使我的架构与 Cedar 4 兼容？
](#how-do-i-make-my-schema-compatible)
+ [

## 如何使我的保单和模板与 Cedar 4 兼容？
](#how-do-i-make-my-policies-compatible)

## 为什么有些策略、策略模板和架构与 Cedar 4 不兼容？
<a name="why-are-some-policies-not-compatible-with-cedar-4"></a>

 自Cedar 2以来，Cedar团队已经进行了几项不向后兼容的更改，以修复错误并简化语言。这些更改包括：
+ 策略、策略模板和架构的语法更改
+ 更精确的策略验证器，可以检测到更多错误
+ 更改内置函数的行为，例如 `isInRange`

 [有关向后不兼容的更改的完整列表，请查找 Cedar 变更日志`(*)`中标有标注的项目。](https://github.com/cedar-policy/cedar/blob/main/cedar-policy/CHANGELOG.md)

## 如何判断我的保单商店使用的是 Cedar 2 还是 Cedar 4？
<a name="how-do-i-tell-cedar-2-or-cedar-4"></a>

 您可以使用 Amazon Verified Permissions 控制台或使用GetPolicyStore操作来查看您的策略商店使用的 Cedar 版本。

**注意**  
 同一地区的所有保单商店都使用相同 AWS 账户 版本的 Cedar。

------
#### [ Console ]

**查看策略存储库的 Cedar 版本（控制台）**

1.  登录 AWS 管理控制台 并打开 Amazon 验证权限控制台，网址为[https://console.aws.amazon.com/verifiedpermissions/](https://console.aws.amazon.com/verifiedpermissions)。

1.  在导航窗格中，选择**策略**存储，然后选择要检查的策略存储。

1.  在导航窗格中，选择**设置**。

1.  在 “**详细信息**” 框中，找到 **Cedar 版本**字段。

 该字段显示您的策略存储`CEDAR_2`是否使用 Cedar 2，`CEDAR_4`是否使用 Cedar 4。

------
#### [ CLI ]

**查看策略库的 Cedar 版本 (AWS CLI)**

1.  安装并配置 AWS Command Line Interface (AWS CLI)（如果尚未安装）。有关更多信息，请参阅[安装或更新 AWS CLI的最新版本](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)。

1.  使用 `get-policy-store` 命令。在以下示例中，*policy-store-id*使用您的策略存储库的标识符替换：

   ```
   aws verifiedpermissions get-policy-store \
     --policy-store-id policy-store-id
   ```

 输出中的`cedarVersion`字段显示策略存储正在使用哪个版本的 Cedar。例如：

```
{
    "policyStoreId": "ABCDEFG12345678abcdefg",
    "arn": "arn:aws:verifiedpermissions::111122223333:policy-store/ABCDEFG12345678abcdefg",
    "validationSettings": {
        "mode": "STRICT"
    },
    "createdDate": "2025-06-03T13:09:47.752255+00:00",
    "lastUpdatedDate": "2025-06-03T13:09:47.752255+00:00",
    "deletionProtection": "ENABLED",
    "cedarVersion": "CEDAR_2"
}
```

 该字段显示您的策略存储`CEDAR_2`是否使用 Cedar 2，`CEDAR_4`是否使用 Cedar 4。

------

## 如何升级到 Cedar 4？
<a name="how-do-i-upgrade-to-cedar-4"></a>

 亚马逊验证权限已将大多数客户升级到 Cedar 4。如果您从未创建过策略存储，那么您创建的任何新策略存储都将使用 Cedar 4。如果您是现有客户，那么我们可能已经将您升级到 Cedar 4。查看[如何判断我的保单商店使用的是 Cedar 2 还是 Cedar 4？](#how-do-i-tell-cedar-2-or-cedar-4)您的保单商店使用的是哪个版本的 Cedar。

 如果您尚未升级，则验证权限会在您的一个策略存储中检测到与 Cedar 4 不兼容的策略、策略模板、架构或授权请求。我们将在 2025 年晚些时候向您发送一封电子邮件通知，说明哪些资源不兼容。要更快地升级，请使用开箱 支持。

**重要**  
 同一个保单存储库 AWS 账户 使用相同版本的 Cedar。如果您账户中的一个保单存储与 Cedar 4 不兼容，则您不能在该账户的任何保单存储区中使用 Cedar 4。

## 我可以将我的保单商店从 Cedar 4 降级到 Cedar 2 吗？
<a name="can-i-downgrade-from-cedar-4-to-cedar-2"></a>

 不是。 如果您在保单商店升级到 Cedar 4 后遇到问题，请使用打开案例 支持。

## 为什么我收到一条错误消息，说我的策略存储已配置为 Cedar 2？
<a name="why-am-i-receiving-an-error-message-policy-store-configured-for-cedar-4"></a>

 Amazon 验证权限的某些功能依赖于 Cedar 4 中的新功能。如果您的政策存储库不使用 Cedar 4，则无法使用以下 API 字段：
+  在IsAuthorizedBatchIsAuthorized、IsAuthorizedWithToken和BatchIsAuthorizedWithToken操作中：
  + `datetime`，`decimal`或者`attributes`或`context`字段中的`duration`值

 在升级策略存储之前，您不能在 Cedar 2 之后引入的策略、策略模板或架构中使用语法或数据类型。

## 如何使我的架构与 Cedar 4 兼容？
<a name="how-do-i-make-my-schema-compatible"></a>

 已验证权限控制台可以自动修复架构中的一些兼容性问题。如果您的架构无法自动修复，控制台将显示错误列表供您手动修复。

**重要**  
 即使您的策略存储使用 Cedar 2，Amazon 验证权限控制台中的代码编辑器也始终显示来自 Cedar 4 的错误和警告。您可以使用**保存更改**按钮或已验证权限 API 继续进行与 Cedar 4 不兼容的架构更新。

**使用控制台修复架构**

1.  登录 AWS 管理控制台 并通过 verif [iedPermissions 打开亚马逊验证](https://console.aws.amazon.com/verifiedpermissions)权限控制台。

1.  在导航窗格中，选择**策略存储**，然后选择要检查的策略存储。

1.  在导航窗格中选择 “**架构**”。

1.  如果你的架构可以自动修复，你会看到一个标语，上面写着 “点击'修复'预览兼容版本”。选择 “**修复**”。

1.  查看对架构所做的更改，然后单击 “**预览更新的架构**”。

1.  查看更新的架构，然后单击 “**保存更改**”。

 如果您的架构无法自动修复，则可以在控制台中看到需要自行修复的错误列表。

1.  如上所述，打开 **“编辑架构**” 页面。

1.  选择 **JSON 模式**。

1.  将鼠标悬停在代码编辑器左侧边框中的红色错误图标上。错误消息显示在工具提示中。

 以下是您可能遇到的一些常见错误以及如何解决这些错误：

**无法从 JSON 解析架构:`*field-name***  
 使用 Cedar 2，您可以在架构的某些部分（例如类型定义）中包含任意字段，即使它们作为 Cedar 架构的一部分没有任何意义。在 Cedar 4 中，不再允许这样做。要解决此错误，请*field-name*从 JSON 架构中移除名为的字段。有关有效架构字段的列表，请参阅 [Cedar 文档](https://docs.cedarpolicy.com/schema/json-schema.html)。

**未知的扩展类型 `*extension-name*`**  
 在 Cedar 2 中，当你声明的属性`type`为时`Extension`，你可以为该`name`字段指定任何值，无论该值是否为有效的扩展类型名称。现在，这是 Cedar 4 的错误。要解决此问题，请*extension-name*替换为有效的扩展类型名称。您可以在 C [edar 文档](https://docs.cedarpolicy.com/policies/syntax-datatypes.html#datatype-extension)中找到有效的扩展类型名称列表。

 如果您仍然不确定如何解决架构中的错误，请联系 支持 

## 如何使我的保单和模板与 Cedar 4 兼容？
<a name="how-do-i-make-my-policies-compatible"></a>

 已验证权限控制台会显示您的策略或模板中存在的任何导致其与 Cedar 4 不兼容的错误。

**在控制台中查看策略或模板的错误**

1.  登录 AWS 管理控制台 并通过 verif [iedPermissions 打开亚马逊验证](https://console.aws.amazon.com/verifiedpermissions)权限控制台。

1.  在导航窗格中，选择**策略存储**，然后选择要检查的策略存储。

1.  根据需要在导航窗格中选择**策略****或策略模板**。

1.  选择不兼容的策略或模板。

1.  选择**编辑**。

1.  将鼠标悬停在代码编辑器左侧边框中的红色错误图标上。错误消息显示在工具提示中。

 以下是您可能遇到的一些常见错误以及如何解决这些错误：

**策略中禁止使用空集文字**  
 在 Cedar 2 中，你可以使用语法`mySet == []`来检查集合是否为空。在 Cedar 4 中，使用此语法的策略不再针对架构进行验证。`mySet == []`在您的保单中替换为`mySet.isEmpty()`。