Amazon Verified Permissions와 Cedar 정책 언어의 차이점 - Amazon Verified Permissions

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

Amazon Verified Permissions와 Cedar 정책 언어의 차이점

Amazon Verified Permissions는 Cedar 정책 언어 엔진을 사용하여 권한 부여 작업을 수행합니다. 하지만 기본 Cedar 구현과 Verified Permissions에서 확인할 수 있는 Cedar 구현 간에는 몇 가지 차이점이 있습니다. 이 항목에서는 이러한 차이점을 설명합니다.

네임스페이스 정의

Cedar의 Verified Permissions 구현은 기본 Cedar 구현과 다음과 같은 차이점이 있습니다.

정책 템플릿 지원

Verified Permissions과 Cedar는 모두 범위에서 principalresource에 대한 자리 표시자만 허용합니다. 하지만 Verified Permissions를 사용하려면 principalresource에 제약이 있어야 합니다.

다음 정책은 Cedar에서 유효하지만 principal에 제약이 없기 때문에 Verified Permissions에서는 거부됩니다.

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

다음 두 예제에서는 principalresource에 제약이 있기 때문에 Cedar와 Verified Permissions 모두에서 유효합니다.

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 콘솔을 통한 스키마 정의에 Cedar 확장 유형을 포함하는 것은 지원하지 않습니다.

익스텐션 유형에는 고정 소수점(decimal) 및 IP 주소(ipaddr) 데이터 형식이 포함됩니다.

엔터티의 시더 JSON 형식

현재 Verified Permissions에서는 EntityItem 요소 배열EntitiesDefinition인 에 정의된 구조를 사용하여 권한 부여 요청에서 고려할 엔터티 목록을 전달해야 합니다. Verified Permissions는 현재 Cedar JSON 형식의 권한 부여 요청에서 고려할 엔터티 목록 전달을 지원하지 않습니다. Verified Permissions에서 사용할 엔터티 형식을 지정하는 데 필요한 특정 요구 사항은 엔터티 형식을(를) 참조하세요.

작업 그룹 정의

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, LongBoolean 유형 이름의 경우 Cedar의 각 키-값 페어는 Verified Permissions의 JSON 객체로 대체됩니다. 객체 이름은 원래 키 이름입니다. JSON 객체 내에는 키 이름이 스칼라 값(String, Long또는 Boolean)의 유형 이름이고 값이 Cedar 엔터티의 값인 키-값 페어가 하나 있습니다.

  • Cedar 엔터티와 Verified Permissions 엔터티의 구문 형식은 다음과 같은 측면에서 다릅니다.

    Cedar 형식 Verified Permissions 형식
    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와 관련이 없는 일부 길이 및 크기 제한이 적용됩니다.

객체 Verified Permissions 제한(바이트 단위) Cedar 제한
정책 크기¹ 10,000개 None
인라인 정책 설명 150 Cedar에는 해당 사항 없음
정책 템플릿 크기 10,000개 None
스키마 크기 100,000건 None
엔터티 유형 200 None
정책 ID 64 None
정책 템플릿 ID 64 None
엔터티 ID 200 None
정책 스토어 ID 64 Cedar에는 해당 사항 없음

¹ Verified Permissions의 정책 스토어당 정책 한도는 정책 스토어에서 생성된 정책의 보안 주체, 작업 및 리소스의 합산 크기를 기준으로 합니다. 단일 리소스와 관련된 모든 정책의 총 크기는 200,000바이트를 초과할 수 없습니다. 템플릿 연결 정책의 경우 정책 템플릿의 크기가 한 번만 계산되며 각 템플릿 연결 정책을 인스턴스화하는 데 사용되는 각 매개 변수 집합의 크기를 더합니다.