본문으로 건너뛰기

RBAC vs. RBAC96

Casbin RBAC과 RBAC96​

이 페이지는 Casbin의 RBAC을 RBAC96 모델과 비교합니다. Casbin은 RBAC96의 주요 개념을 지원하며 도메인과 유연한 권한 기능을 추가로 제공합니다.

RBAC96Casbin 지원비고
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.