Amazon Verified Permissions 升級到 Cedar 4 常見問答集 - Amazon Verified Permissions

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

Amazon Verified Permissions 升級到 Cedar 4 常見問答集

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

Amazon Verified Permissions 會自動將政策存放區升級至 Cedar 4。不過,針對 Cedar 2 撰寫的某些政策、結構描述和授權請求與 Cedar 4 不相容。如果您的政策存放區發生這種情況,則我們不會自動升級。您可能需要變更政策、政策範本、結構描述或應用程式碼,才能升級至 Cedar 4。

為什麼某些政策、政策範本和結構描述與 Cedar 4 不相容?

Cedar 團隊自 Cedar 2 以來已進行數項回溯不相容的變更,以修正錯誤並簡化語言。這些變更包括:

  • 政策、政策範本和結構描述的語法變更

  • 更精確的政策驗證程式,可偵測更多錯誤

  • 內建函數的行為變更,例如 isInRange

如需回溯不相容變更的完整清單,請在 Cedar 變更日誌(*)中尋找標示為 的項目。

如何判斷我的政策存放區是使用 Cedar 2 還是 Cedar 4?

您可以使用 Amazon Verified Permissions 主控台或使用 GetPolicyStore操作來檢查政策存放區使用的 Cedar 版本。

注意

相同 AWS 帳戶 和 區域中的所有政策存放區都使用相同版本的 Cedar。

Console
檢查政策存放區的 Cedar 版本 (主控台)
  1. 登入 AWS 管理主控台 並開啟位於 https://https://console.aws.amazon.com/verifiedpermissions/ 的 Amazon Verified Permissions 主控台。

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

  3. 在導覽窗格中選擇 Settings (設定)

  4. 詳細資訊方塊中,找到 Cedar 版本欄位。

CEDAR_2 如果您的政策存放區使用 Cedar 2,且使用 Cedar 4,CEDAR_4則 欄位會讀取。

CLI
檢查政策存放區的 Cedar 版本 (AWS CLI)
  1. 如果您尚未安裝並設定 AWS Command Line Interface (AWS CLI),請安裝並設定 。如需相關資訊,請參閱安裝或更新最新版本的 AWS CLI

  2. 使用 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?

Amazon Verified Permissions 已將大多數客戶升級至 Cedar 4。如果您從未建立政策存放區,則您建立的任何新政策存放區都會使用 Cedar 4。如果您是現有客戶,則可能已將您升級至 Cedar 4。請參閱 如何判斷我的政策存放區是使用 Cedar 2 還是 Cedar 4? 以檢查您的政策存放區使用的 Cedar 版本。

如果您尚未升級,則 Verified Permissions 會在其中一個與 Cedar 4 不相容的政策存放區中偵測到政策、政策範本、結構描述或授權請求。我們將在 2025 年稍後傳送電子郵件通知給您,說明哪些資源不相容。若要更快升級,請使用 開啟案例 支援。

重要

相同 中的所有政策存放區都 AWS 帳戶 使用相同版本的 Cedar。如果帳戶中的一個政策存放區與 Cedar 4 不相容,則您無法在該帳戶中的任何政策存放區中使用 Cedar 4。

我可以將政策存放區從 Cedar 4 降級為 Cedar 2 嗎?

否。如果您在政策存放區升級至 Cedar 4 後遇到問題,請使用 開啟案例 支援。

為什麼我會收到錯誤訊息,指出我的政策存放區已設定為 Cedar 2?

Amazon Verified Permissions 的某些功能依賴 Cedar 4 中的新功能。如果您的政策存放區不使用 Cedar 4,則無法使用下列 API 欄位:

  • 在 IsAuthorized、 BatchIsAuthorizedIsAuthorizedWithToken和 BatchIsAuthorizedWithToken操作中:

    • datetimedecimal或 欄位中duration的值 attributes context

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

如何使結構描述與 Cedar 4 相容?

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

重要

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

使用主控台修正結構描述
  1. 登入 AWS 管理主控台 ,並在已驗證的許可下開啟 Amazon Verified Permissions 主控台。

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

  3. 在導覽窗格中選擇結構描述

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

  5. 檢閱對您的結構描述所做的變更,然後按一下預覽更新的結構描述

  6. 檢閱更新的結構描述,然後按一下儲存變更

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

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

  2. 選取 JSON 模式

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

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

無法從 JSON 剖析結構描述:`field-name`

使用 Cedar 2,您可以在結構描述的部分中包含任意欄位,例如類型定義,即使它們在 Cedar 結構描述中沒有任何意義。在 Cedar 4 中,不再允許這麼做。若要解決此錯誤,請從 JSON 結構描述中移除名為 field-name 的欄位。如需有效結構描述欄位的清單,請參閱 Cedar 文件

不明的延伸模組類型 `extension-name`

在 Cedar 2 中,當您宣告屬性type為 時Extension,您可以指定 name 欄位的任何值,無論該值是否為有效的延伸類型名稱。這是 Cedar 4 的錯誤。若要解決此問題,請將 extension-name 取代為有效的延伸類型名稱。您可以在 Cedar 文件中找到有效的延伸類型名稱清單。

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

如何使我的政策和範本與 Cedar 4 相容?

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

在主控台中檢視政策或範本的錯誤
  1. 登入 AWS 管理主控台 ,並在已驗證的許可中開啟 Amazon Verified Permissions 主控台。

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

  3. 視需要在導覽窗格中選擇政策政策範本

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

  5. 選取編輯

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

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

政策中禁止空集合常值

在 Cedar 2 中,您可以使用 語法mySet == []來檢查集合是否為空。使用 Cedar 4 時,使用此語法的政策不會再驗證結構描述。將政策mySet == []中的 取代為 mySet.isEmpty()