View a markdown version of this page

每个资源的策略大小 - Amazon Verified Permissions
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

每个资源的策略大小

已验证权限限制引用相同资源的所有策略的总大小。此限制是每个资源配额的策略大小,其默认值为 200,000 字节。当您调用CreatePolicy或时UpdatePolicy,“已验证权限” 会计算所引用资源的新总数。如果新的总数超过配额,则请求将失败,并显示为ServiceQuotaExceededException。

未指定资源的策略适用于所有资源。这些策略共享单独的"unspecified"资源总额,该总额仅限于相同的配额值。

有关所有已验证权限配额的列表,请参阅Amazon Verified Permissions 的配额。

如何计算保单规模

每份保单对资源总额的贡献如下:

  • 静态策略-静态策略贡献其完整规模。这与根据策略大小配额衡量的值相同。

  • Template-linked policies — 与模板关联的策略贡献了用于实例化的委托人和资源的总长度,以及存储在数据库项目中的一些固定开销。如果模板没有主体或资源槽,则此未指定实体的长度计为 0。策略模板正文本身的大小不计入此配额。

每项策略还会在总开销中增加多达几百字节的固定开销。 Template-linked 策略比静态策略增加更多的开销。

保持在配额之内

如果您的应用程序接近每个资源的策略大小配额,请考虑以下策略:

  • 使用适当的策略类型。如果许多策略对同一资源授予相似的权限,则策略模板可能会减少策略存储的存储消耗。每个与模板关联的策略仅存储其委托人和资源。策略模板将共享语句存储一次,但每个链接的策略也会带来固定的存储开销。只有当共享语句足够大以抵消开销(大约 200 字节或更多)时,模板才会收回成本。低于该阈值,单个静态策略占用的空间就会减少。有关更多信息,请参阅 Amazon 已验证权限策略模板和模板关联政策。

  • 在策略范围内指定委托人和资源。未指定资源的策略在策略存储中共享该"unspecified"资源的单一总数。将每项策略的范围限定为特定资源,将您的策略分散在不同的总数中,每种资源对应一个总数。

  • 对您的校长和资源进行分组。与其为每个委托人编写策略,不如为群组编写策略并将委托人添加到群组。将资源分组到容器中同样可以减少引用单个资源的策略数量。

  • 请求提高限额。如果您的政策设计符合某些限制,则可以申请增加此配额。要符合资格,您的策略必须在策略范围内指定委托人或资源。增加还可能减少您的主体和资源可以拥有的层次结构父级的数量。即使增加配额,200,000 字节的子限制仍适用于引用相同委托人和相同资源的策略。您不能申请提高此次级限额。

Template-linked 策略规模示例

要了解模板关联策略如何影响每个资源配额的策略大小,请添加委托人的长度和资源的长度。如果您未指定资源,则已验证权限会将其大小计入"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中每个策略的字节数来计算这些策略的大小。已验证权限以 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 字节。

因为policy1policy3两者都引用资源Photo::"car.jpg",所以资源总大小为 29 + 28 = 57 字节。

由于policy4是引用资源的唯一策略,因此"unspecified"资源总大小为 12 字节。