목록 보기
멀티 테넌트 데이터를 격리하고 더 안전하게 만드는 방법
백엔드

멀티 테넌트 데이터를 격리하고 더 안전하게 만드는 방법

NHN
NHN
2024년 10월 21일

두줄요약

멀티 테넌트 데이터의 격리 수준과 행 단위 격리의 장단점을 정리했습니다. 쿼리에서 tenant_id 사용을 강제하고 암호화로 보호하는 방법도 소개했습니다.

핵심 내용

  • 멀티 테넌트 서비스의 데이터 격리 수준을 행 단위, 테이블 단위, 데이터베이스 단위로 구분
  • 행 단위 격리는 비용과 구조 면에서 유리하지만 보안 위험과 성능 저하 가능성 존재
  • 격리 강화를 위해 쿼리에서 tenant_id 사용을 시스템적으로 강제화하는 방법 소개
  • 격리 실패 시 리스크 완화를 위해 테넌트별 고유 키 암호화 저장 필요성 언급

주의할 점

  • tenant_id가 빠진 조회 쿼리는 다른 테넌트 데이터 접근 위험 초래
  • 애플리케이션 관습에만 의존하면 코드 리뷰를 통과해도 격리 실패 가능
  • 단순 문자열 검증보다 SQL Parser 기반 검사가 더 적절할 수 있음

적용해볼 점

  • JDBC DataSource Wrapper와 Spring BeanPostProcessor로 tenant_id 검증 강제화
  • PreparedStatement 사용을 강제하고 Statement 사용을 차단
  • 중앙 거버넌스 관점에서는 데이터베이스 미들웨어 도입 검토

댓글 0

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...