[reinvent 2025] AWS Lambda를 사용한 안전한 멀티 테넌트 SaaS: 테넌트 격리 심층 분석
Summary
AWS Lambda의 실행 환경 라이프사이클을 심층적으로 이해하고, 서비스가 함수 수준에서 격리를 관리하는 방식과 환경 재사용 패턴의 보안 영향을 살펴봅니다. 본 세션에서는 멀티 테넌트 환경에서 컴퓨팅 격리를 위한 전통적인 패턴을 학습하고, 운영 오버헤드 없이 테넌트 수준의 컴퓨팅 격리를 가능하게 하는 Lambda의 강력한 새 기능인 ‘테넌트 격리 모드(Tenant Isolation Mode)’를 탐구합니다. 이를 통해 견고한 테넌트 격리 전략 구현, 실행 간 상태 관리, 그리고 Lambda의 보안 경계를 효과적으로 활용하여 안전한 멀티 테넌트 아키텍처를 대규모로 구현하는 실용적인 지식을 얻을 수 있습니다.
리인벤트 2025 테크 블로그의 더 많은 글이 보고 싶다면?
Overview
Lambda로 안전한 멀티 테넌트 SaaS 애플리케이션 구축하기
세션 개요
싱글 테넌트 vs 멀티 테넌트
싱글 테넌트 환경은 각 테넌트가 전용 리소스를 가지는 구조로, 가장 높은 격리 수준을 제공하지만 규모가 커질수록 비용이 많이 듭니다. 반면 멀티 테넌트 환경은 여러 테넌트가 클라우드 리소스를 효율적으로 공유하여 비용이 낮고 운영이 간단하지만, 테넌트 간 격리를 유지해야 하는 과제가 있습니다.

멀티 테넌트의 핵심 문제
서버풀 환경의 비용 효율성은 탁월합니다. 전통적인 서버 환경은 피크 요구사항에 맞춰 액티브하게 스케일업하고 유휴 인프라에 대해 비용을 지불하지만, 서버리스는 사용량에 따라 비용이 선형적으로 증가합니다.
하지만 멀티 테넌트 Lambda 환경에서는 여러 테넌트의 요청이 무작위로 다양한 실행 환경에 분산됩니다. 블루, 그린, 옐로우 테넌트가 동일한 실행 환경을 사용할 수 있고, 시간이 지나면서 모든 테넌트가 여러 실행 환경에 무작위로 배치됩니다.
함수를 호출할 때마다 카운터가 증가하는데, 문제는 블루 테넌트가 남긴 데이터를 옐로우 테넌트가 볼 수 있고, 그린 테넌트도 블루와 옐로우의 잔여 데이터를 볼 수 있다는 것입니다. 이는 테넌트별 민감 정보나 다른 테넌트의 존재를 노출할 수 있어 비즈니스에 위험합니다.
기존 해결 방안

첫 번째 해결책은 테넌트당 함수를 생성하는 것입니다. 각 함수가 싱글 테넌트로 동작하여 가장 높은 격리 수준을 제공하지만, 5,000개나 50,000개의 테넌트가 있다면 운영 복잡도가 급증합니다. CI/CD가 복잡해지고, 관리 API 제한에 도달할 수 있습니다.
두 번째 해결책은 멀티 테넌트 함수에 커스텀 테넌시 프레임워크나 SDK를 구현하는 것입니다. 테넌트 검증, 자격증명 스코핑, 테넌트 레벨 로깅 등을 처리합니다. 리소스 활용도가 높고 단위 비용이 낮으며 테넌트 온보딩이 빠르다는 장점이 있습니다.
신규 솔루션 Tenant Isolation Mode

Lambda가 최근 발표한 Tenant Isolation Mode는 단일 함수가 각 테넌트에 대해 별도의 실행 환경을 생성합니다. 고유한 테넌트 식별자만 제공하면 Lambda가 테넌트별로 실행 환경을 분리하여, 다른 테넌트와 실행 환경을 절대 공유하지 않습니다.
구현 방법

함수를 생성할 때 Tenant Isolation 속성을 활성화하고, 요청 시 X-Amz-Tenant-Id 헤더를 포함시키면 됩니다. API Gateway와의 통합도 간단합니다. 커스텀 헤더를 Method Request에서 받아 Integration Request를 통해 Lambda로 전달되도록 설정하면 됩니다.
테넌트 ID는 요청 헤더, 쿼리 파라미터, 경로 파라미터, 요청 본문, Authorizer의 Principal ID, Authorizer가 반환한 커스텀 속성, 도메인 프리픽스 등 API Gateway에서 접근 가능한 모든 것을 사용할 수 있습니다. JWT 토큰을 통한 Authorizer 구현 샘플 코드도 제공됩니다.
테넌트별 IAM 권한
이렇게 하면 Lambda 함수가 두 세트의 자격증명을 갖게 됩니다. 함수 실행 역할은 모든 테넌트가 접근할 수 있는 공유 스토리지에 접근하고, 테넌트 스코프 자격증명은 특정 테넌트만 접근할 수 있는 데이터로 제한합니다.
결론 및 소감
Tenant Isolation Mode는 멀티 테넌트 함수의 대부분의 문제를 해결했습니다. 특히 인상 깊었던 점은 Lambda가 하나의 함수 안에서 테넌트별로 완전히 분리된 실행 환경을 제공하는 유일한 서비스라는 것입니다. 이제 개발자는 중복 함수를 만들 필요 없이 소수의 함수로 각 테넌트에 대한 별도 실행 환경을 제공받을 수 있습니다.


