RBAC vs. RBAC96
Casbin RBAC과 RBAC96
이 페이지는 Casbin의 RBAC을 RBAC96 모델과 비교합니다. Casbin은 RBAC96의 주요 개념을 지원하며 도메인과 유연한 권한 기능을 추가로 제공합니다.
| RBAC96 | Casbin 지원 | 비고 |
|---|---|---|
| RBAC0 | ✅ 전체 | 사용자, 역할, 권한 및 이들 간의 관계. |
| RBAC1 | ✅ 전체 | 역할 계층 구조(예: alice→role1→role2). |
| RBAC2 | ⚠️ 부분적 | 정책 효과를 통한 제약 스타일 처리(예: deny-override). 정량적 제한 없음. |
| RBAC3 | ⚠️ 부분적 | RBAC1 + RBAC2; 위의 제약 조건과 동일, 정량적 제한 없음. |
RBAC96과의 차이점
1. 사용자와 역할
Casbin은 타입 시스템에서 “사용자”와 “역할”을 분리하지 않으며, 둘 다 문자열입니다. 따라서:
p, admin, book, read
p, alice, book, read
g, amber, admin
GetAllSubjects()는 정책에서 주체(subject)로 나타나는 모든 사용자와 역할을 반환합니다([admin alice]). GetAllRoles()는 g 규칙의 오른쪽 항만 반환합니다([admin]). 즉, Casbin은 사용 방식으로부터 구분을 추론합니다. 엄격한 분리를 원한다면 명명 규칙(예: user::alice, role::admin)을 사용하세요.
2. 권한
RBAC96은 7가지 고정된 권한 유형을 가집니다. Casbin에서는 권한이 임의의 문자열(예: read, write, approve)이므로 애플리케이션 요구사항에 맞게 정의할 수 있습니다.
3. 도메인
Casbin은 도메인을 포함한 RBAC를 지원하므로, 역할과 권한을 테넌트 또는 도메인별로 범위를 지정할 수 있으며 이는 표준 RBAC96 모델을 뛰어넘는 기능입니다.
Comments are powered by giscus and GitHub Discussions. They load from giscus.app and GitHub only after you click the button below.