피드로 돌아가기
Dev.toBackend
원문 읽기
11개 Middleware 체인 기반의 Multi-Tenant SaaS 보안 및 컨텍스트 격리 설계
11 Middlewares and 6 Traits That Power a Multi-Tenant Laravel SaaS
AI 요약
Context
Multi-Tenant SaaS 환경에서 요청마다 회사 컨텍스트 식별, 세션 유효성, 구독 상태 및 보안 잠금 등 다수의 검증 단계가 중복 발생함. 개별 컨트롤러 수준의 처리로 인한 코드 중복과 일관성 없는 보안 정책 적용의 한계를 해결해야 하는 상황임.
Technical Solution
- 실행 순서가 엄격히 정의된 11단계 Middleware Stack을 통한 요청 파이프라인 단일화
- SetActiveCompanyMiddleware를 최상단에 배치하여 이후 모든 Middleware가 참조할 Company Context 선제적 결정
- DB 기반의 UserSession 상태 관리를 통해 쿠키 조작이 불가능한 PIN Lock 메커니즘 구현
- HTTP 423 상태 코드를 활용하여 API 요청과 웹 요청의 보안 처리 로직을 분리 설계
- BelongsToCompany 및 HasRolesAndPermissions 등 Composable Traits를 통한 모델 단위의 Tenant 격리 및 RBAC 구현
- Laravel 12의 bootstrap/app.php 설정을 통해 Middleware 구성의 가시성을 확보하고 파편화 방지
실천 포인트
- Multi-Tenant 시스템 설계 시 컨텍스트 결정 Middleware를 인증 및 권한 체크보다 앞서 배치했는지 확인 - 보안 상태(PIN Lock, Ban 등)를 세션이 아닌 DB 기반으로 관리하여 무결성 확보 검토 - API 응답 시 Redirect 대신 적절한 HTTP 상태 코드(예: 423 Locked)를 반환하는 예외 처리 구조 적용 - 반복되는 비즈니스 로직을 Trait으로 모듈화하여 모델 간 일관된 데이터 격리 전략 수립