메뉴 닫기

멀티테넌트 SaaS를 위한 Amazon Bedrock 기반 RAG 구현 및 OpenSearch 데이터 분리 전략

최근 인공지능(AI)의 활용이 산업 전반으로 확산되고 있는 가운데, 대규모 언어 모델(LLM)의 성능을 강화하고 최신 정보 및 도메인 특화 지식을 반영하기 위한 기술로 ‘검색 기반 생성(RAG, Retrieval-Augmented Generation)’ 방식이 주목받고 있습니다. 특히 멀티테넌트 SaaS 환경에서 RAG를 구현하려는 수요가 높아지고 있으며, 이를 보다 안전하고 효율적으로 구축할 수 있는 솔루션으로 Amazon Bedrock과 Amazon OpenSearch Service를 사용하는 방식이 주목받고 있습니다.

RAG의 개요 및 SaaS에서의 활용 방안

RAG는 사용자의 질문을 벡터화하여 미리 인덱싱된 지식베이스나 문서에서 관련 정보를 검색하고, 이를 LLM의 입력값으로 활용하여 보다 정밀하고 맥락에 맞는 응답을 생성하는 구조입니다. 이 방식은 기술문서 기반의 제품 개발 지원, 고객지원 FAQ 응답, 최신 데이터 기반 의사결정 지원 시스템 등 다양한 분야에서 활용되고 있습니다.

멀티테넌트 SaaS 환경에서는 여러 고객(테넌트)의 데이터를 개별적으로 보호하면서도 각 테넌트에게 특화된 지식 기반을 제공하기 위해 RAG 구조의 효율적 활용이 필수적입니다. 예를 들어, 고객 상담 SaaS 시스템에서는 테넌트 별 고객문의 내역, 제품 매뉴얼, FAQ 등이 저장되어 있고, RAG를 통해 테넌트 고유의 정보 기반 응답이 가능합니다.

하지만 이러한 구조에서는 데이터 프라이버시와 보안을 확보하기 위한 철저한 테넌트 간 데이터 분리 및 접근 제어가 중요합니다.

멀티테넌트 환경에서 JWT와 FGAC(Fine-Grained Access Control) 기반의 테넌트 분리 전략

Amazon OpenSearch Service는 멀티테넌트 데이터를 도메인 수준, 인덱스 수준, 문서 수준에서 분리하는 다양한 방식을 제공합니다. JWT(JSON Web Token)와 FGAC를 결합하면 테넌트 데이터에 대한 안전하고 유연한 접근 제어 구현이 가능합니다.

JWT는 인증된 사용자정보 및 속성을 담은 자체 포함 토큰으로, 테넌트 ID를 포함함으로써 요청마다 어떤 테넌트에서 유입된 것인지 식별할 수 있습니다. OpenSearch의 FGAC는 JWT 내 속성을 기반으로 권한을 정의함으로써 정교한 인덱스 및 문서 수준의 접근 제어를 제공합니다.

아키텍처 구성 및 기술 사용 흐름
멀티테넌트 RAG 아키텍처 구성도

솔루션 구성의 주요 요소는 다음과 같습니다:

  1. Amazon Cognito 사용자 풀에서 사용자 인증 시, DynamoDB에 저장된 테넌트 정보를 토대로 JWT에 테넌트 ID를 삽입합니다.
  2. 사용자가 프론트엔드에서 질문을 입력하면 JWT와 함께 Lambda로 전달되고, 질문은 Amazon Bedrock의 임베딩 모델을 통해 벡터화됩니다.
  3. DynamoDB를 통해 어떤 도메인과 인덱스를 사용할지 결정해 OpenSearch에서 유효한 정보를 검색합니다.
  4. 검색된 정보는 LLM의 프롬프트로 전달되어 응답 생성에 활용됩니다.

JWT 기반 테넌트 라우팅 및 OpenSearch 권한 설정

JWT에 포함된 테넌트 ID는 API Gateway와 Lambda를 거치며 처리되며, Lambda 함수는 DynamoDB를 참조하여 알맞은 OpenSearch 도메인과 인덱스를 선택합니다. 각 테넌트는 별도의 FGAC 역할로 분리되며, JWT의 payload 안에 있는 tenant_id 값으로 OpenSearch에 전달된 요청이 해당 역할과 매핑됩니다.

아래는 OpenSearch 도메인에서 JWT 설정 화면입니다:
OpenSearch에서 JWT 인증 설정 인터페이스 예시

각 테넌트 역할 매핑은 다음과 같이 설정되어 있습니다:
FGAC에서 테넌트 역할 매핑 예시

다양한 데이터 분리 패턴

본 솔루션은 도메인 수준, 인덱스 수준, 문서 수준으로 테넌트를 완전히 분리할 수 있는 3가지 방식을 제공합니다.

  1. 도메인 수준 분리: 테넌트 마다 전용 OpenSearch 도메인 사용
  2. 인덱스 수준 분리: 모든 테넌트가 공유 도메인을 사용하되 인덱스는 개별로 생성
  3. 문서 수준 분리: 동일 인덱스를 공유하되 문서에 테넌트별 필드를 포함시켜 FGAC에서 DLS(Document Level Security) 설정

아래는 세 가지 분리 방식의 다이어그램입니다:
테넌트 별 분리 방식 - 도메인/인덱스/문서 수준

DLS가 설정된 FGAC 역할 예시:
문서 수준 보안이 설정된 인덱스 권한 예시

배포 가이드 및 고려사항

이 솔루션은 AWS CDK를 통해 배포되며, 필요한 리소스(Amazon Cognito, DynamoDB, OpenSearch 도메인, S3 등)가 함께 생성됩니다. 또한 Amazon Bedrock을 이용하여 텍스트 임베딩 및 응답 생성을 수행합니다. 모든 기능을 테스트하려면 AWS CDK, Node.js, 필수 모델(Claude 3.5 Sonnet 및 Titan Text Embedding)에 대한 접근 권한을 미리 확보해야 합니다.

상용 환경에서 적용 시에는 DynamoDB 및 S3의 테넌트 수준 분리 전략 또한 함께 고려해야 하며, 리소스 수명 관리 및 비용 제어를 위한 정리(cdk destroy) 과정도 필수적입니다.

결론

멀티테넌트 RAG 환경에서 OpenSearch Service와 JWT + FGAC 기반의 구조를 활용하면 데이터 보안과 확장성을 모두 확보할 수 있는 AI 솔루션을 구축할 수 있습니다. 테넌트 간 데이터 격리를 정밀하게 제어할 수 있는 이 구조는 SaaS에서의 AI 활용에 있어 차별화된 경험과 서비스를 제공하는 데 핵심적인 역할을 합니다.

https://aws.amazon.com/blogs/machine-learning/multi-tenant-rag-implementation-with-amazon-bedrock-and-amazon-opensearch-service-for-saas-using-jwt/

AI, Cloud 관련한 문의는 아래 연락처로 연락주세요!

(주)에이클라우드
이메일 : acloud@a-cloud.co.kr
회사 번호 : 02-538-3988
회사 홈페이지 : https://www.a-cloud.co.kr/
문의하기


AI, Cloud 도입 상담 배너