.env 파일에 AWS 액세스 키를 붙여넣는 일을 멈추세요.
누구나 한 번쯤 겪어본 일입니다. 늦은 밤, Lambda 권한 오류를 디버깅하고 있는데, AI 어시스턴트가 존재하지 않는 서비스 이름이나 가짜 계정 ID가 포함된 ARN을 계속 만들어냅니다. 모델이 환각(hallucination)을 멈추고 문제를 해결하기 시작하도록 실제 리소스를 보여주고 싶어집니다. 절박한 마음에 액세스 키를 가져와 환경 파일에 넣고 에이전트에게 전달합니다. 작동합니다. 안도감이 밀려옵니다. 하지만 아침이 밝으면, 그 비밀 키가 셸 히스토리, 터미널 스크롤백, 혹은 더 최악의 경우 공유 저장소로 푸시된 커밋에 남아 있다는 사실을 깨닫게 됩니다.
이것이 바로 Model Context Protocol(MCP)이 만들어진 이유입니다.
MCP는 AI 에이전트와 외부 시스템 사이에 표준 브릿지를 생성합니다. 원시 자격 증명(raw credentials)을 넘겨주고 에이전트가 이를 유출하지 않기를 기도하는 대신, 인증을 처리하고 권한 범위를 지정하며 채팅창에 키가 노출되지 않도록 관리하는 제어된 서버를 통해 연결합니다.
AWS의 경우, 현재 선택할 수 있는 두 가지 공식 MCP 서버가 있습니다. 잘못된 것을 선택하면 에이전트가 아무것도 알 수 없게 되거나, 적절한 감독 없이 너무 많은 권한을 갖게 될 수 있습니다.
차이점을 이해하세요: 지식(Knowledge) vs. 실행(Hands)
첫 번째 옵션은 AWS Knowledge MCP Server입니다. 이를 AWS 문서 라이브러리 전체를 암기하고 있지만, 귀하의 계정에 대한 로그인 자격 증명은 없는 시니어 엔지니어라고 생각하십시오. 설계 단계부터 읽기 전용(read-only)으로 제작되었으며, 공식 AWS 문서를 참조하여 에이전트가 실제 API 구문, 정확한 서비스 이름 및 최신 베스트 프랙티스를 기반으로 동작하도록 합니다.
이를 사용하는 데 AWS 계정이 필요하지 않습니다. 인프라에 연결할 필요도 없습니다. 아키텍처 다이어그램을 스케치하거나, ECS 또는 EventBridge와 같은 새로운 서비스를 배우거나, 특정 API 호출이 2년 전 기억과 동일하게 작동하는지 확인하고 싶을 때 실행하면 됩니다. 에이전트가 추측하는 것을 방지합니다. S3 버킷 정책을 위한 Terraform 코드를 작성해 달라고 요청하면, 에이전트는 작년에 중단된 학습 데이터가 아니라 소스 문서를 가져오기 때문에 실제 필드와 유효한 값을 알고 있습니다.
두 번째 옵션은 **AWS MCP Server (Managed)**입니다. 이 서버는 에이전트에게 기억력뿐만 아니라 '손(실행 능력)'을 부여합니다. 적절한 인증을 통해 CloudWatch 로그를 검사하고, S3 버킷 목록을 나열하며, DynamoDB 테이블 스키마를 읽고, 역할(role)에 연결된 IAM 정책을 확인하거나, 어떤 보안 그룹이 인터넷에 열려 있는지 확인할 수 있습니다. 실제 계정에서 작동하므로 프로덕션 문제를 해결하거나 라이브 인프라를 리팩토링할 때 매우 강력합니다.
Managed 서버는 장기 사용 키(long-lived keys)를 거부합니다. 브라우저 로그인을 통한 OAuth 또는 SigV4 서명을 사용하는 AWS CLI를 통해 인증합니다. 모든 도구 호출은 단기 토큰(short-lived tokens)으로 이루어지며, 모든 작업은 CloudTrail에 기록이 남고, 에이전트는 정의된 IAM 경계 내에서만 엄격하게 작동합니다. 조직 내의 다른 모든 AWS 사용자나 역할에 적용되는 것과 동일한 정책 엔진에 의해 제어되므로 권한 밖으로 벗어날 수 없습니다.
기억해야 할 황금률은 다음과 같습니다. 하나는 에이전트에게 지식을 주고, 다른 하나는 실행 능력을 줍니다. 학습하거나 설계할 때는 Knowledge 서버를 사용하세요. 운영하거나 복구할 때는 Managed 서버를 사용하세요.
AWS가 대부분의 작업에 Managed Server를 권장하는 이유
AWS는 이제 두 서버를 병렬로 실행하기보다 대부분의 사용자가 단일 Managed MCP Server를 사용하도록 유도하고 있습니다. Managed 서버가 Knowledge 서버가 제공하던 문서 컨텍스트를 흡수했기 때문에, 하나의 엔드포인트에서 참조 자료와 라이브 계정 작업을 모두 처리할 수 있습니다.
두 서버를 동시에 실행하면 오히려 경험이 저하될 수 있습니다. 에이전트가 중복된 도구 정의를 받게 되어, 읽기 전용 문서 조회를 호출해야 할지 아니면 계정에 대한 라이브 API를 호출해야 할지 혼란을 겪을 수 있습니다. 이러한 망설임은 응답 속도를 늦추고 간혹 도구 선택 오류를 발생시킵니다. Managed 서버로 통합하면 구성이 단순해지고 에이전트가 작업에 집중할 수 있습니다.
OAuth를 사용한 Managed Server 설정
Managed 서버를 실행하는 데는 약 5분 정도 걸리지만, 계정에 대한 라이브 연결이므로 단계별 절차를 준수하는 것이 중요합니다.
1단계: IAM ID 준비
전용 IAM 역할(role) 또는 사용자를 생성하거나 선택하세요. Root 계정을 사용하지 마세요. 해당 계정에 AWSMCPSignInOAuthAccessPolicy라는 이름의 관리형 정책을 연결하세요. 이 정책은 MCP 액세스를 위한 OAuth 로그인 흐름을 시작하는 데 필요한 권한만 부여합니다. 이 정책 자체로는 광범위한 관리자 권한을 부여하지 않습니다. 에이전트가 갖게 될 실제 기능은 해당 ID에 연결하는 나머지 IAM 정책에 의해 결정됩니다. 에이전트가 CloudWatch 로그를 읽을 수는 있지만 IAM이나 결제 정보에는 절대 접근하지 못하게 하려면, logs:DescribeLogGroups 및 logs:FilterLogEvents만 허용하고 그 외에는 허용하지 않는 사용자 지정 정책을 만드세요.
2단계: 클라이언트 구성
공식 AWS MCP 서버 URL을 클라이언트 구성에 추가하세요. 이 방식은 Claude Desktop, Claude Code 및 Kiro에서 작동합니다. MCP 설정 파일에 서버 엔드포인트를 등록하여 클라이언트가 AWS 관련 도구 호출을 어디로 라우팅해야 하는지 알 수 있도록 하세요.
3단계: 브라우저를 통해 인증
에이전트가 처음으로 AWS 도구를 호출하려고 하면 운영 체제에서 브라우저 창이 열립니다. 1단계에서 준비한 것과 동일한 IAM ID로 로그인하세요. OAuth 흐름을 통해 MCP 서버로 수명이 짧은 토큰이 반환됩니다. 비밀 키(secret key)를 볼 수 없으며, 구성 파일에 아무것도 붙여넣을 필요도 없습니다. 토큰은 자동으로 갱신되며 빠르게 만료됩니다.
4단계: 신뢰 경계 확인
인증이 완료되면 CloudTrail을 열어 생성한 ID 아래에 작업이 나타나는지 확인하세요. 해당 특정 IAM 사용자 또는 역할과 연결된 ListBuckets 또는 DescribeInstances와 같은 이벤트가 보여야 합니다. 만약 Root 계정 활동이 보인다면 무언가 잘못된 것이므로 즉시 세션을 취소해야 합니다.
OAuth가 워크플로에 맞지 않는 경우, Managed 서버는 기존 AWS CLI 자격 증명을 통한 SigV4 인증도 지원합니다. 이 방식은 브라우저 팝업을 건너뛰지만, 에이전트에 원시 자격 증명을 노출하는 대신 MCP 서버가 서명 및 세션 관리를 처리한다는 이점은 그대로 유지됩니다.
실제로 중요한 보안 습관
MCP 서버의 안전성은 그 뒤에 있는 IAM ID의 안전성에 달려 있습니다.
최소 권한 원칙부터 시작하세요. 잘못 라우팅된 API Gateway 통합을 수정하는 데 에이전트에게 AdministratorAccess가 필요하지는 않습니다. 현재 작업에 필요한 읽기 또는 쓰기 권한만 정확히 부여하고, 작업이 끝나면 권한을 교체하거나 취소하세요. 역할을 사용하는 경우 세션 지속 시간을 짧게 설정하세요. 사용자를 사용하는 경우 도구가 허용하는 모든 곳에서 MFA를 활성화하세요.
절대로 Root 사용자로 권한을 부여하지 마세요. Root는 서비스 제어 정책(SCP)을 우회하며 전체 계정에 대해 제한 없는 액세스 권한을 가집니다. 에이전트가 프롬프트를 잘못 해석하여 리소스를 삭제하려고 시도할 경우, 경계 정책(boundary policy)에 의해 해당 요청이 차단되기를 원할 것입니다. Root에는 그러한 가드레일이 없습니다.
마지막으로, 에이전트를 지시사항은 완벽하게 따르지만 상식은 부족한 신입 인턴처럼 대하세요. 에이전트는 당신이 요청한 것을 문자 그대로, 즉시 실행할 것입니다. 만약 "사용하지 않는 보안 그룹을 정리해줘"라고 말하면, 당신이 준 광범위한 기준에 부합한다는 이유로 운영 데이터베이스에 연결된 보안 그룹을 종료해 버릴 수도 있습니다. 특히 에이전트에게 쓰기 권한이 있는 경우, 파괴적인 명령을 실행하기 전에 반드시 검토하세요.
핵심 요약
유용성을 위해 보안을 희생할 필요는 없습니다. Managed AWS MCP Server를 사용하면 AI 어시스턴트가 실제 인프라를 확인하고, 스스로의 환각(hallucination)을 수정하며, 팀의 나머지 구성원들을 관리하는 것과 동일한 IAM 프레임워크 내에서 작동할 수 있습니다. 환경 파일에 비밀 정보를 저장하지 않고도 실시간 컨텍스트를 얻을 수 있습니다. OAuth 흐름을 설정하고 권한을 잠근 다음, 에이전트가 정책의 통제 범위 내에서 안전하게 작업할 수 있도록 하세요.
