View a markdown version of this page

リソースあたりのポリシーサイズ - Amazon Verified Permissions

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

リソースあたりのポリシーサイズ

Verified Permissions は、同じリソースを参照するすべてのポリシーの合計サイズを制限します。この制限はリソースクォータあたりのポリシーサイズで、デフォルト値は 200,000 バイトです。CreatePolicy または を呼び出すとUpdatePolicy、Verified Permissions は参照されるリソースの新しい合計を計算します。新しい合計がクォータを超えると、リクエストは で失敗しますServiceQuotaExceededException。

リソースを指定しないポリシーは、すべてのリソースに適用されます。これらのポリシーは、"unspecified"リソースの個別の合計を共有します。これは同じクォータ値に制限されます。

すべての Verified Permissions クォータのリストについては、「」を参照してくださいAmazon Verified Permissions のクォータ。

ポリシーサイズの計算方法

各ポリシーは、次のようにリソースの合計に貢献します。

  • 静的ポリシー – 静的ポリシーはフルサイズを提供します。これは、ポリシーサイズのクォータに対して測定される値と同じです。

  • テンプレートにリンクされたポリシー – テンプレートにリンクされたポリシーは、そのインスタンス化に使用されるプリンシパルとリソースの合計長に影響します。プリンシパルまたはリソースを指定しない場合、その長さは 0 としてカウントされます。ポリシーテンプレート本文自体のサイズは、このクォータにはカウントされません。

各ポリシーは、合計に最大数百バイトの固定オーバーヘッドも追加します。テンプレートにリンクされたポリシーは、静的ポリシーよりもオーバーヘッドを追加します。

クォータ内にとどまる

アプリケーションがリソースあたりのポリシーサイズクォータに近づいた場合は、次の戦略を検討してください。

  • 適切なポリシータイプを使用します。多くのポリシーが同じリソースに対して同様のアクセス許可を付与する場合、ポリシーテンプレートはポリシーストアのストレージ消費量を減らす可能性があります。各テンプレートにリンクされたポリシーは、プリンシパルとリソースのみを保存します。ポリシーテンプレートは共有ステートメントを 1 回保存しますが、リンクされた各ポリシーにも固定ストレージオーバーヘッドがかかります。テンプレートは、共有ステートメントがオーバーヘッド、約 200 バイト以上を相殺するのに十分な大きさの場合にのみ料金が発生します。このしきい値を下回ると、個々の静的ポリシーが消費する領域が少なくなります。詳細については、「Amazon Verified Permissions ポリシーテンプレートとテンプレートにリンクされたポリシー」を参照してください。

  • ポリシースコープでプリンシパルとリソースを指定します。リソースを指定しないポリシーは、ポリシーストア全体で"unspecified"リソースの 1 つの合計を共有します。各ポリシーを特定のリソースにスコープすると、ポリシーはリソースごとに 1 つずつ別々の合計に分散されます。

  • プリンシパルとリソースをグループ化します。各プリンシパルのポリシーを記述する代わりに、グループのポリシーを記述し、グループにプリンシパルを追加します。リソースをコンテナにグループ化すると、同様に 1 つのリソースを参照するポリシーの数を減らすことができます。

  • クォータの引き上げをリクエストする。ポリシー設計が特定の制約を満たしている場合は、このクォータの引き上げをリクエストできます。資格を得るには、ポリシースコープでプリンシパルまたはリソースを指定する必要があります。増加すると、プリンシパルとリソースが持つことができる階層の親の数も減る可能性があります。クォータが引き上げられた場合でも、同じプリンシパルと同じリソースを参照するポリシーに 200,000 バイトのサブ制限が適用されます。このサブ制限の引き上げをリクエストすることはできません。

テンプレートにリンクされたポリシーサイズの例

テンプレートにリンクされたポリシーがリソースクォータあたりのポリシーサイズにどのように寄与するかを確認するには、プリンシパルの長さとリソースの長さを追加します。リソースを指定しない場合、Verified Permissions はそのサイズを"unspecified"リソースの合計にカウントします。

次のテンプレートを確認します。

permit ( principal in ?principal, action in [MyApplication::Action::"ContentManagement", MyApplication::Action::"AccountAdministration", MyApplication::Action::"BillingOperations"], resource in ?resource ) when { resource has authorizedTenantIds && principal has tenantId && resource.authorizedTenantIds.contains(principal.tenantId) };

そのテンプレートから次のポリシーを作成します。

TemplateLinkedPolicy { policyId: "policy1", templateId: "template1", principal: User::"alice", resource: Photo::"car.jpg" } TemplateLinkedPolicy { policyId: "policy2", templateId: "template1", principal: User::"bob", resource: Photo::"boat.jpg" } TemplateLinkedPolicy { policyId: "policy3", templateId: "template1", principal: User::"jane", resource: Photo::"car.jpg" } TemplateLinkedPolicy { policyId: "policy4", templateId: "template1", principal: User::"jane", resource }

principal および の各ポリシーのバイト数をカウントして、これらのポリシーのサイズを計算しますresource。Verified Permissions は、UTF-8 バイト単位でサイズを測定します。印刷可能な ASCII 範囲の文字は、それぞれ 1 バイトとしてカウントされますが、他の文字はさらに使用できます。次の例では ASCII 文字のみを使用するため、各文字は 1 バイトとしてカウントされます。これらの計算では、固定オーバーヘッドは除外されます。実際の合計は高くなります。

のサイズpolicy1は、プリンシパルの長さ User::"alice" (13) にリソースの長さ Photo::"car.jpg" (16) を加えたものです。合計は 13 + 16 = 29 バイトです。

のサイズpolicy2は、プリンシパルの長さ User::"bob" (11) にリソースの長さ Photo::"boat.jpg" (17) を加えたものです。合計は 11 + 17 = 28 バイトです。

のサイズpolicy3は、プリンシパルの長さ User::"jane" (12) にリソースの長さ Photo::"car.jpg" (16) を加えたものです。合計は 12 + 16 = 28 バイトです。

のサイズpolicy4は、プリンシパルの長さ User::"jane" (12) にリソースの長さ (0) を加えたものです。合計は 12 + 0 = 12 バイトです。

policy2 はリソース を参照する唯一のポリシーであるためPhoto::"boat.jpg"、リソースの合計サイズは 28 バイトです。

policy1 と policy3の両方がリソース を参照するためPhoto::"car.jpg"、合計リソースサイズは 29 + 28 = 57 バイトです。

policy4 は"unspecified"リソースを参照する唯一のポリシーであるため、リソースの合計サイズは 12 バイトです。