피드로 돌아가기
One install, many customers: building airtight multi-tenancy into a self-hosted security platform
Dev.toDev.to
Security

단일 코드베이스 기반의 Airtight Multi-tenancy 아키텍처 구현

One install, many customers: building airtight multi-tenancy into a self-hosted security platform

Saint Zero Day2026년 6월 2일8intermediate

Context

단일 고객 대상의 self-hosted 보안 플랫폼을 다수 고객 수용이 가능한 Multi-tenant 구조로 확장 필요. 고객 간 데이터 격리(Isolation)를 보장하면서도 기존 단일 설치 모드와 호환되는 유연한 배포 모델 설계가 핵심 과제.

Technical Solution

  • Data Layer Scoping: 모든 DB 쿼리에 tenant_id를 강제하여 핸들러 계층의 실수와 무관하게 데이터 접근을 원천 차단하는 구조 설계
  • Enrollment Token Binding: Agent 설치 시 고객별 고유 Secret Token을 부여하여 등록 단계부터 Tenant 소속을 고정하는 Write-side 격리 구현
  • Identity Verification: mTLS client certificate의 Common Name과 Agent ID를 대조하여 위장 보고 및 타 고객 데이터 쓰기를 방지하는 검증 로직 도입
  • Request Context Threading: 세션 기반의 Tenant ID를 API와 스토어 계층까지 전달하여 모든 리소스 접근을 현재 컨텍스트로 제한하는 흐름 구축
  • Feature Toggle per Tenant: 고객별 구매 제품에 따라 EDR, Patch Management 등 기능 활성화 여부를 제어하는 권한 관리 체계 적용
  • Adversarial Testing: Store-level 및 E2E HTTP 테스트를 통해 타 Tenant의 데이터 읽기/쓰기/제어 시도가 실패함을 증명하는 검증 프로세스 수립

- DB 접근 계층(Data Layer)에서 tenant_id 필터링을 강제하여 비즈니스 로직의 누락 가능성 제거 - Agent-Server 통신 시 클라이언트가 주장하는 ID가 아닌, 인증서(mTLS)나 서버측 레코드에 기반한 신원 확인 수행 - 격리 설계 후에는 '정상 작동' 확인이 아닌 '비정상 접근 실패'를 확인하는 적대적 테스트(Adversarial Test) 케이스 작성

원문 읽기