Cerbos
언어무관, 확장가능한 사용자 권한 관리 솔루션
About
- 애플리케이션 리소스를 위한 강력하고 컨텍스트 인식적인 접근 제어 규칙을 정의할 수 있는 권한 관리 레이어
- 간단한 YAML 정책으로 작성하며, GitOps 기반 인프라를 통해 관리 및 배포 가능
- Cerbos 정책 결정 지점(PDP, Policy Decision Point) 를 셀프호스팅 하고. 고가용성 API를 통해 정책을 평가하고 동적 접근 결정을 수행
Cerbos 주요 특징
- 정책 작성 및 배포:
- YAML 형식으로 정책 정의
- 디스크, 클라우드 오브젝트 스토어, Git 저장소 또는 데이터베이스를 통해 정책 저장
- K8s 서비스, 사이드카, systemd 서비스, AWS Lambda 등 다양한 환경에서 배포 가능
- 서버리스 및 엣지 배포에 쉽게 통합 가능
- 단순 RBAC(Role-Based Access Control)을 넘어 ABAC(Attribute-Based Access Control) 구현
- 실행 시 컨텍스트 데이터를 사용해 세분화된 조건 평가 가능
핵심 개념
- Principal: 작업을 수행하려는 주체(예: 사용자, 애플리케이션, 서비스)
- Action: 주체가 수행하려는 작업(예: 생성, 읽기, 업데이트, 삭제 등)
- Resource: 접근을 제어하는 대상(예: 보고서, 영수증, 카드 정보 등)
- Policies: 리소스별 접근 규칙을 정의하는 YAML 파일
- Cerbos PDP:
- 정책을 실행하고 접근 결정을 내리는 Stateless 서비스
- 주요 API:
- CheckResources: 특정 주체가 리소스에 접근 가능한지 확인
- PlanResources: 특정 주체가 어떤 리소스에 접근 가능한지 확인
- 다양한 프로그래밍 언어를 지원하는 SDK 제공
- PlanResources 응답을 쿼리로 변환하는 어댑터 제공
활용 사례
- RBAC -> ABAC 확장:
- 실행 시 조건 평가로 동적 역할 추가
- 특정 사용자를 위한 상세한 정책 오버라이드 가능
- Cerbos Hub를 통해 팀과 협력하며 정책 작성
- PDP 플릿 전체에 효율적으로 정책 업데이트 배포
- 클라우드 기반 서비스 및 엣지 배포에 적합
Usage
docker run --rm --name cerbos -d -v $(pwd)/cerbos-quickstart/policies:/policies -p 3592:3592 -p 3593:3593 ghcr.io/cerbos/cerbos:0.40.0