View a markdown version of this page

리소스당 정책 크기 - Amazon Verified Permissions

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

리소스당 정책 크기

Verified Permissions는 동일한 리소스를 참조하는 모든 정책의 총 크기를 제한합니다. 이 제한은 리소스 할당량당 정책 크기이며 기본값은 200,000바이트입니다. CreatePolicy 또는를 호출하면 UpdatePolicyVerified Permissions가 참조된 리소스의 새 합계를 계산합니다. 새 합계가 할당량을 초과하면 요청이와 함께 실패합니다ServiceQuotaExceededException.

리소스를 지정하지 않는 정책은 모든 리소스에 적용됩니다. 이러한 정책은 "unspecified" 리소스에 대해 동일한 할당량 값으로 제한된 별도의 합계를 공유합니다.

모든 Verified Permissions 할당량 목록은 섹션을 참조하세요Amazon Verified Permissions 할당량.

정책 크기 계산 방법

각 정책은 다음과 같이 리소스의 합계에 기여합니다.

  • 정적 정책 - 정적 정책은 전체 크기를 제공합니다. 이는 정책 크기 할당량에 대해 측정되는 값과 동일합니다.

  • 템플릿 연결 정책 - 템플릿 연결 정책은 이를 인스턴스화하는 데 사용되는 보안 주체와 리소스의 결합된 길이를 제공합니다. 보안 주체 또는 리소스를 지정하지 않으면 해당 길이는 0으로 계산됩니다. 정책 템플릿 본문 자체의 크기는이 할당량에 포함되지 않습니다.

또한 각 정책은 총계에 최대 수백 바이트의 고정 오버헤드를 추가합니다. 템플릿 연결 정책은 정적 정책보다 더 많은 오버헤드를 추가합니다.

할당량 내에서 유지

애플리케이션이 리소스 할당량당 정책 크기에 가까워지면 다음 전략을 고려하세요.

  • 적절한 정책 유형을 사용합니다. 많은 정책이 동일한 리소스에 대해 유사한 권한을 부여하는 경우 정책 템플릿은 정책 스토어의 스토리지 소비를 줄일 수 있습니다. 각 템플릿 연결 정책은 보안 주체와 리소스만 저장합니다. 정책 템플릿은 공유 문을 한 번 저장하지만 연결된 각 정책에는 고정된 스토리지 오버헤드도 포함됩니다. 템플릿은 공유 문이 해당 오버헤드를 상쇄할 만큼 충분히 크거나 약 200바이트 이상인 경우에만 비용을 지불합니다. 이 임계값 미만에서는 개별 정적 정책이 공간을 적게 사용합니다. 자세한 내용은 Amazon Verified Permissions 정책 템플릿 및 템플릿 연결 정책 단원을 참조하십시오.

  • 정책 범위에서 보안 주체와 리소스를 지정합니다. 리소스를 지정하지 않는 정책은 정책 스토어 전체에서 "unspecified" 리소스에 대한 단일 합계를 공유합니다. 각 정책을 특정 리소스로 범위 지정하면 각 리소스에 대해 하나씩 정책을 별도의 합계로 분산합니다.

  • 보안 주체와 리소스를 그룹화합니다. 각 보안 주체에 대한 정책을 작성하는 대신 그룹에 대한 정책을 작성하고 보안 주체를 그룹에 추가합니다. 리소스를 컨테이너로 그룹화하면 단일 리소스를 참조하는 정책 수를 비슷하게 줄일 수 있습니다.

  • 할당량 증가를 요청하십시오. 정책 설계가 특정 제약 조건을 충족하는 경우이 할당량 증가를 요청할 수 있습니다. 자격을 갖추려면 정책 범위에 보안 주체 또는 리소스를 지정해야 합니다. 또한 증가하면 보안 주체와 리소스가 가질 수 있는 계층 상위 항목 수를 줄일 수 있습니다. 할당량이 증가하더라도 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 }

각각에 resource 대해 principal 및의 바이트 수를 계산하여 해당 정책의 크기를 계산합니다. Verified Permissions는 UTF-8 바이트 단위로 크기를 측정합니다. 인쇄 가능한 ASCII 범위의 문자는 각각 1바이트로 계산되지만 다른 문자는 더 많이 사용할 수 있습니다. 다음 예제에서는 ASCII 문자만 사용하므로 각 문자는 1바이트로 계산됩니다. 이러한 계산은 고정 오버헤드를 제외합니다. 실제 합계는 더 높습니다.

의 크기는 보안 주체의 policy1 길이User::"alice"(13)와 리소스의 길이Photo::"car.jpg"(16)입니다. 합계는 13 + 16 = 29바이트입니다.

의 크기는 보안 주체User::"bob"(11)의 policy2 길이와 리소스Photo::"boat.jpg"(17)의 길이입니다. 합계는 11 + 17 = 28바이트입니다.

의 크기는 보안 주체의 policy3 길이User::"jane"(12)와 리소스의 길이Photo::"car.jpg"(16)입니다. 합계는 12 + 16 = 28바이트입니다.

의 크기는 보안 주체의 길이User::"jane"(12)에 리소스의 길이(0)를 더한 값policy4입니다. 합계는 12 + 0 = 12바이트입니다.

policy2는 리소스를 참조하는 유일한 정책이므로 Photo::"boat.jpg"총 리소스 크기는 28바이트입니다.

policy1 및 policy3 둘 다 리소스를 참조하기 때문에 Photo::"car.jpg"총 리소스 크기는 29 + 28 = 57바이트입니다.

policy4는 "unspecified" 리소스를 참조하는 유일한 정책이므로 총 리소스 크기는 12바이트입니다.