

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# Amazon Verified Permissions 升級到 Cedar 4 常見問答集
<a name="cedar4-faq"></a>

 Amazon Verified Permissions 正在將其使用的 Cedar 版本從第 2 版升級至第 4 版。Cedar 是您用來撰寫政策、政策範本和政策存放區中結構描述的開放原始碼語言。透過 Verified Permissions 中的 Cedar 4 支援，您可以使用`is`運算子和實體標籤等新功能來撰寫更具表達性的政策。

 Amazon Verified Permissions 會自動將政策存放區升級至 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 團隊自 Cedar 2 以來已進行數項回溯不相容的變更，以修正錯誤並簡化語言。這些變更包括：
+ 政策、政策範本和結構描述的語法變更
+ 更精確的政策驗證程式，可偵測更多錯誤
+ 內建函數的行為變更，例如 `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 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/verifiedpermissions/](https://console.aws.amazon.com/verifiedpermissions) 的 Amazon Verified Permissions 主控台。

1.  從導覽窗格中，選擇**政策存放**區，然後選擇您要檢查的政策存放區。

1.  在導覽窗格中選擇 **Settings (設定)**。

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>

 Amazon Verified Permissions 已將大多數客戶升級至 Cedar 4。如果您從未建立政策存放區，則您建立的任何新政策存放區都會使用 Cedar 4。如果您是現有客戶，則可能已將您升級至 Cedar 4。請參閱 [如何判斷我的政策存放區是使用 Cedar 2 還是 Cedar 4？](#how-do-i-tell-cedar-2-or-cedar-4) 以檢查您的政策存放區使用的 Cedar 版本。

 如果您尚未升級，則 Verified Permissions 會在與 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 Verified Permissions 的某些功能依賴 Cedar 4 中的新功能。如果您的政策存放區不使用 Cedar 4，則無法使用下列 API 欄位：
+  在 IsAuthorized、 BatchIsAuthorizedIsAuthorizedWithToken和 BatchIsAuthorizedWithToken操作中：
  + `datetime`、 `decimal`或 欄位中`duration`的值 `attributes` `context` 

 在升級政策存放區之前，您無法在 Cedar 2 之後推出的政策、政策範本或結構描述中使用語法或資料類型。

## 如何使我的結構描述與 Cedar 4 相容？
<a name="how-do-i-make-my-schema-compatible"></a>

 Verified Permissions 主控台可以自動修正結構描述中的一些相容性問題。如果您的結構描述無法自動修正，主控台會顯示錯誤清單供您手動修正。

**重要**  
 Amazon Verified Permissions 主控台中的程式碼編輯器一律會顯示來自 Cedar 4 的錯誤和警告，即使您的政策存放區使用 Cedar 2。您可以使用**儲存變更**按鈕或驗證許可 API，繼續進行與 Cedar 4 不相容的結構描述更新。

**使用主控台修正結構描述**

1.  登入 AWS 管理主控台 ，並在[已驗證的許可](https://console.aws.amazon.com/verifiedpermissions)中開啟 Amazon Verified Permissions 主控台。

1.  從導覽窗格中，選擇**政策存放**區，然後選擇您要檢查的政策存放區。

1.  在導覽窗格中選擇**結構描述**。

1.  如果您的結構描述可以自動修正，您會看到「按一下「固定」來預覽相容版本」的橫幅。選取**修正**。

1.  檢閱對您的結構描述所做的變更，然後按一下**預覽更新的結構描述**。

1.  檢閱更新的結構描述，然後按一下**儲存變更**。

 如果您的結構描述無法自動修正，您可以在主控台中看到要自行修正的錯誤清單。

1.  開啟上述的**編輯結構描述**頁面。

1.  選取 **JSON 模式**。

1.  將滑鼠游標移至程式碼編輯器左側裝訂邊中的紅色錯誤圖示。錯誤訊息會顯示在工具提示中。

 以下是您可能會遇到的一些常見錯誤，以及如何解決這些錯誤：

**無法從 JSON 剖析結構描述：`*field-name*`**  
 使用 Cedar 2，您可以在結構描述的部分中包含任意欄位，例如類型定義，即使它們在 Cedar 結構描述中沒有任何意義。在 Cedar 4 中，不再允許這種情況。若要解決此錯誤，請從 JSON 結構描述中移除名為 *field-name* 的欄位。如需有效結構描述欄位的清單，請參閱 [Cedar 文件](https://docs.cedarpolicy.com/schema/json-schema.html)。

**不明的延伸模組類型 `*extension-name*`**  
 在 Cedar 2 中，當您宣告屬性`type`為 時`Extension`，您可以指定 `name` 欄位的任何值，無論該值是否為有效的延伸類型名稱。這是 Cedar 4 的錯誤。若要解決此問題，請將 *extension-name* 取代為有效的延伸類型名稱。您可以在 [Cedar 文件](https://docs.cedarpolicy.com/policies/syntax-datatypes.html#datatype-extension)中找到有效延伸類型名稱的清單。

 如果您仍然不確定如何解決結構描述中的錯誤，請聯絡 支援 

## 如何使我的政策和範本與 Cedar 4 相容？
<a name="how-do-i-make-my-policies-compatible"></a>

 Verified Permissions 主控台會顯示政策或範本中導致它與 Cedar 4 不相容的任何錯誤。

**在主控台中檢視政策或範本的錯誤**

1.  登入 AWS 管理主控台 ，並在[已驗證的許可](https://console.aws.amazon.com/verifiedpermissions)中開啟 Amazon Verified Permissions 主控台。

1.  從導覽窗格中，選擇**政策存放**區，然後選擇您要檢查的政策存放區。

1.  視需要在導覽窗格中選擇**政策**或**政策範本**。

1.  選取不相容的政策或範本。

1.  選取**編輯** 

1.  將滑鼠游標移至程式碼編輯器左側裝訂邊中的紅色錯誤圖示。錯誤訊息會顯示在工具提示中。

 以下是您可能會遇到的一些常見錯誤，以及如何解決這些錯誤：

**政策中禁止空白集常值**  
 在 Cedar 2 中，您可以使用 語法`mySet == []`來檢查集合是否為空。使用 Cedar 4 時，使用此語法的政策將不再針對結構描述進行驗證。將政策`mySet == []`中的 取代為 `mySet.isEmpty()`。