本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon Verified Permissions 與 Cedar 政策語言之間的差異
Amazon Verified Permissions 使用 Cedar 政策語言引擎來執行其授權任務。不過,在驗證許可中,原生 Cedar 實作與 Cedar 實作之間存在一些差異。本主題識別這些差異。
命名空間定義
Cedar 的已驗證許可實作與原生 Cedar 實作有下列差異:
-
已驗證的許可僅支援政策存放區中定義的結構描述中的一個命名空間
。 -
已驗證許可不允許您建立空白字串或包含下列值的命名空間
: aws
、amazon
或cedar
。
政策範本支援
Verified Permissions 和 Cedar 都只允許 principal
和 範圍內的預留位置resource
。不過,已驗證的許可也要求 principal
和 resource
都不會受到限制。
下列政策在 Cedar 中有效,但由於 principal
不受限制,因此被驗證許可拒絕。
permit(principal, action == Action::"view", resource == ?resource);
下列兩個範例在 Cedar 和 Verified Permissions 中都有效,因為 principal
和 resource
都有限制。
permit(principal == User::"alice", action == Action::"view", resource == ?resource);
permit(principal == ?principal, action == Action::"a", resource in ?resource);
結構描述支援
已驗證的許可要求所有結構描述JSON金鑰名稱都是非空白字串。Cedar 允許在少數情況下使用空字串,例如屬性或命名空間。
延伸類型支援
Verified Permissions 支援政策中的 Cedar 延伸模組類型
延伸類型包括固定點 (decimal
) 和 IP 地址 (ipaddr
) 資料類型。
實體的 Cedar JSON 格式
目前,驗證許可要求您使用為 定義的結構,傳遞授權請求中要考慮的實體清單EntitiesDefinition,這是EntityItem元素陣列。已驗證許可目前不支援以 Cedar JSON 格式
動作群組定義
Cedar 授權方法要求在根據政策評估授權請求時考慮實體的清單。
您可以在結構描述中定義應用程式使用的動作和動作群組。不過,Cedar 不會將結構描述包含在評估請求中。相反地,Cedar 只會使用結構描述來驗證您提交的政策和政策範本。由於 Cedar 在評估請求期間不會參考結構描述,即使您已在結構描述中定義動作群組,您也必須將任何動作群組的清單包含在實體清單中,才能傳遞給授權API操作。
Verified Permissions 會為您執行此操作。您在結構描述中定義的任何動作群組都會自動附加至您作為 參數傳遞至 IsAuthorized
或 IsAuthorizedWithToken
操作的實體清單。
實體格式
Verified Permissions 中實體的JSON格式與 Cedar 不同,方式如下:
-
在已驗證的許可中,JSON物件必須將其所有鍵值對包裝在名為 的JSON物件中
Record
。 -
Verified Permissions 中的JSON清單必須包裝在JSON索引鍵值對中,其中索引鍵名稱為 ,
Set
而 值是來自 Cedar 的原始JSON清單。 -
對於
String
、Long
和Boolean
類型名稱,Cedar 的每個鍵值對都會被驗證許可中的JSON物件取代。物件的名稱是原始金鑰名稱。在JSON物件內有一個索引鍵值對,其中索引鍵名稱是純量值的類型名稱 (String
、 或Boolean
)Long
,而該值是來自 Cedar 實體的值。 -
Cedar 實體和 Verified Permissions 實體的語法格式有下列不同:
Cedar 格式 已驗證的許可格式 uid
Identifier
type
EntityType
id
EntityId
attrs
Attributes
parents
Parents
範例 - 清單
下列範例顯示分別在 Cedar 和 Verified Permissions 中如何表達實體清單。
範例 - 政策評估
下列範例顯示實體如何分別針對 Cedar 和 Verified Permissions 中的授權請求評估政策進行格式化。
長度和大小限制
Verified Permissions 支援以政策存放區的形式儲存,以保留您的結構描述、政策和政策範本。該儲存體會導致 Verified Permissions 施加與 Cedar 無關的長度和大小限制。
物件 | 已驗證許可限制 (以位元組為單位) | Cedar 限制 |
---|---|---|
政策大小1 | 10,000 | 無 |
內嵌政策描述 | 150 | 不適用於 Cedar |
政策範本大小 | 10,000 | 無 |
結構描述大小 | 100,000 | 無 |
實體類型 | 200 | 無 |
政策 ID | 64 | 無 |
政策範本 ID | 64 | 無 |
實體 ID | 200 | 無 |
政策存放區 ID | 64 | 不適用於 Cedar |
1 根據政策存放區中建立之政策的主體、動作和資源的合併大小,驗證許可中每個政策存放區的政策有限制。與單一資源相關的所有政策總大小不得超過 200,000 個位元組。對於範本連結政策,政策範本的大小只會計算一次,加上用於實例化每個範本連結政策的每組參數的大小。