翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon Verified Permissions と Cedar ポリシー言語の違い
Amazon Verified Permissionsは、Cedar ポリシー言語エンジンを使用して認可タスクを実行します。ただし、ネイティブの Cedar 実装と「Verified Permissions」にある Cedar の実装にはいくつか違いがあります。このトピックでは、これらの違いについて説明します。
名前空間の定義
Cedar のVerified Permissions実装は、ネイティブの Cedar 実装と以下の違いがあります。
-
Verified Permissionsは、ポリシーストアで定義されたスキーマ内の名前空間
1つだけをサポートします。 -
Verified Permissions では、空の文字列であるか、次の値を含む名前空間
を作成することはできません: aws
、amazon
、またはcedar
。
ポリシーテンプレートのサポート
Verified Permissions と Cedar は両方とも、principal
と resource
のスコープ内でのみプレースホルダーを許可します。ただし、Verified Permissions では、principal
と resource
のどちらも制約されていないことも必要です。
以下のポリシーは Cedar では有効ですが、principal
には制約がないためVerified Permissionsでは拒否されます。
permit(principal, action == Action::"view", resource == ?resource);
principal
とresource
の両方に制約があるため、以下の例はいずれも Cedar と Verified Permissionsの両方で有効です。
permit(principal == User::"alice", action == Action::"view", resource == ?resource);
permit(principal == ?principal, action == Action::"a", resource in ?resource);
スキーマのサポート
Verified Permissions では、すべてのスキーマJSONキー名を空でない文字列にする必要があります。Cedar は、プロパティや名前空間など、いくつかの場合に空の文字列を許可します。
拡張タイプのサポート
Verified Permissions は、ポリシーで Cedar 拡張タイプ
拡張タイプには、固定小数点 (decimal
) データ型と IP アドレス (ipaddr
) データ型があります。
エンティティの Cedar JSON形式
現時点では、Verified Permissions では、EntityItem要素の配列である に定義された構造を使用してEntitiesDefinition、認証リクエストで考慮されるエンティティのリストを渡す必要があります。Verified Permissions は現在、Cedar JSON形式の
アクショングループの定義
Cedar の認可方法では、認可リクエストをポリシーと照らし合わせて評価する際に考慮すべきエンティティのリストが必要です。
アプリケーションが使用するアクションとアクショングループをスキーマで定義できます。ただし、Cedar は評価リクエストにスキーマを含めません。代わりに、Cedar は送信したポリシーとポリシーテンプレートの検証にのみスキーマを使用します。Cedar は評価リクエスト中にスキーマを参照しないため、スキーマにアクショングループを定義しても、承認APIオペレーションに渡す必要があるエンティティリストの一部としてアクショングループのリストを含める必要があります。
これはVerified Permissions によって自動的に行われます。スキーマで定義したアクショングループは、IsAuthorized
またはIsAuthorizedWithToken
オペレーションのパラメータとして渡したエンティティリストに自動的に追加されます。
エンティティフォーマット
Verified Permissions のエンティティのJSONフォーマットは、以下の点で Cedar とは異なります。
-
Verified Permissions では、JSONオブジェクトのすべてのキーと値のペアが という名前のJSONオブジェクトでラップされている必要があります
Record
。 -
Verified Permissions JSONのリストは、JSONキー名が
Set
で、値が Cedar の元のJSONリストであるキーと値のペアでラップする必要があります。 -
String
、、Long
Boolean
タイプ名の場合、Cedar の各キーと値のペアは、Verified Permissions のJSONオブジェクトに置き換えられます。オブジェクトの名前は元のキー名です。JSON オブジェクト内には、キー名がスカラー値のタイプ名 (String
、、またはBoolean
) でLong
、値が Cedar エンティティの値であるキーと値のペアが 1 つあります。 -
Cedar エンティティと Verified Permissions エンティティの構文フォーマットは、以下の点で異なります。
Cedar フォーマット Verified Permissions フォーマット uid
Identifier
type
EntityType
id
EntityId
attrs
Attributes
parents
Parents
例 - リスト
次の例は、エンティティのリストがそれぞれ Cedar および Verified Permissions で表現される方法を示しています。
例 - ポリシー評価
次の例は、Cedar および Verified Permissions の認証リクエストでポリシーを評価するためにエンティティがどのようにフォーマットされているかを示しています。
長さとサイズの制限
Verified Permissionsは、スキーマ、ポリシー、ポリシーテンプレートを格納するためのポリシーストア形式のストレージをサポートします。このストレージが原因で、認証済みアクセス権限には Cedar に関係のない長さとサイズの制限が課されます。
オブジェクト | Verified Permissionsの制限 (バイト単位) | シダー制限 |
---|---|---|
ポリシーのサイズ ¹ | 10,000 | なし |
インラインポリシーの説明 | 150 | Cedar には適用されません。 |
ポリシーテンプレートサイズ | 10,000 | なし |
スキーマサイズ | 100,000 | なし |
エンティティタイプ | 200 | なし |
ポリシー ID | 64 | なし |
ポリシーテンプレート ID | 64 | なし |
エンティティ ID | 200 | なし |
ポリシーストア ID | 64 | Cedarには適用されません。 |
¹ Verified Permissions では、ポリシーストアで作成されたポリシーのプリンシパル、アクション、リソースの合計サイズに基づいて、ポリシーストアごとのポリシーに制限があります。1 つのリソースに関連するすべてのポリシーの合計サイズは 200,000 バイトを超えることはできません。テンプレートにリンクされたポリシーの場合、ポリシーテンプレートのサイズに、テンプレートにリンクされた各ポリシーのインスタンス化に使用される各パラメータセットのサイズを加えたものが 1 回だけカウントされます。