본문으로 건너뛰기

개요

Casbin은 인가를 적용하고 여러 접근 제어 모델을 지원하는 효율적인 오픈 소스 접근 제어 라이브러리입니다.

규칙 기반 접근 제어 구현은 간단합니다. 필요에 맞는 형식의 정책(policy) 파일에 주체(subject), 대상(object), 허용된 동작(action)을 정의하면 됩니다. 이 패턴은 모든 Casbin 구현에서 일관되게 적용됩니다. 모델(model) 파일을 통해 개발자와 관리자는 레이아웃, 실행 흐름 및 조건 등 인가 로직을 완전히 제어할 수 있습니다. Enforcer 컴포넌트는 들어오는 요청을 모델과 정책에 따라 평가합니다.

Casbin이 지원하는 언어​

Casbin은 다양한 프로젝트와 워크플로우에 통합할 수 있도록 여러 프로그래밍 언어에 대한 네이티브 지원을 제공합니다:

golangjavanodejsphp
CasbinjCasbinnode-CasbinPHP-Casbin
프로덕션 준비 완료프로덕션 준비 완료프로덕션 준비 완료프로덕션 준비 완료
pythondotnetc++rust
PyCasbinCasbin.NETCasbin-CPPCasbin-RS
프로덕션 준비 완료프로덕션 준비 완료프로덕션 준비 완료프로덕션 준비 완료

언어별 기능 세트​

모든 언어 구현 간 기능 동등성을 목표로 하고 있으며, 완전한 통일성은 아직 달성되지 않았습니다.

기능GoJavaNode.jsPHPPythonC#DelphiRustC++LuaDartElixir
강제 적용(Enforcement)✅✅✅✅✅✅✅✅✅✅✅✅
RBAC✅✅✅✅✅✅✅✅✅✅✅✅
ABAC✅✅✅✅✅✅✅✅✅✅✅✅
확장형 ABAC (eval())✅✅✅✅✅✅❌✅✅✅✅✅
Adapter✅✅✅✅✅✅✅✅✅✅✅❌
관리 API✅✅✅✅✅✅✅✅✅✅✅✅
RBAC API✅✅✅✅✅✅✅✅✅✅✅✅
배치 API✅✅✅✅✅✅❌✅✅✅❌❌
필터링된 Adapter✅✅✅✅✅✅❌✅✅✅❌❌
Watcher✅✅✅✅✅✅✅✅✅✅❌❌
역할 관리자✅✅✅✅✅✅❌✅✅✅✅❌
멀티 스레딩✅✅✅❌✅❌❌✅❌❌❌❌
매처의 'in' 연산자✅✅✅✅✅❌✅❌❌❌✅✅
노트

Watcher 또는 역할 관리자에 대한 체크마크(✅)는 해당 인터페이스가 코어 라이브러리에 존재함을 의미하며, 특정 언어에 대한 구현체가 반드시 제공됨을 보장하지는 않습니다.

Casbin이란?​

Casbin은 리소스에 대한 제어된 접근이 필요한 애플리케이션을 위한 인가(authorization) 라이브러리입니다. 일반적으로 주체(subject)(사용자 또는 서비스)가 대상(object)(리소스 또는 엔티티)에 대해 동작(action)(예: 읽기, 쓰기 또는 삭제)을 수행하기 위해 접근을 요청합니다. 이러한 동작은 애플리케이션에 맞게 정의할 수 있습니다. 이는 Casbin이 가장 일반적으로 처리하는 표준 { subject, object, action } 흐름입니다.

Casbin은 또한 역할(RBAC), 속성(ABAC) 및 기타 패턴을 통해 더 복잡한 시나리오를 지원합니다.

Casbin의 기능​

  1. 전통적인 { subject, object, action } 형식이나 사용자가 정의한 커스텀 형식으로 정책을 강제 적용하며, 허용(allow)과 거부(deny) 모두를 지원합니다.
  2. 접근 제어 모델 및 정책을 위한 저장소를 관리합니다.
  3. 사용자-역할 및 역할-역할 관계를 처리합니다(RBAC 역할 계층 구조).
  4. 내장 슈퍼유저를 지원합니다(예: root, administrator). 명시적 규칙 없이도 제한 없는 접근 권한을 가집니다.
  5. 패턴 매칭용 내장 연산자를 제공합니다(예: keyMatch는 /foo/bar가 /foo*와 일치하도록 합니다).

Casbin이 하지 않는 것​

  1. 사용자 인증 — 로그인 시 사용자 이름과 비밀번호를 검증하는 작업.
  2. 사용자 또는 역할 목록 관리 — 사용자나 역할의 목록을 유지 관리하는 작업.

대부분의 애플리케이션은 이미 사용자, 역할 및 자격 증명을 관리합니다. Casbin은 인가(authorization)에만 초점을 맞추며 비밀번호를 저장하거나 검증하지 않습니다. 단, RBAC 모드에서는 사용자-역할 연결 관계를 유지 관리합니다.

다음 단계​

Comments are powered by giscus and GitHub Discussions. They load from giscus.app and GitHub only after you click the button below.