보안 베스트 프랙티스
Multi-SaaS Kit의 보안 권장사항과 구현 가이드입니다.
개요
멀티테넌트 SaaS 플랫폼에서 보안은 가장 중요한 요소입니다. 데이터 격리, 인증/인가, API 보안 등 여러 계층에서 보안을 확보해야 합니다.
보안 계층
| 계층 | 목적 | 구현 방법 |
|---|---|---|
| 데이터 격리 | 테넌트 간 데이터 분리 | RLS, TenantScope |
| 인증 | 사용자 신원 확인 | Sanctum, 세션 |
| 인가 | 접근 권한 검증 | Policy, Gate, Middleware |
| API 보안 | API 남용 방지 | Rate Limiting, CORS |
| 입력 검증 | 악성 입력 차단 | Validation, Sanitization |
데이터 격리 보안
파괴적 DB 명령 차단
MSK는 Core DatabaseSafetyServiceProvider와 루트 Makefile에서 migrate:fresh, migrate:refresh, migrate:reset, db:wipe, schema:dump --prune을 기본 차단합니다. 운영 또는 장기 보존 데이터가 있는 환경에서 AI 에이전트나 사용자가 실수로 DB를 초기화하지 못하게 하는 안전장치입니다.
정말 필요한 경우에는 명령별 1회성 MSK_ALLOW_DESTRUCTIVE_ARTISAN token을 해당 실행에만 주입합니다. token을 .env에 저장하지 않습니다.
자세한 정책은 DB 안전 가드를 참고하세요.
RLS (Row-Level Security) 적용
모든 테넌트 데이터는 자동으로 격리되어야 합니다.
// BelongsToTenant trait 사용
class Order extends Model
{
use BelongsToTenant;
// tenant_id가 자동으로 설정되고 쿼리 시 필터링됨
}