메모
이 섹션에 설명된 Data API Builder 2.0 기능은 현재 미리 보기 상태이며 일반 공급 전에 변경될 수 있습니다. 자세한 내용은 버전 2.0의 새로운 기능입니다.
역할 상속을 사용하면 더 광범위한 역할에 대한 권한을 한 번 정의하고 보다 구체적인 역할이 해당 액세스를 자동으로 상속할 수 있습니다. 역할 상속이 없으면 모든 엔터티의 모든 역할에 대해 동일한 권한 블록을 반복해야 합니다. 역할 상속을 사용하면 anonymous에서 한 번 액세스를 정의하고, 더 포괄적인 모든 역할에 동일한 액세스 권한이 부여됩니다.
상속 체인
상속 체인은 최소 권한에서 가장 권한이 있는 것으로 흐릅니다.
named-role → authenticated → anonymous
| 역할 | 상속받음 | Notes |
|---|---|---|
명명된 역할(예: editor) |
authenticated |
anonymous가 구성되지 않은 경우 authenticated에서 따옴 |
authenticated |
anonymous |
명시적 authenticated 블록이 없는 경우 적용됩니다. |
anonymous |
(없음) | 체인의 기본; 대체책 없음 |
체인은 다음을 의미합니다.
-
명명된 역할에 사용 권한 블록이 없는 경우 DAB는
authenticated블록을 찾습니다. 존재하지 않는 경우 해당 항목은 다시 .로 돌아갑니다anonymous. - 사용 권한 블록이 없는 경우
authenticatedDAB는anonymous블록을 사용합니다. - 사용 권한 블록이 없으면
anonymous요청이 거부403 Forbidden됩니다.
상속이 해결되는 방법
DAB는 요청을 평가할 때 유효 역할을 결정한 다음 상속 체인을 걸어서 권한 블록을 찾습니다.
- DAB는 헤더, 토큰 클레임 또는 기본값을 통해
X-MS-API-ROLE요청에서 유효 역할을 식별합니다. - DAB는
entities.<name>.permissions에서 유효한 역할과 일치하는 명시적 권한 블록을 찾습니다. - 일치하는 블록이 없으면 DAB는 체인을 따라 위로 이동합니다:
authenticated→anonymous. - 찾은 첫 번째 일치 블록은 요청에 대한 권한을 제공합니다.
- 체인의 역할과 일치하는 블록이 없으면 DAB가 반환됩니다
403 Forbidden.
메모
DAB는 요청당 정확히 하나의 유효 역할의 컨텍스트에서 사용 권한을 평가합니다. 역할 상속은 여러 역할의 권한을 결합하지 않습니다.
예제
최소 구성: 모든 역할에 대한 단일 권한
read
anonymous에 대한 사용 권한 정의 모든 역할authenticated 및 모든 명명된 역할은 해당 액세스를 상속합니다.
{
"entities": {
"Book": {
"source": "dbo.books",
"permissions": [
{ "role": "anonymous", "actions": [ "read" ] }
]
}
}
}
이 구성에 대한 유효 권한:
Entity: Book
Role: anonymous | Actions: Read
Role: authenticated | Actions: Read (inherited from: anonymous)
Unconfigured roles | Inherit from: anonymous
계층화된 구성: 역할당 다른 액세스
역할마다 다른 액세스 수준이 필요한 경우 각 액세스 수준을 명시적으로 정의합니다. 상속은 구성하지 않은 역할만 채웁니다.
{
"entities": {
"Order": {
"source": "dbo.orders",
"permissions": [
{ "role": "anonymous", "actions": [ "read" ] },
{ "role": "authenticated", "actions": [ "read", "create" ] },
{ "role": "admin", "actions": [ "*" ] }
]
}
}
}
이 구성에 대한 유효 권한:
Entity: Order
Role: anonymous | Actions: Read
Role: authenticated | Actions: Read, Create
Role: admin | Actions: Create, Read, Update, Delete
Unconfigured roles | Inherit from: authenticated
다음의 명명된 역할admin 이외의 모든 역할은 viewer으로부터 상속하고, support 및 authenticated에 대한 액세스를 얻습니다. 예를 들어, read 또는 create.
상속 없음: 완전히 차단됨
사용 권한 블록이 없고 체인에 다른 역할이 없으면 anonymous 해당 엔터티에 대한 모든 요청이 거부됩니다.
{
"entities": {
"AuditLog": {
"source": "dbo.audit_log",
"permissions": [
{ "role": "admin", "actions": [ "read" ] }
]
}
}
}
이 구성에서 admin만이 AuditLog에 액세스할 수 있습니다.
authenticated와 anonymous에게는 상속할 블록이 없으므로 DAB는 403 Forbidden로부터 해당 역할의 요청을 거부합니다.
중요합니다
DAB는 authenticated 공급자가 활성 상태인 경우, 엔터티에 Unauthenticated 또는 명명된 역할이 구성되었을 때 시작할 때 경고를 내보냅니다. 활성 상태인 경우 Unauthenticated 해당 역할은 활성화되지 않습니다. 자세한 내용은 인증되지 않은 공급자 구성을 참조하세요.
실제 사용 권한 보기
dab configure --show-effective-permissions를 사용하여 모든 엔터티에 대해 해결된 권한을 표시하며, 해당 권한이 어떤 역할로부터 상속되어 있는지를 포함합니다. 이 명령은 엔진을 실행하지 않고 상속이 예상대로 작동하는지 확인하는 가장 빠른 방법입니다.
dab configure --show-effective-permissions
특정 구성 파일을 대상으로 지정할 수도 있습니다.
dab configure --show-effective-permissions --config my-config.json
예시 출력:
Entity: Book
Role: anonymous | Actions: Read
Role: authenticated | Actions: Read (inherited from: anonymous)
Unconfigured roles inherit from: anonymous
Entity: Order
Role: admin | Actions: Create, Read, Update, Delete
Role: anonymous | Actions: Read
Role: authenticated | Actions: Read (inherited from: anonymous)
Unconfigured roles inherit from: authenticated
전체 옵션은 다음을 참조하세요 --show-effective-permissions.
상속 및 명시적 권한
| 시나리오 | 권장 사항 |
|---|---|
| 모든 역할에는 동일한 액세스 권한이 있어야 합니다. |
anonymous에 한 번 정의하면 모든 역할이 이를 상속하도록 설정합니다 |
| 인증된 사용자는 익명보다 더 많은 액세스 권한이 필요합니다. | 정의 읽기anonymous, 추가authenticated 만들기/업데이트 |
명명된 역할에는 보다 광범위한 액세스가 필요합니다. authenticated |
명명된 역할을 명시적으로 정의합니다. 다른 항목은 authenticated 에서 상속받습니다. |
명명된 역할에는 보다 적은 액세스 권한이 필요합니다. authenticated |
축소된 작업을 사용하여 명명된 역할을 명시적으로 정의합니다. |
| 엔터티는 완전히 프라이빗이어야 합니다. |
authenticated 및 anonymous는 정의하지 않고 명시된 특정 역할만 부여하십시오. |