Cerbos - 언어무관, 확장가능한 사용자 권한 관리 솔루션

4 weeks ago 12

  • 애플리케이션 리소스를 위한 강력하고 컨텍스트 인식적인 접근 제어 규칙을 정의할 수 있는 권한 관리 레이어
  • 간단한 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 및 어댑터:
    • 다양한 프로그래밍 언어를 지원하는 SDK 제공
    • PlanResources 응답을 쿼리로 변환하는 어댑터 제공

활용 사례

  • RBAC -> ABAC 확장:
    • 실행 시 조건 평가로 동적 역할 추가
    • 특정 사용자를 위한 상세한 정책 오버라이드 가능
  • 협업 및 정책 배포:
    • Cerbos Hub를 통해 팀과 협력하며 정책 작성
    • PDP 플릿 전체에 효율적으로 정책 업데이트 배포
  • 클라우드 및 엣지 환경 통합:
    • 클라우드 기반 서비스 및 엣지 배포에 적합

Read Entire Article