[Deep Dive] 고도화된 AI 에이전트 아키텍처: Zero Trust와 Human-in-the-Loop의 결합

— “단순 챗봇”을 넘어 “업무 실행자”가 되는 순간, 아키텍처의 성격이 바뀐다

요즘 많은 조직이 “사내 지식 챗봇(RAG)”을 넘어, 실제 업무를 수행하는 **AI 에이전트(Agent)**를 고민합니다.
예를 들면 이런 것들입니다.

  • “지난주 비용 급증 원인 분석하고, 최적화 PR까지 올려줘”
  • “장애 티켓 열고, 원인 추정해서 관련 런북 실행해줘”
  • “계정 권한 요청 들어온 거 검토하고 승인/반려 초안 작성해줘”
  • “고객 문의 메일을 분류하고, 결제 이슈면 환불 프로세스를 진행해줘”

이런 에이전트는 민감한 데이터에 접근하고, 중요 시스템에 명령을 내릴 수 있는 손을 갖게 됩니다.
여기서 보안은 “옵션”이 아니라, 에이전트가 업무를 하게 해주는 면허 체계가 됩니다.

이 글은 그 면허 체계를 AWS에서 구현하는 “심층 아키텍처”를 한 번 끝까지 설계해보는 내용입니다. 핵심 키워드는 딱 두 가지입니다.

  • Zero Trust: 내부라고 믿지 않는다. 매 요청마다 증명하고 최소 권한으로 처리한다.
  • Human-in-the-Loop (HITL): 위험한 행동은 사람 승인 없이는 절대 실행되지 않는다.

전체 아키텍처 : “특수 화물 운송 차량 대열” 아키텍처

기본적인 RAG 챗봇이 “교통 법규 지키는 운전자”라면,
고도화된 에이전트는 특수 화물을 실은 차량이고, 무장 경호검문소, 그리고 비상 정지 장치가 같이 붙습니다.

이 아키텍처의 목표는 세 가지입니다.

  1. 네트워크 수준에서 데이터 유출 경로를 닫는다 (Private Isolation)
  2. 데이터 접근을 사용자 권한으로 강제한다 (RAG ACL)
  3. 치명 행동은 사람 승인 후에만 실행한다 (HITL)

1) 완전 격리된 도로: Private Subnet + VPC Endpoints로 “인터넷 없는 에이전트” 만들기

에이전트(Lambda)와 LLM(Bedrock) 간의 통신을 AWS 내부망으로 격리하는 구조 아키텍처 입니다.

에이전트가 다루는 데이터가 민감해질수록, “어딘가로 새어 나갈 수 있는 경로” 자체를 줄여야 합니다.
여기서 가장 강력한 방법이 인터넷이 없는 Private Network 구성 입니다.

1-1. 컴퓨팅은 Private Subnet에만 둔다

  • Lambda(가능하면 VPC 연결) 또는 ECS/Fargate/EKS Worker를 Private Subnet에 배치
  • NAT Gateway를 빼서 아웃바운드 인터넷을 원천 차단(조직 정책에 따라 선택)

이렇게 하면 “외부로 뭔가 빼돌리기”가 구조적으로 어려워집니다.
단, “AWS 서비스 호출”은 여전히 필요하니 여기서 다음 스텝이 중요합니다.

1-2. AWS 서비스 호출은 PrivateLink(VPC Endpoint)로만

S3, Bedrock, DynamoDB, STS, CloudWatch Logs 같은 호출이 인터넷을 타면 의미가 반감됩니다. 그래서:

  • Interface Endpoint: Bedrock, STS, CloudWatch Logs 등
  • Gateway Endpoint: S3, DynamoDB

즉, AWS 내부망으로만 통신하게 만드는 겁니다.

참고(공식): VPC 엔드포인트/PrivateLink 개요
https://docs.aws.amazon.com/vpc/latest/privatelink/what-is-privatelink.html

1-3. “허용된 서비스만” 통신하도록 엔드포인트 정책까지 조인다

많이들 Endpoint를 만들고 끝내는데, 고도화 단계에서는:

  • 엔드포인트 정책으로 S3 버킷/프리픽스 단위 제한
  • Bedrock 호출도 허용 모델만
  • STS도 특정 AssumeRole만

까지 가면 “네트워크 + 정책”으로 이중 잠금이 됩니다.


2) 화물 검문소: PII Redaction Pipeline (입력/출력 이중 필터)

입력된 데이터에서 개인정보(PII)를 자동으로 식별하고 마스킹하는 파이프라인 아키텍처 입니다.

에이전트가 LLM에 데이터를 보내기 전(입력), 그리고 LLM이 결과를 사용자에게 내보내기 전(출력)에
두 번 검문하는 게 안전합니다.

