Casbin

Casbin

  • 문서
  • API
  • 편집기
  • JetBrains Plugin
  • Dashboard
  • Forum
  • OA
  • Trend
  • Cloud
  • 도움말
  • 블로그
  • Languages icon한국어
    • English
    • 中文
    • 번역 참여하기
  • GitHub

›기초

기초

  • 개요(Overview)
  • 시작하기
  • 작동 원리
  • 자습서

모델

  • 지원하는 접근 제어 모델
  • 모델(Model) 문법
  • 함수
  • RBAC
  • RBAC + 도메인
  • ABAC

저장소

  • 모델(Model) 저장
  • 정책(Policy) 저장
  • 정책(Policy) 부분 집합 불러오기

확장 기능

  • 어댑터
  • 감시자
  • Dispatchers
  • 역할(Role) 관리자
  • 미들웨어

API

  • Management API
  • RBAC API

고급 사용법 (Advanced usage)

  • 멀티 스레딩
  • 벤치마크

관리

  • 관리자 포탈
  • Casbin 서비스
  • 로깅 및 오류 처리
  • 온라인 편집기
  • Frontend Usage

자세히

  • Casbin 적용 사례
  • Privacy Policy
  • Terms of Service
Translate

작동 원리

Casbin의 접근 제어 모델은 PERM 메타 모델 (Policy, Effect, Request, Matchers) 형식으로 추상화되어 CONF 파일에 저장됩니다. 따라서 프로젝트의 권한 부여 메커니즘을 전환하거나 확장하기 위해서는 단지 Conf 설정 파일을 변경하는 것으로 가능합니다. 가용한 모델을 결합하여 여러분의 필요에 맞는 접근 제어 모델을 구성할 수 있습니다. 예를 들면 RBAC 역할과 ABAC 속성을 혼용하여 하나의 모델에서 사용 가능하며, 같은 정책 규칙(Policy Rule) 을 공유할 수 있습니다.

Casbin에서 가장 단순하고 기본적인 모델은 ACL(Access Control List) 입니다. ACL 모델의 CONF 파일은 이렇게 생겼습니다.

# Request 정의
[request_definition]
r = sub, obj, act

# Policy 정의
[policy_definition]
p = sub, obj, act

# Policy effect (허용/거부)
[policy_effect]
e = some(where (p.eft == allow))

# 조건식
[matchers]
m = r.sub == p.sub && r.obj == p.obj && r.act == p.act

다음은 ACL 모델의 정책(Policy) 예제입니다.

p, alice, data1, read
p, bob, data2, write

이것은 다음을 의미합니다.

  • alice는 data1에 대해 read 할 수 있음
  • bob은 data2에 대해 write 할 수 있음

각 줄의 끝에 '\'를 붙여서 여러 줄로 작성할 수 있습니다.

# 조건시
[matchers]
m = r.sub == p.sub && r.obj == p.obj \ 
  && r.act == p.act

ABAC를 사용할 때는 다음과 같이 조건식에 in 연산자를 사용할 수 있습니다. (현재 golang 에서만 사용할 수 있고 jCasbin과 Node-Casbin에서는 아직 지원하지 않습니다.)

# 조건식
[matchers]
m = r.obj == p.obj && r.act == p.act || r.obj in ('data2', 'data3')

배열을 사용할 때는 반드시 배열의 요소를 2개 이상 포함하세요. 그렇지 않으면 심각한 오류가 발생할 수 있습니다.

더 많은 연산자에 대해서 알아보려면 govaluate를 참조하세요.

← 시작하기자습서 →
Casbin
Docs
Getting StartedManagement APIRBAC APIMiddlewares
Community
Who's using Casbin?ForumStack OverflowProject Chat
Casbin          jCasbin
Node-Casbin   PHP-CasbinPyCasbin          Casbin.NETCasbin-CPP        Casbin-RS
Follow @CasbinNews
Copyright © 2021 Casbin contributors.