pile·
아키텍처·aws-architectureAWS Architecture·

Amazon Bedrock와 Verified Permissions로 보안 멀티테넌트 RAG 구축하기

하나의 Amazon Bedrock Knowledge Base 인스턴스를 공유하면서 Cedar 정책과 이중 Lambda Authorizer로 부서별 문서 접근을 제어하는 RAG 보안 아키텍처를 다룬다. 부서별 별도 Knowledge Base 인스턴스 대신 메타데이터 태그로 논리 격리하고 런타임 인가로 접근을 제어해 인프라 비용과 운영 오버헤드를 줄인다.

핵심 포인트
  • 이중 인가 레이어: Layer 1(Lambda Authorizer — API 호출 가능 여부)과 Layer 2(미들웨어 Lambda — 어떤 Knowledge Base에 접근 가능한지)가 독립적으로 Verified Permissions를 호출하고 기본-거부 원칙으로 동작한다.
  • Cedar 정책이 런타임에 적용되므로 코드 재배포 없이 정책 변경 즉시 반영된다.
  • 메타데이터 사이드카 파일(.metadata.json)이 모든 문서 업로드에 대해 검증된 후에만 Bedrock 인제스션을 트리거한다.
  • 벡터 유사도 검색 전에 메타데이터 필터를 적용해 미인가 문서가 검색 결과에 포함되지 않도록 한다.
  • Bedrock Guardrails로 응답이 검색된 문서에 근거하는지(contextual grounding) 추가 검증한다.
상세 정리
  • 아키텍처 결정: 부서별 별도 Knowledge Base 대신 단일 인스턴스 공유 + 메타데이터 태그 논리 격리. 인프라 비용과 운영 오버헤드 절감이 목적. 단, 규제 요구 컴플라이언스 경계가 필요한 경우는 부서별 별도 KB 권장.
  • 인제스션 파이프라인: S3 부서 접두사(docs/dept-a/report.pdf)→EventBridge ObjectCreated→SQS→Lambda가 .metadata.json 사이드카 생성→5분마다 스케줄링 Lambda가 Bedrock 인제스션 잡 트리거.
  • 메타데이터 무결성: 인제스션 전에 모든 문서에 대한 사이드카 존재 여부를 검증. S3 버전 관리 + CloudTrail로 메타데이터 변조 감지. Lambda 역할 외 주체의 .metadata.json 수정 시 CloudWatch 알람 발동.
  • Cedar 정책 구조: Principal(UserGroup) / Action(query, invokeModel) / Resource(KnowledgeBase, Model) 세 엔티티 타입. 부서별 허용 정책과 임원용 크로스-부서 접근 정책을 별도 관리.
  • Lambda Authorizer(Layer 1): Cognito JWKS에서 JWT 서명 검증→cognito:groups 클레임 추출→그룹별 Verified Permissions IsAuthorized 호출→403 또는 통과. TTL 0이면 매 요청 평가(최신 정책), TTL 300이면 최대 5분간 폐기된 정책이 허용될 수 있다.
  • 미들웨어 Lambda(Layer 2): 인증된 요청→부서별 KB 리소스에 대해 Verified Permissions 호출→허용된 부서 목록으로 메타데이터 필터 구성(단일: equals, 복수: orAll)→RetrieveAndGenerate에 필터 적용.
  • 청크 설정: 300 토큰, 20% 오버랩. 임베딩 모델: Amazon Titan Text Embeddings V2.
  • 모니터링: Layer 1/2 인가 거부율, Verified Permissions 지연, SQS 데드레터 큐 메시지 수, 인제스션 잡 실패율을 CloudWatch로 추적.
  • 인제스션 레이스 컨디션: 문서 업로드와 사이드카 생성 사이의 짧은 창이 잠재적 취약점. 배치 처리와 사전 검증으로 완화.
왜 읽나RAG 시스템에서 멀티 부서/테넌트 접근 제어를 구현하거나, Cedar 정책 기반 동적 인가와 Bedrock Knowledge Base를 연동하려는 아키텍처/백엔드 엔지니어에게 단계별 구현 가이드.
aws-architecture
AWS Architecture 블로그
원문은 여기서 이어서 읽을 수 있어요
원문 읽기
읽음 (0)

이 글과 비슷한

  1. 아키텍처·dropbox-techDropbox Tech·

    Dropbox의 통합 콘텐츠 처리 플랫폼 Riviera, AI 시대로의 진화

    Dropbox가 파일 미리보기 생성용 내부 서비스로 출발한 콘텐츠 처리 플랫폼 Riviera가 약 10년에 걸쳐 Search·Replay·Sign·Dash가 공유하는 플랫폼으로, 나아가 AI 시대의 문서 처리 인프라로 진화한 과정을 다룬다. 미리보기를 '재사용 가능한 변환들의 조합'으로 재정의한 설계가 확장의 핵심이었고, 지금은 100개 넘는 변환 능력으로 초당 수십만 건을 처리한다. 최근엔 공개 API와 MCP로 외부 개발자에게도 열렸다.

  2. 아키텍처·github-engGitHub Engineering·

    AI 시대에 달라진 '예스'의 비용

    GitHub Engineering 에서 AI 코드 생성 도구가 보편화되면서 소프트웨어 엔지니어링 경제학이 어떻게 달라졌는지를 다룬다. 코드를 작성하는 비용은 낮아졌지만 그 코드를 소유하고 유지보수하는 비용은 그대로라는 점을 핵심 논지로, 엔지니어링 팀의 의사결정 방식도 달라져야 한다고 주장한다.

    #engineering-process#ai-code-generation#code-ownership+1
  3. 아키텍처·당근당근 테크블로그·

    천만 MAU를 지탱하는 커뮤니티 시스템 아키텍처

    당근 커뮤니티실이 2021년 약 100 RPS에서 현재 약 20,000 RPS를 처리하는 규모로 성장한 과정과, 이를 가능하게 한 "여러 웹앱 + 하나의 서버앱" 모듈형 모놀리스 아키텍처를 다룬다. 동네생활, 모임, 카페, 아파트 서비스를 소규모 팀이 장기 운영 가능한 구조로 설계한 원칙과, 장애 경험에서 도출한 resilience 패턴까지 단계별로 정리했다.

    #event-driven#kafka#postgres+2