2-1. Ingress Filter: 입력(문서/프롬프트)에서 PII 탐지/마스킹

  • 사용자가 업로드한 문서, 혹은 프롬프트에 주민번호/카드번호/계좌번호 등이 포함될 수 있습니다.
  • 이걸 그대로 모델에 넣는 순간, 통제 범위가 급격히 넓어집니다.

대표 접근:

운영 설계 팁:

  • 문서 업로드 → S3 저장 → 이벤트로 스캔 파이프라인 트리거(비동기)
  • “검증 완료된 문서만” Knowledge Base/인덱스로 반영
  • 마스킹한 원문/마스킹본을 분리 보관(접근 통제 차등 적용)

2-2. Egress Filter: 출력에서 “기밀 유출/키 노출” 방지

모델이 실수로:

  • Access Key처럼 보이는 패턴
  • 내부 URL / 토큰 / 민감 키워드
  • 정책상 금지된 정보

를 내뱉을 수 있습니다.

실무에서 많이 쓰는 조합:

  • 정규표현식 기반 필터(예: AKIA 패턴, JWT 패턴, 카드 BIN 패턴)
  • 금칙어/기밀 토큰 사전
  • 고위험 출력은 “부분 블라인드 + 경고 + HITL로 에스컬레이션”

추가로, Bedrock를 쓰면 Guardrails를 함께 고려할 수 있습니다.
https://docs.aws.amazon.com/bedrock/latest/userguide/guardrails.html


3) 신원 기반 네비게이션: RAG 권한 제어(ACL)가 “진짜 핵심”

사용자의 신원(Identity)을 기반으로 검색 가능한 문서의 범위를 제어하는 ACL 아키텍처 입니다.

고도화된 에이전트에서 가장 위험한 사고 유형은 이거예요:

“에이전트는 접근 가능한데, 사용자는 보면 안 되는 문서를 근거로 답했다.”

즉, 에이전트의 서비스 권한사용자 권한을 분리하지 않으면, 에이전트가 “권한 증폭기”가 됩니다.

3-1. Identity Propagation: 사용자 신원을 끝까지 전파한다

  • 사용자가 로그인 → JWT/OIDC 토큰 발급 (Identity Center 또는 외부 IdP)
  • 요청이 API Gateway/Lambda로 들어오면 토큰에서:
    • user_id
    • groups/roles
    • tenant
    • data scope
      를 추출해서 컨텍스트로 유지

중요 포인트:

  • “LLM 호출”까지 이어지는 모든 단계가 이 user context를 들고 있어야 합니다.
  • 그래야 Retrieval 단계에서 ACL 필터가 제대로 걸립니다.

3-2. Retrieval 단계에서 ACL을 “필터”로 강제한다

RAG에서 ACL은 “생성 후 필터링”이 아니라, 검색할 때부터 적용돼야 합니다.

예시(개념):

  • 문서 메타데이터에 allowed_groups: ["finance", "exec"]
  • 검색 쿼리에 allowed_groups IN user.groups 필터를 포함

Knowledge Bases for Amazon Bedrock를 쓰는 경우에도, “문서 메타데이터/접근 제어 전략”을 어떻게 구성할지가 품질과 보안을 좌우합니다.
https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base.html

3-3. “근거 링크”에도 동일한 ACL을 적용한다

많이들 답변에 출처 링크를 붙이는데, 여기서도:

  • 링크를 눌렀을 때 원문 접근이 가능한지
  • 프리사인 URL을 발급하는지/어떤 TTL인지
  • 로그에 남는 정보는 무엇인지

를 통제해야 합니다.
정리하면: RAG는 Retrieval과 Source Serving까지가 하나의 보안 경계입니다.


4) 비상 정지 버튼: Human-in-the-Loop를 Step Functions로 “프로세스화” 하기

중요한 결정 전에 관리자의 수동 승인을 거치도록 AWS Step Functions로 구현한 아키텍처 입니다.

에이전트가 “조회”를 넘어 “행동(Action)”을 하려는 순간이 고비입니다.

  • 송금
  • 데이터 삭제/변경
  • 대량 이메일 발송
  • IAM 권한 변경
  • 운영 환경 배포/롤백

이런 작업은 사람이 승인하지 않으면 실행되면 안 됩니다.
그래서 에이전트의 흐름을 워크플로우로 강제하는 게 좋고, AWS에서는 Step Functions가 이 역할에 매우 잘 맞습니다.

Step Functions 개요: https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html

