피드로 돌아가기
Dev.toSecurity
원문 읽기
permify-toolkit 기반 NestJS의 Type-safe 권한 제어 자동화
Fine-Grained Authorization in NestJS Without the Boilerplate (A TypeScript Toolkit for Permify)
AI 요약
Context
Google Zanzibar 모델 기반의 Permify 도입 시 발생하는 gRPC 클라이언트 설정 및 .perm 스키마 관리의 파편화 문제 발생. 특히 TypeScript 코드베이스와 외부 스키마 파일 간의 동기화 결여로 인한 런타임 설정 Drift 및 반복적인 보일러플레이트 작성의 한계 존재.
Technical Solution
- permify.config.ts 단일 설정 파일을 통한 Single Source of Truth 구축으로 CLI와 Runtime 간의 설정 동기화 확보
- TypeScript DSL 기반의 스키마 정의를 통해 컴파일 단계에서 Relation 및 Permission 이름의 Type-safety 검증 구현
- @CheckPermission 데코레이터를 통한 선언적 권한 체크 로직 분리로 컨트롤러 내부의 조건문 제거 및 가독성 향상
- CLI 도구를 활용하여 TS 스키마를 .perm 포맷으로 자동 변환 및 서버 푸시하는 파이프라인 구축
- Resolver 함수를 통한 Request 객체 내 Subject ID 추출 로직의 추상화로 Guard의 재사용성 증대
실천 포인트
1. 권한 모델 변경 시 전체 프로젝트 내 영향도를 파악하기 위해 TypeScript 기반의 스키마 정의 도입 검토
2. 인프라 설정 파일과 앱 설정 파일을 하나로 통합하여 배포 시 설정 불일치 가능성 제거
3. 컨트롤러 로직에서 권한 체크 if문을 제거하고 Guard와 Decorator 기반의 AOP 방식으로 전환