기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Amazon Verified Permissions는 Cedar 정책 언어 엔진을 사용하여 권한 부여 작업을 수행합니다. 하지만 기본 Cedar 구현과 Verified Permissions에서 확인할 수 있는 Cedar 구현 간에는 몇 가지 차이점이 있습니다. 이 항목에서는 이러한 차이점을 설명합니다.
네임스페이스 정의
Cedar의 Verified Permissions 구현은 기본 Cedar 구현과 다음과 같은 차이점이 있습니다.
-
Verified Permissions는 정책 스토어에 정의된 스키마에서 네임스페이스
를 하나만 지원합니다. -
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는 속성 또는 네임스페이스와 같은 몇 가지 경우에 빈 문자열을 허용합니다.
작업 그룹 정의
Cedar 권한 부여 방법을 사용하려면 정책에 따라 권한 부여 요청을 평가할 때 고려해야 할 엔터티 목록이 필요합니다.
애플리케이션이 사용하는 작업 및 작업 그룹은 스키마에서 정의할 수 있습니다. 하지만 Cedar는 평가 요청의 일부로 스키마를 포함시키지 않습니다. 대신 Cedar는 사용자가 제출한 정책 및 정책 템플릿을 검증하는 데만 스키마를 사용합니다. Cedar는 평가 요청 중에 스키마를 참조하지 않으므로 스키마에 작업 그룹을 정의했더라도 권한 부여 API 작업에 전달해야 하는 엔터티 목록의 일부로 작업 그룹 목록도 포함해야 합니다.
Verified Permissions는 이 작업을 사용자 대신 수행합니다. 스키마에서 정의한 모든 작업 그룹은 IsAuthorized
또는 IsAuthorizedWithToken
작업에 매개 변수로 전달하는 엔터티 목록에 자동으로 추가됩니다.
엔터티 형식
entityList
파라미터를 사용하는 Verified Permissions의 엔터티 JSON 형식은 다음과 같은 면에서 Cedar와 다릅니다.
-
Verified Permissions에서 JSON 객체는 모든 키-값 쌍을 이름이
Record
인 JSON 객체로 래핑해야 합니다. -
Verified Permissions의 JSON 목록은 키 이름이
Set
이고 값이 Cedar의 원래 JSON 목록인 JSON 키-값 쌍으로 래핑되어야 합니다. -
String
,Long
, 및Boolean
유형 이름의 경우 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의 권한 부여 요청에서 정책을 평가하기 위한 엔터티의 형식이 어떻게 지정되는지 보여줍니다.
[
{
"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는 스키마, 정책 및 정책 템플릿을 보관하기 위한 정책 스토어 형태의 스토리지를 지원합니다. 이러한 스토리지로 인해 Verified Permissions에는 Cedar와 관련이 없는 일부 길이 및 크기 제한이 적용됩니다.
객체 | Verified Permissions 제한(바이트 단위) | Cedar 제한 |
---|---|---|
정책 크기¹ | 10,000개 | 없음 |
인라인 정책 설명 | 150 | Cedar에는 해당 사항 없음 |
정책 템플릿 크기 | 10,000개 | 없음 |
스키마 크기 | 100,000건 | 없음 |
엔터티 유형 | 200 | 없음 |
정책 ID | 64 | 없음 |
정책 템플릿 ID | 64 | 없음 |
엔터티 ID | 200 | 없음 |
정책 스토어 ID | 64 | Cedar에는 해당 사항 없음 |
¹ Verified Permissions의 정책 스토어당 정책 한도는 정책 스토어에서 생성된 정책의 보안 주체, 작업 및 리소스의 합산 크기를 기준으로 합니다. 단일 리소스와 관련된 모든 정책의 총 크기는 200,000바이트를 초과할 수 없습니다. 템플릿 연결 정책의 경우 정책 템플릿의 크기가 한 번만 계산되며 각 템플릿 연결 정책을 인스턴스화하는 데 사용되는 각 매개 변수 집합의 크기를 더합니다.