개요(Overview)
Casbin은 강력하고 효율적인 오픈소스 접근 제어 라이브러리입니다. 다양한 접근 제어 모델에 기반한 권한 부여를 지원합니다.
Casbin이 지원하는 언어
![]() | ![]() | ![]() | ![]() |
|---|---|---|---|
| Casbin | jCasbin | node-Casbin | PHP-Casbin |
| 실무 개발 적합(Production-Ready) | 실무 개발 적합(Production-Ready) | 실무 개발 적합(Production-Ready) | 실무 개발 적합(Production-Ready) |
![]() | ![]() | ![]() | ![]() |
|---|---|---|---|
| PyCasbin | Casbin.NET | Casbin-CPP | Casbin-RS |
| 실무 개발 적합(Production-Ready) | 실무 개발 적합(Production-Ready) | production-ready | production-ready |
언어별 기능 지원 현황
| Feature | 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 | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ |
Casbin이 모든 언어에서 같은 기능을 지원하도록 최선을 다하고 있습니다. 그러나 아직은 완벽하지 않습니다. 현재 진행 상황은 위의 표와 같습니다. ✅ Watcher와 Role Manager는 core 라이브러리에서 인터페이스로만 존재합니다. Watcher와 Role Manager의 구현 여부는 아직 결정하지 못했습니다.
Casbin이란?
Casbin이 하는 것:
- 전통적인
{보안 주체, 대상, 행위}형식이나 여러분이 별도로 정의한 형식에 따라 보안 정책을 실시합니다. 권한 허용과 거부를 모두 지원합니다. - 접근 제어 모델과 보안 정책을 저장합니다.
- 사용자-역할 간 맵핑 및 역할-역할 간 맵핑(역할-기반 접근 제어에서의 역할 계층)을 관리합니다.
- support built-in superuser like
rootoradministrator. A superuser can do anything without explicit permissions. - 규칙 검사를 위한 다양한 빌트인 연산자를 제공합니다. 예를 들어,
keyMatch는 리소스 키/foo/bar를 패턴/foo*에 매칭합니다.
Casbin이 하지 않는 것:
- 인증 (로그인 시
username과password를 검증하는 것) - 사용자와 역할 목록 관리. 해당 프로젝트에서 이들을 직접 관리하는 것이 더 편할 것이라고 생각합니다. 사용자 정보에는 패스워드가 있는데, Casbin은 패스워드 저장소로는 설계되지 않았습니다. 다만, Casbin은 역할-기반 접근 제어 시나리오에서 사용될 사용자와 역할 간의 연결을 저장합니다.







