본문으로 건너뛰기
AWS ML Blog조회 1

Amazon Bedrock AgentCore Identity를 활용한 Amazon ECS 기반 보안 AI 에이전트 구축

Amazon Bedrock AgentCore Identity를 사용하여 ECS에서 실행되는 AI 에이전트가 외부 OAuth 서비스에 안전하게 접근하고 사용자 세션을 바인딩하는 아키텍처를 구현합니다.

섹션별 상세

01
AI 에이전트의 외부 서비스 접근 시 보안 위협을 방지하기 위해 AgentCore Identity를 독립적인 신원 관리 서비스로 활용합니다. 에이전트가 ECS, EKS, Lambda 등 다양한 환경에서 실행되더라도 외부 서비스 자격 증명을 안전하게 관리하고 토큰 저장소 역할을 수행합니다. 이를 통해 개발자는 복잡한 OAuth 흐름 구현 대신 에이전트 로직에 집중할 수 있으며, 중앙 집중식 보안 제어가 가능해집니다.
Amazon ECS 기반의 AgentCore Identity 보안 아키텍처 다이어그램
Diagram사용자 요청이 ALB를 통해 인증되고 ECS 내의 에이전트 워크로드와 세션 바인딩 서비스로 전달되는 흐름을 보여줍니다. 외부 IDP(Entra ID) 및 서비스(GitHub)와의 연동 구조와 AgentCore Identity가 토큰을 관리하는 위치를 시각화합니다.
02
사용자 인증을 위해 Amazon ALB의 기본 OIDC 기능을 활용하여 인바운드 트래픽을 검증합니다. ALB는 Microsoft Entra ID와 같은 IDP와 통신하여 사용자를 인증하고, 서명된 JWT를 x-amzn-oidc-data 헤더에 담아 ECS 워크로드로 전달합니다. 에이전트는 이 헤더에서 sub 클레임을 추출하여 사용자를 고유하게 식별하고, 이를 AgentCore Identity의 워크로드 토큰 발급에 사용합니다.
03
세션 바인딩 기법을 도입하여 OAuth 인증 과정에서 발생할 수 있는 보안 취약점을 차단합니다. AgentCore Identity는 인증 흐름 상태를 추적하는 sessionURI를 생성하고, 사용자 브라우저가 최종적으로 고객 관리 서비스로 리다이렉트될 때 이를 검증합니다. 워크로드에서의 사용자 ID와 세션 바인딩 서비스에서의 사용자 ID가 일치하는지 암호학적으로 확인함으로써 공격자의 토큰 주입을 원천 봉쇄합니다.
python
agentcore = boto3.client("bedrock-agentcore", region_name=settings.identity_aws_region)
response = agentcore.get_workload_access_token_for_user_id(
    workloadName=settings.workload_identity_name,
    userId=user_id
)
workload_access_token = response["workloadAccessToken"]

사용자 ID를 기반으로 AgentCore Identity에서 워크로드 액세스 토큰을 획득하는 코드

AgentCore Identity를 활용한 OAuth 2.0 권한 부여 코드 승인 시퀀스 다이어그램
Diagram사용자, 에이전트 워크로드, AgentCore Identity, 외부 권한 부여 서버 간의 17단계 상호작용 과정을 상세히 설명합니다. 특히 토큰이 없는 경우 사용자에게 인증 URL을 전달하고 세션을 바인딩하는 절차를 명확히 보여줍니다.
04
최소 권한 원칙을 준수하기 위해 각 에이전트 도구별로 필요한 OAuth 스코프를 개별적으로 선언합니다. 에이전트가 GitHub API를 호출할 때 전체 권한 대신 read:user와 같이 특정 도구에 필요한 범위만 요청하여 보안 노출을 최소화합니다. AgentCore Identity는 유효한 토큰이 없을 경우에만 사용자에게 권한 승인 URL을 반환하며, 획득된 토큰은 안전한 토큰 저장소에 보관되어 재사용됩니다.
python
@requires_access_token(
    provider_name=self.config.provider_name,
    scopes=scopes,
    auth_flow="USER_FEDERATION",
    workload_access_token=self.config.workload_access_token,
    session_binding_url=self.config.session_binding_url,
    on_auth_url=self._on_auth_url,
    region=self.config.aws_region,
)
async def make_request(*, access_token: str) -> Any:
    async with httpx.AsyncClient() as client:
        response = await client.get(
            f"{self.config.github_api_base}{endpoint}",
            headers={"Authorization": f"Bearer {access_token}"}
        )

데코레이터를 사용하여 외부 API 호출 시 필요한 OAuth 액세스 토큰을 자동으로 주입받는 예시

용어 해설

권한 부여 코드 승인(Authorization Code Grant)
사용자가 직접 자격 증명을 공유하지 않고 애플리케이션에 리소스 접근 권한을 위임하는 OAuth 2.0 흐름입니다. 보안을 위해 중간 단계인 코드를 교환하여 액세스 토큰을 획득하며, 에이전트가 사용자 대신 행동할 때 명시적 동의와 감사 추적을 제공하는 핵심 메커니즘입니다.
세션 바인딩(Session Binding)
인증된 사용자의 세션과 특정 OAuth 흐름을 논리적으로 연결하여 보안을 강화하는 기법입니다. 이를 통해 공격자가 자신의 토큰을 피해자의 계정에 연결하거나 브라우저를 교체하여 권한을 탈취하는 CSRF 및 브라우저 스와핑 공격을 방지합니다.
워크로드 ID(Workload Identity)
애플리케이션이나 서비스(워크로드)가 클라우드 환경에서 다른 서비스에 접근하기 위해 사용하는 고유한 식별 정보입니다. 개별 사용자 단위로 범위를 제한한 토큰을 발급받아 최소 권한 원칙을 준수하면서 에이전트가 안전하게 외부 API를 호출할 수 있게 합니다.
오픈아이디 커넥트(OIDC)
OAuth 2.0 프로토콜 위에서 구현된 인증 계층으로, 사용자가 누구인지 확인하는 기능을 제공합니다. ID 토큰(JWT)을 통해 사용자 프로필 정보를 전달하며, 본 아키텍처에서는 ALB와 연동되어 에이전트 시스템에 접속하는 사용자의 신원을 검증하는 데 사용됩니다.

기술

  • Amazon Bedrock
  • Amazon ECS
  • FastAPI
  • Boto3
  • Microsoft Entra ID
  • AWS ALB
  • Strands Agents

활용 사례

  • 사용자 대신 GitHub 리포지토리를 관리하는 코딩 에이전트
  • Jira 티켓을 생성하거나 업데이트하는 업무 자동화 에이전트
  • 개인 캘린더나 이메일 데이터를 조회하는 개인 비서 에이전트
AI 분석 전체 내용 보기

AI 요약 · 북마크 · 개인 피드 설정 — 무료

출처 · 인용 안내

원문 발행 2026. 05. 06.수집 2026. 05. 06.출처 타입 RSS

인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.