Overview
Casbin은 강력하고 효율적인 오픈 소스 접근 제어 라이브러리로, 다양한 접근 제어 모델을 지원하여 권한을 전반적으로 강제합니다.
규칙 집합을 강제하는 것은 정책 파일에 주체, 객체, 원하는 허용 액션(또는 필요에 따른 다른 형식)을 나열하는 것만큼 간단합니다. 이것은 Casbin이 사용되는 모든 흐름에서 동일합니다. 개발자/관리자는 레이아웃, 실행, 그리고 모델 파일을 통해 설정된 권한 조건에 대해 완전한 제어권을 가지고 있습니다. Casbin은 정책과 모델 파일을 Enforcer에 제공하여 들어오는 요청을 검증하는 Enforcer를 제공합니다.
Casbin에 의해 지원되는 언어
Casbin은 다양한 프로그래밍 언어를 지원하여 어떤 프로젝트와 워크플로우에도 통합될 수 있습니다:
Casbin | jCasbin | node-Casbin | PHP-Casbin |
제품 출시 준비 완료 | 제품 출시 준비 완료 | 제품 출시 준비 완료 | 제품 출시 준비 완료 |
PyCasbin | Casbin.NET | Casbin-CPP | Casbin-RS |
제품 출시 준비 완료 | 제품 출시 준비 완료 | 제품 출시 준비 완료 | 제품 출시 준비 완료 |
다른 언어를 위한 기능 세트
우리는 항상 Casbin이 모든 언어에 대해 동일한 기능 세트를 가지도록 최선을 다하고 있습니다. 하지만, 현실은 그렇게 아름답지 않습니다.
기능 | Go | Java | Node.js | PHP | Python | C# | Delphi | Rust | C++ | Lua | Dart | Elixir |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Enforcement | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
RBAC | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
ABAC | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Scaling ABAC (eval() ) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ |
Adapter | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
Management API | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
RBAC API | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Batch API | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ |
Filtered Adapter | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ |
Watcher | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ |
Role Manager | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ |
Multi-Threading | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
'in' of matcher | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ |
참고 - ✅는 Watcher 또는 Role Manager가 핵심 라이브러리에 인터페이스를 가지고 있다는 것만을 의미합니다. 이것은 watcher 또는 role manager 구현이 가능한지 여부를 나타내는 것은 아닙니다.
Casbin이란 무엇인가?
Casbin은 특정 객체
또는 엔티티가 특정 사용자 또는 주체
에 의해 접근되는 흐름에서 사용할 수 있는 권한 라이브러리입니다. 접근 유형, 즉 행동
은 읽기, 쓰기, 삭제 또는 개발자가 설정한 다른 행동일 수 있습니다. 이것이 Casbin이 가장 널리 사용되는 방식이며, 이를 '표준' 또는 클래식 { 주체, 객체, 행동 }
흐름이라고 합니다.
Casbin은 표준 흐름 이외의 많은 복잡한 권한 시나리오를 처리할 수 있습니다. 역할 (RBAC), 속성 (ABAC) 등이 추가될 수 있습니다.
Casbin이 하는 일
- 클래식
{ 주체, 객체, 행동 }
형태 또는 사용자가 정의한 형태로 정책을 집행합니다. 허용 및 거부 권한이 모두 지원됩니다. - 접근 제어 모델과 그 정책의 저장을 처리합니다.
- 역할-사용자 매핑과 역할-역할 매핑(즉, RBAC에서의 역할 계층)을 관리합니다.
root
또는administrator
와 같은 내장된 슈퍼유저를 지원합니다. 슈퍼유저는 명시적인 권한 없이 모든 것을 할 수 있습니다.- 규칙 일치를 지원하는 여러 내장 연산자를 제공합니다. 예를 들어,
keyMatch
는 리소스 키/foo/bar
를 패턴/foo*
에 매핑할 수 있습니다.
Casbin이 하지 않는 일
- 인증(즉, 사용자가 로그인할 때
username
과password
를 검증하는 것) - 사용자 또는 역할 목록을 관리합니다.
프로젝트가 사용자, 역할, 또는 비밀번호 목록을 관리하는 것이 더 편리합니다. 사용자는 보통 비밀번호를 가지고 있으며, Casbin은 비밀번호 컨테이너로 설계되지 않았습니다. 그러나, Casbin은 RBAC 시나리오에 대한 사용자-역할 매핑을 저장합니다.