피드로 돌아가기
Multi-Tenant Auth with Cognito and PostgreSQL Row-Level Security (Part 2)
Dev.toDev.to
Security

Postgres RLS와 Cognito JWT 연동을 통한 데이터 격리 자동화

Multi-Tenant Auth with Cognito and PostgreSQL Row-Level Security (Part 2)

Josh Blair2026년 5월 21일9intermediate

Context

Multi-tenant SaaS 환경에서 쿼리마다 tenant_id 필터를 수동으로 추가하는 방식의 위험성 분석. 단순한 개발 실수나 누락만으로도 타 테넌트의 데이터가 노출되는 치명적인 데이터 유출(Data Leak) 가능성 식별.

Technical Solution

  • Cognito Pre-Token Generation Lambda를 통한 JWT 내 tenantId 클레임 강제 삽입 및 무결성 확보
  • API Gateway의 Native JWT Authorizer를 활용한 서명 검증 자동화로 Lambda 도달 전 인증 필터링 구현
  • Postgres Session Variable(app.current_tenant_id) 설정을 통한 런타임 테넌트 컨텍스트 주입
  • Postgres Row-Level Security(RLS) 정책 설정을 통해 애플리케이션 코드와 무관한 DB 레벨의 강제 데이터 격리 구현
  • Defense in Depth 전략에 기반한 Cognito-API Gateway-Postgres 3단계 보안 체인 구축으로 단일 실패 지점 제거

- 애플리케이션 계층의 WHERE 절 의존도를 낮추고 DB 엔진 레벨의 RLS 도입 검토 - JWT Custom Claim을 활용하여 인증 정보와 테넌트 식별자를 단일 신뢰 체인으로 통합 - API Gateway 수준에서 JWT 검증을 처리하여 백엔드 컴퓨팅 리소스 낭비 방지 - DB 커넥션 팩토리 설계 시 세션 변수 설정을 위한 Pooling 설정 최적화 확인

원문 읽기