Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
casbin — ACL, RBAC, ABAC 및 사용자 지정 접근 제어 모델을 적용하며, 애플리케이션 및 서비스를 위한 RESTful 매칭 및 정책 관리 API를 제공하는 권한 부여 라이브러리입니다. | Kitploit
도구/GitHubGitHub/apache/casbin
Authentication & AuthorizationIdentity ManagementIdentity & Access Management (IAM)API Security
GitHubapache/casbin

casbin

ACL, RBAC, ABAC 및 사용자 지정 접근 제어 모델을 적용하며, 애플리케이션 및 서비스를 위한 RESTful 매칭 및 정책 관리 API를 제공하는 권한 부여 라이브러리입니다.

저장소 보기
20.3k1.8k2일 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
웹사이트

Apache Casbin

Lint Build Coverage Status Godoc Release Discord

뉴스: 올바른 Apache Casbin 정책을 작성하는 방법이 아직도 고민되시나요? Apache Casbin 온라인 에디터가 도와드립니다! https://casbin.apache.org/editor/ 에서 사용해 보세요!

casbin Logo

Apache Casbin은 Golang 프로젝트를 위한 강력하고 효율적인 오픈소스 접근 제어 라이브러리입니다. 다양한 접근 제어 모델을 기반으로 인가(권한 부여)를 강제하는 것을 지원합니다.

Apache Casbin이 지원하는 모든 언어:

목차

  • 지원 모델
  • 작동 방식
  • 기능
  • 설치
  • 문서
  • 온라인 에디터
  • 튜토리얼
  • 시작하기
  • 정책 관리
  • 정책 영속화
  • 여러 노드 간 정책 일관성
  • 역할 관리자
  • 벤치마크
  • 예제
  • 미들웨어
  • 우리를 채택한 프로젝트

