Casbin RBAC vs. RBAC96
Casbin RBAC과 RBAC96
이 문서에서는 Casbin RBAC과 RBAC96을 비교하겠습니다.
Casbin RBAC은 RBAC96의 거의 모든 기능을 지원하며 그 위에 새로운 기능을 추가합니다.
RBAC 버전 | 지원 수준 | 설명 |
---|---|---|
RBAC0 | 완전히 지원됨 | RBAC0은 RBAC96의 기본 버전입니다. 사용자, 역할, 권한 간의 관계를 명확히 합니다. |
RBAC1 | 완전히 지원됨 | RBAC1은 RBAC0 위에 역할 계층을 추가합니다. 이는 alice 가 role1 을 가지고, role1 이 role2 를 가지면, alice 도 role2 를 가지고 그 권한을 상속한다는 것을 의미합니다. |
RBAC2 | 상호 배타적 처리 지원됨 (이렇게) | RBAC2는 RBAC0에 제약을 추가합니다. 이를 통해 RBAC2는 상호 배타적인 정책을 처리할 수 있습니다. 그러나, 양적 제한은 지원되지 않습니다. |
RBAC3 | 상호 배타적 처리 지원됨 (이렇게) | RBAC3는 RBAC1과 RBAC2의 조합입니다. RBAC1과 RBAC2에서 발견된 역할 계층 및 제약을 지원합니다. 그러나, 양적 제한은 지원되지 않습니다. |
Casbin RBAC과 RBAC96의 차이점
Casbin에서는 사용자와 역할 사이의 구분이 RBAC96만큼 명확하지 않습니다.
Casbin에서는 사용자와 역할 모두 문자열로 취급됩니다. 예를 들어, 다음과 같은 정책 파일을 고려해 보세요:
p, admin, book, read
p, alice, book, read
g, amber, adminCasbin Enforcer의 인스턴스를 사용하여
GetAllSubjects()
메소드를 호출하면:e.GetAllSubjects()
반환 값은 다음과 같습니다:
[admin alice]
이것은 Casbin에서 주체가 사용자와 역할을 모두 포함하기 때문입니다.
그러나,
GetAllRoles()
메소드를 호출하면:e.GetAllRoles()
반환 값은 다음과 같습니다:
[admin]
이로부터 Casbin에서 사용자와 역할 사이에 구분이 있지만, RBAC96만큼 뚜렷하지는 않다는 것을 알 수 있습니다. 물론,
user::alice
와role::admin
과 같이 정책에 접두사를 추가하여 그들의 관계를 명확히 할 수 있습니다.Casbin RBAC은 RBAC96보다 더 많은 권한을 제공합니다.
RBAC96은 읽기, 쓰기, 추가, 실행, 신용, 차감, 조회 등 7가지 권한만을 정의합니다.
그러나, Casbin에서는 권한을 문자열로 처리합니다. 이를 통해 당신의 필요에 더 잘 맞는 권한을 생성할 수 있습니다.
Casbin RBAC은 도메인을 지원합니다.
Casbin에서는 도메인을 기반으로 인증을 수행할 수 있습니다. 이 기능은 당신의 접근 제어 모델을 더 유연하게 만듭니다.