구글처럼 복잡한 권한 쉽게 관리하기 feat. GraphQL
269
AI 요약

이 글은 AI가 원문을 분석하여 핵심 내용을 요약한 것입니다.

구글처럼 복잡한 권한 쉽게 관리하기 feat. GraphQL

이 게시물은 당근 알림 경험팀에서 복잡한 권한 관리를 개선하기 위해 ReBAC(Relation-Based Access Control)과 GraphQL에서 영감을 받은 graplix 프레임워크를 도입한 사례를 소개합니다.

권한 관리 문제점과 기존 방식

  • 기존 RBAC(Role-Based Access Control)은 역할 기반으로 권한을 관리하지만 역할과 권한이 폭발적으로 늘어나 관리가 어려워짐
  • 복잡한 권한 관계와 엔티티 위계 표현에 한계가 있음

ReBAC과 graplix의 도입

  • ReBAC은 엔티티 간 관계를 기반으로 권한을 관리하여 복잡한 관계를 자연스럽게 표현
  • graplix는 TypeScript 기반의 오픈소스 ReBAC 프레임워크로, 스키마 우선 접근 방식으로 권한 관계를 그래프로 표현함

구현 방법과 활용

  • 엔티티와 관계를 스키마로 선언하고 identify 함수와 리졸버로 관계 평가 로직 구현
  • check 함수를 통해 권한 검사 기능을 제공하며, React 컴포넌트 과 hook으로 쉽게 권한 제어 가능
  • decorate 옵션으로 권한 제어 컴포넌트 시각화 지원

마무리

ReBAC 도입으로 코드가 간결하고 선언적으로 변했으며, N+1 문제는 Dataloader와 캐싱으로 대응 중이라고 설명합니다.

연관 게시글