Skip to content

NestJS 멀티테넌시와 PostgreSQL RLS

@nestarc/tenancy 0.14.x는 요청에서 테넌트 ID를 추출하고, Prisma Client Extension이 트랜잭션 내부에서 PostgreSQL 세션 컨텍스트를 설정하도록 돕습니다. 실제 격리는 데이터베이스의 RLS 정책이 수행합니다.

반드시 확인할 점

  • 기본 테넌트 ID 검증은 UUID 형식입니다. 다른 형식이나 존재 확인이 필요하면 validateTenantId를 설정합니다.
  • TenancyModule.forRoot() 등록만으로 Prisma 쿼리가 격리되지는 않습니다. createPrismaTenancyExtension()으로 만든 확장 클라이언트를 사용해야 합니다.
  • 테이블 소유자 우회를 막아야 한다면 FORCE ROW LEVEL SECURITY와 운영 DB 역할을 함께 검토합니다.
  • 배치와 큐 작업은 HTTP 요청 밖에서 실행되므로 TenancyContext.run()으로 컨텍스트를 명시합니다.

전체 설치 문서 · 테스트 유틸리티 · PostgreSQL RLS 공식 문서

Last updated:

MIT 라이선스로 배포됩니다.