4-1. 왜 Step Functions인가?

  • 에이전트는 “대화형”이라 상태가 길게 이어지고, 중간에 멈추고, 재개되고, 분기합니다.
  • 승인 대기(HITL)는 본질적으로 Pause/Resume 문제입니다.
  • Step Functions는 상태 머신으로 이걸 명확히 모델링할 수 있어요.

4-2. 워크플로우 설계 패턴(추천)

  1. Input Sanitize (PII/금칙어 필터)
  2. Retrieve with ACL
  3. Generate Draft (LLM이 “행동 초안” 생성)
  4. Risk Classifier (행동 위험도 분류: low/medium/high)
  5. Decision Gate
    • low: 자동 실행 가능
    • medium: 추가 확인 질문
    • high: 무조건 HITL
  6. Approval Wait
  7. Execute Action
  8. Audit Log Write (근거/승인자/실행 결과)

4-3. 승인 UX: Slack/Email/SNS 어디가 좋나?

운영에서 중요한 건 “승인 요청이 묻히지 않는 것”입니다.

  • Slack: 빠르고 좋지만, 채널 노이즈가 크면 묻힘
  • Email: 기록은 좋은데, 즉시성이 떨어질 수 있음
  • 사내 포털(승인 페이지): 가장 정석. 이력/검색/권한이 깔끔

실무적으로는:

  • SNS로 알림 + 승인 포털 링크
  • 포털에서 “근거/리스크/영향 범위”를 한 화면에 보여주고 승인
    이 조합이 가장 안정적입니다.

5) Guardrails와 “툴 실행 안전장치”: 에이전트가 시스템을 건드리기 전 마지막 문

에이전트가 실제 시스템을 건드릴 때는 대개 Tool 호출(함수 호출/API 호출) 형태가 됩니다.
여기서 “툴 인터페이스”를 잘 설계하면 사고 확률이 확 떨어집니다.

5-1. 툴은 “의도가 아니라 파라미터”에서 사고가 난다

예: “테이블 삭제” 툴이 있다면,

  • 어느 계정?
  • 어느 리전?
  • 어느 테이블?
  • 삭제 전 스냅샷 여부?
  • 영향 범위(다운스트림 서비스)?

같은 것들이 파라미터로 명시되어야 합니다.

추천 원칙:

  • 파라미터를 가능한 한 구체적으로
  • 디폴트는 안전한 방향(드라이런/미리보기)
  • 실행 전 **체크리스트(가드 조건)**를 코드로 강제

5-2. Dry-run / Plan-first 정책

고위험 작업은:

  • 1차: 에이전트가 Plan(계획)만 작성
  • 2차: 사람이 승인
  • 3차: 실제 실행

이 3단 분리만 해도 “LLM 환각”이 실제 피해로 이어질 확률이 크게 줄어요.


6) 관측과 감사: “누가, 무엇을 근거로, 어떤 승인을 거쳐, 어떤 행동을 했는가?”

고도화된 에이전트는 감사 가능성이 기능 요구사항입니다.

최소한 아래를 남겨야 합니다.

  • 요청 ID / 사용자 ID / 그룹
  • 검색에 사용된 문서 ID/버전/해시
  • 모델 ID, 프롬프트 템플릿 버전
  • 위험도 분류 결과
  • 승인자/승인 시각/승인 코멘트
  • 실행된 API(액션)와 결과(성공/실패, 리소스 ARN)

AWS 관점에서는:

  • CloudTrail(권한/리소스 접근 흔적)
  • CloudWatch Logs(애플리케이션 로깅)
  • X-Ray(분산 추적)
  • S3/Object Lock(감사 로그 불변성)

같은 도구로 “변조 어렵고, 조회 쉬운” 형태로 엮는 게 좋아요.



7) 마무리: 신뢰 가능한 에이전트는 “기술 스택”이 아니라 “통제 가능한 프로세스”다

이 아키텍처가 복잡해 보이는 이유는, 사실 기능이 많아서가 아니라 실패했을 때의 피해가 크기 때문입니다.
기업 에이전트는 결국 “권한”과 “행동”을 다루는 시스템이고, 그 순간부터 AI는 제품이 아니라 운영 체계가 됩니다.

정리하면:

  • Private Isolation로 네트워크 유출 경로를 닫고
  • RAG ACL로 “사용자 권한”을 검색 단계부터 강제하고
  • HITL로 치명 행동은 사람 승인 없이는 절대 실행되지 않게 만들고
  • 관측/감사로 “무슨 일이 왜 일어났는지”를 나중에 재현 가능하게 만들어야 합니다.

이 네 가지가 결합될 때, 에이전트는 ‘운전면허 소지자’가 아니라 특수 훈련된 보안 요원에 가까워집니다.


댓글 달기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다