주요 콘텐츠로 건너뛰기

Casbin RBAC vs. RBAC96

Casbin RBAC과 RBAC96

이 문서에서는 Casbin RBAC과 RBAC96을 비교하겠습니다.

Casbin RBAC은 RBAC96의 거의 모든 기능을 지원하며 그 위에 새로운 기능을 추가합니다.

RBAC 버전지원 수준설명
RBAC0완전히 지원됨RBAC0은 RBAC96의 기본 버전입니다. 사용자, 역할, 권한 간의 관계를 명확히 합니다.
RBAC1완전히 지원됨RBAC1은 RBAC0 위에 역할 계층을 추가합니다. 이는 alicerole1을 가지고, role1role2를 가지면, alicerole2를 가지고 그 권한을 상속한다는 것을 의미합니다.
RBAC2상호 배타적 처리 지원됨 (이렇게)RBAC2는 RBAC0에 제약을 추가합니다. 이를 통해 RBAC2는 상호 배타적인 정책을 처리할 수 있습니다. 그러나, 양적 제한은 지원되지 않습니다.
RBAC3상호 배타적 처리 지원됨 (이렇게)RBAC3는 RBAC1과 RBAC2의 조합입니다. RBAC1과 RBAC2에서 발견된 역할 계층 및 제약을 지원합니다. 그러나, 양적 제한은 지원되지 않습니다.

Casbin RBAC과 RBAC96의 차이점

  1. Casbin에서는 사용자와 역할 사이의 구분이 RBAC96만큼 명확하지 않습니다.

    Casbin에서는 사용자와 역할 모두 문자열로 취급됩니다. 예를 들어, 다음과 같은 정책 파일을 고려해 보세요:

    p, admin, book, read
    p, alice, book, read
    g, amber, admin

    Casbin Enforcer의 인스턴스를 사용하여 GetAllSubjects() 메소드를 호출하면:

    e.GetAllSubjects()

    반환 값은 다음과 같습니다:

    [admin alice]

    이것은 Casbin에서 주체가 사용자와 역할을 모두 포함하기 때문입니다.

    그러나, GetAllRoles() 메소드를 호출하면:

    e.GetAllRoles()

    반환 값은 다음과 같습니다:

    [admin]

    이로부터 Casbin에서 사용자와 역할 사이에 구분이 있지만, RBAC96만큼 뚜렷하지는 않다는 것을 알 수 있습니다. 물론, user::alicerole::admin과 같이 정책에 접두사를 추가하여 그들의 관계를 명확히 할 수 있습니다.

  2. Casbin RBAC은 RBAC96보다 더 많은 권한을 제공합니다.

    RBAC96은 읽기, 쓰기, 추가, 실행, 신용, 차감, 조회 등 7가지 권한만을 정의합니다.

    그러나, Casbin에서는 권한을 문자열로 처리합니다. 이를 통해 당신의 필요에 더 잘 맞는 권한을 생성할 수 있습니다.

  3. Casbin RBAC은 도메인을 지원합니다.

    Casbin에서는 도메인을 기반으로 인증을 수행할 수 있습니다. 이 기능은 당신의 접근 제어 모델을 더 유연하게 만듭니다.