Amazon Verified Permissions 與 Cedar 政策語言之間的差異 - Amazon Verified Permissions

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

Amazon Verified Permissions 與 Cedar 政策語言之間的差異

Amazon Verified Permissions 使用 Cedar 政策語言引擎來執行其授權任務。不過,在驗證許可中,原生 Cedar 實作與 Cedar 實作之間存在一些差異。本主題識別這些差異。

命名空間定義

Cedar 的已驗證許可實作與原生 Cedar 實作有下列差異:

政策範本支援

Verified Permissions 和 Cedar 都只允許 principal和 範圍內的預留位置resource。不過,已驗證的許可也要求 principalresource 都不會受到限制。

下列政策在 Cedar 中有效,但由於 principal不受限制,因此被驗證許可拒絕。

permit(principal, action == Action::"view", resource == ?resource);

下列兩個範例在 Cedar 和 Verified Permissions 中都有效,因為 principalresource 都有限制。

permit(principal == User::"alice", action == Action::"view", resource == ?resource);
permit(principal == ?principal, action == Action::"a", resource in ?resource);

結構描述支援

已驗證的許可要求所有結構描述JSON金鑰名稱都是非空白字串。Cedar 允許在少數情況下使用空字串,例如屬性或命名空間。

延伸類型支援

Verified Permissions 支援政策中的 Cedar 延伸模組類型,但目前不支援透過 Verified Permissions 主控台將它們包含在結構描述的定義中。

延伸類型包括固定點 (decimal) 和 IP 地址 (ipaddr) 資料類型。

實體的 Cedar JSON 格式

目前,驗證許可要求您使用為 定義的結構,傳遞授權請求中要考慮的實體清單EntitiesDefinition,這是EntityItem元素陣列。已驗證許可目前不支援以 Cedar JSON 格式傳遞授權請求中要考慮的實體清單。如需格式化實體以在驗證許可中使用的特定需求,請參閱 實體格式

動作群組定義

Cedar 授權方法要求在根據政策評估授權請求時考慮實體的清單。

您可以在結構描述中定義應用程式使用的動作和動作群組。不過,Cedar 不會將結構描述包含在評估請求中。相反地,Cedar 只會使用結構描述來驗證您提交的政策和政策範本。由於 Cedar 在評估請求期間不會參考結構描述,即使您已在結構描述中定義動作群組,您也必須將任何動作群組的清單包含在實體清單中,才能傳遞給授權API操作。

Verified Permissions 會為您執行此操作。您在結構描述中定義的任何動作群組都會自動附加至您作為 參數傳遞至 IsAuthorizedIsAuthorizedWithToken操作的實體清單。

實體格式

Verified Permissions 中實體的JSON格式與 Cedar 不同,方式如下:

  • 在已驗證的許可中,JSON物件必須將其所有鍵值對包裝在名為 的JSON物件中Record

  • Verified Permissions 中的JSON清單必須包裝在JSON索引鍵值對中,其中索引鍵名稱為 ,Set而 值是來自 Cedar 的原始JSON清單。

  • 對於 StringLongBoolean類型名稱,Cedar 的每個鍵值對都會被驗證許可中的JSON物件取代。物件的名稱是原始金鑰名稱。在JSON物件內有一個索引鍵值對,其中索引鍵名稱是純量值的類型名稱 (String、 或 BooleanLong,而該值是來自 Cedar 實體的值。

  • Cedar 實體和 Verified Permissions 實體的語法格式有下列不同:

    Cedar 格式 已驗證的許可格式
    uid Identifier
    type EntityType
    id EntityId
    attrs Attributes
    parents Parents
範例 - 清單

下列範例顯示分別在 Cedar 和 Verified Permissions 中如何表達實體清單。

Cedar
[ { "number": 1 }, { "sentence": "Here is an example sentence" }, { "Question": false } ]
Verified Permissions
{ "Set": [ { "Record": { "number": { "Long": 1 } } }, { "Record": { "sentence": { "String": "Here is an example sentence" } } }, { "Record": { "question": { "Boolean": false } } } ] }
範例 - 政策評估

下列範例顯示實體如何分別針對 Cedar 和 Verified Permissions 中的授權請求評估政策進行格式化。

Cedar
[ { "uid": { "type": "PhotoApp::User", "id": "alice" }, "attrs": { "age": 25, "name": "alice", "userId": "123456789012" }, "parents": [ { "type": "PhotoApp::UserGroup", "id": "alice_friends" }, { "type": "PhotoApp::UserGroup", "id": "AVTeam" } ] }, { "uid": { "type": "PhotoApp::Photo", "id": "vacationPhoto.jpg" }, "attrs": { "private": false, "account": { "__entity": { "type": "PhotoApp::Account", "id": "ahmad" } } }, "parents": [] }, { "uid": { "type": "PhotoApp::UserGroup", "id": "alice_friends" }, "attrs": {}, "parents": [] }, { "uid": { "type": "PhotoApp::UserGroup", "id": "AVTeam" }, "attrs": {}, "parents": [] } ]
Verified Permissions
[ { "Identifier": { "EntityType": "PhotoApp::User", "EntityId": "alice" }, "Attributes": { "age": { "Long": 25 }, "name": { "String": "alice" }, "userId": { "String": "123456789012" } }, "Parents": [ { "EntityType": "PhotoApp::UserGroup", "EntityId": "alice_friends" }, { "EntityType": "PhotoApp::UserGroup", "EntityId": "AVTeam" } ] }, { "Identifier": { "EntityType": "PhotoApp::Photo", "EntityId": "vacationPhoto.jpg" }, "Attributes": { "private": { "Boolean": false }, "account": { "EntityIdentifier": { "EntityType": "PhotoApp::Account", "EntityId": "ahmad" } } }, "Parents": [] }, { "Identifier": { "EntityType": "PhotoApp::UserGroup", "EntityId": "alice_friends" }, "Parents": [] }, { "Identifier": { "EntityType": "PhotoApp::UserGroup", "EntityId": "AVTeam" }, "Parents": [] } ]

長度和大小限制

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 個位元組。對於範本連結政策,政策範本的大小只會計算一次,加上用於實例化每個範本連結政策的每組參數的大小。