지원 모델

  1. ACL (접근 제어 목록)
  2. 슈퍼유저가 있는 ACL
  3. 사용자가 없는 ACL: 인증이나 사용자 로그인이 없는 시스템에 특히 유용합니다.
  4. 리소스가 없는 ACL: 일부 시나리오에서는 개별 리소스 대신 write-article, read-log 같은 권한을 사용하여 리소스 유형을 대상으로 할 수 있습니다. 특정 기사나 로그에 대한 접근을 제어하지 않습니다.
  5. RBAC (역할 기반 접근 제어)
  6. 리소스 역할이 있는 RBAC: 사용자와 리소스 모두 동시에 역할(또는 그룹)을 가질 수 있습니다.
  7. 도메인/테넌트가 있는 RBAC: 사용자는 도메인/테넌트에 따라 서로 다른 역할 집합을 가질 수 있습니다.
  8. ABAC (속성 기반 접근 제어): resource.Owner 같은 문법 설탕을 사용하여 리소스의 속성을 가져올 수 있습니다.
  9. RESTful: /res/*, /res/:id 같은 경로와 GET, POST, PUT, DELETE 같은 HTTP 메서드를 지원합니다.

작동 방식

Casbin에서 접근 제어 모델은 **PERM 메타모델(Policy, Effect, Request, Matchers)**을 기반으로 CONF 파일로 추상화됩니다. 따라서 프로젝트의 인가 메커니즘을 전환하거나 업그레이드하는 것은 구성을 수정하는 것만큼 간단합니다. 사용 가능한 모델을 결합하여 자신만의 접근 제어 모델을 맞춤 설정할 수 있습니다. 예를 들어, 하나의 모델 안에 RBAC 역할과 ABAC 속성을 함께 사용하고 하나의 정책 규칙 집합을 공유할 수 있습니다.

Casbin에서 가장 기본적이고 단순한 모델은 ACL입니다. ACL 모델 CONF는 다음과 같습니다:

root@kitploit:~
# Request definition
[request_definition]
r = sub, obj, act

# Policy definition
[policy_definition]
p = sub, obj, act

# Policy effect
[policy_effect]
e = some(where (p.eft == allow))

# Matchers
[matchers]
m = r.sub == p.sub && r.obj == p.obj && r.act == p.act

ACL 모델의 예제 정책은 다음과 같습니다:

root@kitploit:~
p, alice, data1, read
p, bob, data2, write

의미는 다음과 같습니다:

  • alice는 data1을 읽을 수 있습니다.
  • bob은 data2를 쓸 수 있습니다.

또한 끝에 '\'를 붙여 여러 줄 모드를 지원합니다:

root@kitploit:~
# Matchers
[matchers]
m = r.sub == p.sub && r.obj == p.obj \
  && r.act == p.act

또한 ABAC를 사용하는 경우 Casbin golang 버전에서는 다음과 같이 in 연산자를 사용할 수 있습니다 (jCasbin과 Node-Casbin은 아직 지원되지 않습니다):

root@kitploit:~
# Matchers
[matchers]
m = r.obj == p.obj && r.act == p.act || r.obj in ('data2', 'data3')

하지만 배열의 길이가 1보다 커야 합니다. 그렇지 않으면 패닉(panic)이 발생할 수 있습니다.

더 많은 연산자를 보려면 govaluate를 참조하세요.

기능

Apache Casbin이 하는 일:

  1. 고전적인 {subject, object, action} 형식 또는 사용자가 정의한 사용자 지정 형식으로 정책을 강제하며, 허용 및 거부 인가를 모두 지원합니다.
  2. 접근 제어 모델과 해당 정책의 저장을 처리합니다.
  3. 역할-사용자 매핑과 역할-역할 매핑(RBAC의 역할 계층)을 관리합니다.
  4. root 또는 administrator 같은 내장 슈퍼유저를 지원합니다. 슈퍼유저는 명시적인 권한 없이 무엇이든 할 수 있습니다.
  5. 규칙 매칭을 지원하는 여러 내장 연산자를 제공합니다. 예를 들어, keyMatch는 리소스 키 /foo/bar를 패턴 /foo*에 매핑할 수 있습니다.

Apache Casbin이 하지 않는 일:

  1. 인증(사용자가 로그인할 때 username과 password를 확인하는 것)
  2. 사용자 또는 역할 목록을 관리하지 않습니다. 이러한 엔티티는 프로젝트 자체에서 관리하는 것이 더 편리하다고 생각합니다. 사용자는 일반적으로 자신의 비밀번호를 가지고 있으며, Apache Casbin은 비밀번호 저장소로 설계되지 않았습니다. 그러나 Apache Casbin은 RBAC 시나리오를 위해 사용자-역할 매핑을 저장합니다.

설치

root@kitploit:~
go get github.com/casbin/casbin/v3

문서

https://casbin.apache.org/docs/overview

온라인 에디터

웹 브라우저에서 온라인 에디터(https://casbin.apache.org/editor/)를 사용하여 Casbin 모델과 정책을 작성할 수도 있습니다. 프로그래밍 언어용 IDE처럼 구문 강조 및 코드 완성 같은 기능을 제공합니다.

튜토리얼

https://casbin.apache.org/docs/tutorials

시작하기

  1. 모델 파일과 정책 파일로 Casbin enforcer를 생성합니다:

    root@kitploit:~
    e, _ := casbin.NewEnforcer("path/to/model.conf", "path/to/policy.csv")
    

참고: 파일 대신 DB의 정책으로 enforcer를 초기화할 수도 있습니다. 자세한 내용은 정책 영속화 섹션을 참조하세요.

  1. 접근이 발생하기 직전에 코드에 인가 후크를 추가합니다:

    root@kitploit:~
    sub := "alice" // the user that wants to access a resource.
    obj := "data1" // the resource that is going to be accessed.
    act := "read" // the operation that the user performs on the resource.
    
    if res, _ := e.Enforce(sub, obj, act); res {
        // permit alice to read data1
    } else {
        // deny the request, show an error
    }
    
  2. 정적 정책 파일 외에도 Apache Casbin은 런타임 시 권한 관리를 위한 API를 제공합니다. 예를 들어, 아래와 같이 사용자에게 할당된 모든 역할을 가져올 수 있습니다:

    root@kitploit:~
    roles, _ := e.GetImplicitRolesForUser(sub)
    

더 많은 사용법은 정책 관리 API를 참조하세요.

정책 관리

Apache Casbin은 권한 관리를 위한 두 가지 API 세트를 제공합니다:

  • Management API: Apache Casbin 정책 관리에 대한 완전한 지원을 제공하는 기본 API입니다.
  • RBAC API: RBAC에 더 친숙한 API입니다. 이 API는 Management API의 하위 집합입니다. RBAC 사용자는 이 API를 사용하여 코드를 단순화할 수 있습니다.

또한 모델 관리와 정책 관리를 위한 웹 기반 UI를 제공합니다:

모델 에디터

정책 에디터

정책 영속화

https://casbin.apache.org/docs/adapters

여러 노드 간 정책 일관성

https://casbin.apache.org/docs/watchers

역할 관리자

https://casbin.apache.org/docs/role-managers

벤치마크

https://casbin.apache.org/docs/benchmark

예제

미들웨어

웹 프레임워크용 Authz 미들웨어: https://casbin.apache.org/docs/middlewares

우리를 채택한 프로젝트

https://casbin.apache.org/docs/adopters

기여하는 방법

기여 가이드를 읽어 주세요.

기여자

이 프로젝트는 기여해 주신 모든 분들 덕분에 존재합니다.

스타 기록

Star History Chart

라이선스

이 프로젝트는 Apache 2.0 라이선스에 따라 라이선스가 부여됩니다.

연락처

문제가 있거나 기능 요청이 있으면 연락해 주세요. PR은 언제나 환영합니다.

  • https://github.com/apache/casbin/issues
  • https://discord.gg/S5UjpzGZjN
도구 다운로드
golangjavanodejsphp
CasbinjCasbinnode-CasbinPHP-Casbin
프로덕션 사용 가능프로덕션 사용 가능프로덕션 사용 가능프로덕션 사용 가능
pythondotnetc++rust
PyCasbinCasbin.NETCasbin-CPPCasbin-RS
프로덕션 사용 가능프로덕션 사용 가능프로덕션 사용 가능프로덕션 사용 가능
  • Deny-override: 허용(allow)과 거부(deny) 인가를 모두 지원하며, 거부가 허용을 덮어씁니다.
  • Priority: 정책 규칙은 방화벽 규칙처럼 우선순위를 지정할 수 있습니다.
  • 모델모델 파일정책 파일
    ACLbasic_model.confbasic_policy.csv
    슈퍼유저가 있는 ACLbasic_model_with_root.confbasic_policy.csv
    사용자가 없는 ACLbasic_model_without_users.confbasic_policy_without_users.csv
    리소스가 없는 ACLbasic_model_without_resources.confbasic_policy_without_resources.csv
    RBACrbac_model.confrbac_policy.csv
    리소스 역할이 있는 RBACrbac_model_with_resource_roles.confrbac_policy_with_resource_roles.csv
    도메인/테넌트가 있는 RBACrbac_model_with_domains.confrbac_policy_with_domains.csv
    ABACabac_model.confN/A
    RESTfulkeymatch_model.confkeymatch_policy.csv
    Deny-overriderbac_model_with_deny.confrbac_policy_with_deny.csv
    Prioritypriority_model.confpriority_policy.csv