AI 인사이트

AWS MCP 서버 GA 출시 — AI 에이전트에게 IAM 최소 권한이 필수가 된 이유

seunghyeonlab 2026. 5. 25. 23:02

hero

AWS 환경에서 AI 에이전트를 쓰고 있다면, 혹은 도입을 검토 중이라면 이 글은 바로 지금 읽어야 한다. AWS MCP 서버가 정식(GA) 출시되면서 Claude Code, Cursor 같은 AI 코딩 에이전트가 AWS API에 직접 연결되는 시대가 열렸다. 편의성이 크게 올라간 만큼, 잘못 설정된 IAM 역할 하나가 프로덕션 리소스를 통째로 건드릴 수 있는 위험도 함께 커졌다.


1. 왜 지금 이걸 봐야 하나

기존 AI 코딩 에이전트의 작동 방식은 이랬다. 에이전트가 코드를 제안하고, 개발자가 직접 AWS 콘솔이나 CLI에서 실행했다. 사람이 중간에 끼어 있었다.

GA 이후엔 구조가 달라진다. MCP 서버를 통해 에이전트가 AWS API를 직접 호출할 수 있다. S3 버킷 생성, Lambda 함수 배포, RDS 인스턴스 수정이 에이전트의 명령 한 줄로 실행된다. 프롬프트를 보내면 인프라가 바뀐다.

문제는 이 편의성이 보안 관리 없이는 그대로 리스크가 된다는 점이다. 많은 팀이 초기 세팅에서 에이전트용 IAM 역할에 AdministratorAccess를 달아버린다. 테스트 환경에서 일단 잘 돌아가면 그대로 방치되고, 그 자격증명이 MCP 서버에 연결된 채 프로덕션 환경까지 영향을 미친다.

실제 위협은 두 가지 경로로 온다. 하나는 에이전트 자체의 실수다. 프롬프트를 잘못 해석해 삭제 API를 호출하는 경우다. 다른 하나는 프롬프트 인젝션 공격이다. 외부 입력(코드 리뷰 코멘트, 이슈 본문, 웹 스크래핑 결과)에 악의적인 지시가 섞이면, 에이전트가 그 지시를 그대로 실행해 권한을 에스컬레이션하거나 리소스를 삭제할 수 있다.


2. 핵심 아이디어

AWS MCP GA의 진짜 의미는 모델 성능 향상이 아니라 권한 경계 설계의 중요성이다.

GA로 달라진 것 세 가지를 정리하면 아래와 같다.

변경 사항 GA 이전 GA 이후
API 커버리지 일부 서비스만 S3, Lambda, EC2, RDS, IAM 등 전체 공식 지원
거버넌스 에이전트별 별도 관리 IAM 정책이 MCP 레이어에 통합
감사 로그 별도 설정 필요 CloudTrail 자동 연동

IAM 통합이 핵심이다. 에이전트에게 부여할 역할을 IAM 정책으로 세밀하게 제한할 수 있다는 뜻이다. 이걸 제대로 설정하면 에이전트가 실수하거나 공격받아도 피해 범위가 정책이 허용한 범위로 묶인다.

비유하자면 이렇다. 신입 직원에게 회사 마스터키를 주는 것과, 업무에 필요한 방만 열 수 있는 키를 주는 것의 차이다. GA 이전엔 마스터키를 주는 팀이 많았다. 이제는 구조적으로 키를 나눌 수 있다.


3. 바로 따라하는 방법

IAM 정책 최소 권한 설정

에이전트 전용 IAM 역할을 만들 때, 실제로 필요한 작업만 허용하는 정책을 붙인다. 아래는 S3 읽기와 Lambda 배포만 허용하는 예시다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "S3ReadOnly",
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:ListBucket"
      ],
      "Resource": [
        "arn:aws:s3:::my-project-bucket",
        "arn:aws:s3:::my-project-bucket/*"
      ]
    },
    {
      "Sid": "LambdaDeploy",
      "Effect": "Allow",
      "Action": [
        "lambda:UpdateFunctionCode",
        "lambda:GetFunction"
      ],
      "Resource": "arn:aws:lambda:ap-northeast-2:123456789012:function:my-function"
    }
  ]
}

* 대신 ARN을 명시하고, Action도 서비스 전체 와일드카드 대신 필요한 것만 나열한다.

CloudTrail 연동 확인

에이전트가 호출하는 API 로그가 쌓이는지 확인한다.

# 최근 1시간 내 MCP 에이전트가 호출한 이벤트 조회
aws cloudtrail lookup-events \
  --lookup-attributes AttributeKey=Username,AttributeValue=mcp-agent-role \
  --start-time $(date -u -d '1 hour ago' +%Y-%m-%dT%H:%M:%SZ) \
  --region ap-northeast-2

로그가 안 쌓인다면 CloudTrail 트레일이 해당 리전에 활성화되어 있는지 먼저 확인한다.

# 트레일 활성화 상태 확인
aws cloudtrail get-trail-status --name my-trail --region ap-northeast-2

환경별 자격증명 분리

개발, 스테이징, 프로덕션 환경은 자격증명 자체를 분리해야 한다. AWS 프로필로 관리하면 실수를 줄일 수 있다.

# ~/.aws/credentials 구성 예시
[mcp-dev]
aws_access_key_id = AKIAIOSFODNN7EXAMPLE
aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

[mcp-staging]
aws_access_key_id = AKIAI44QH8DHBEXAMPLE
aws_secret_access_key = je7MtGbClwBF/2Tk/h3yCo8nvbInZFbYEXAMPLEKEY

MCP 서버 설정에서 프로필을 명시적으로 지정한다.

# mcp_config.yaml
aws:
  profile: mcp-dev   # 절대 'default' 프로필에 과도한 권한 주지 말 것
  region: ap-northeast-2

mcp-scan으로 서버 점검

새로 추가하는 MCP 서버는 스캔 후 연결한다.

pip install mcp-scan
mcp-scan scan --config ~/.config/claude/mcp_config.yaml

의심스러운 권한 요청이나 알려진 취약점이 있는 서버를 미리 잡아낼 수 있다.


4. 운영할 때 조심할 점

권한 에스컬레이션 경로 차단: 에이전트 IAM 역할에 iam:CreatePolicy, iam:AttachRolePolicy 같은 IAM 관리 권한이 포함되어 있으면 에이전트가 스스로 권한을 확장할 수 있다. 이 액션은 명시적으로 Deny하거나 아예 빼야 한다.

프롬프트 인젝션 대응: 에이전트가 외부 입력(GitHub 이슈, 웹 검색 결과, 슬랙 메시지)을 처리하는 파이프라인에서는 입력 검증 레이어를 별도로 두는 걸 고려한다. AWS API 호출 전 사람이 승인하는 단계를 추가하는 것도 현시점에서 유효한 방어책이다.

비용 제어: 에이전트가 루프에 빠지면 API 호출이 폭발적으로 늘어날 수 있다. CloudWatch에 API 호출 횟수 알람을 설정하고, 예산 알림(AWS Budgets)도 반드시 켜둔다.

Mac/Linux 환경 차이: AWS CLI 자격증명 파일 경로가 macOS와 Linux에서 동일하지만(~/.aws/), Docker 컨테이너 안에서 에이전트를 돌릴 경우 IAM 인스턴스 프로파일 또는 환경변수로 자격증명을 주입하는 방식이 더 안전하다. 컨테이너에 자격증명 파일을 마운트하는 건 피한다.

다음 단계: 현재 수동으로 관리하는 MCP 에이전트 IAM 역할을 IaC(Terraform, CDK)로 코드화해 변경 이력을 추적하는 것이 다음 과제다.


마무리

AWS MCP 서버 GA는 에이전트가 인프라를 직접 제어하는 시대의 시작이다. 이 변화에서 병목은 모델 능력이 아니라 권한 설계다. 오늘 확인할 것은 세 가지다 — IAM 역할 최소 권한 적용 여부, CloudTrail 로그 연동 상태, 환경별 자격증명 분리. 이 셋이 갖춰지지 않은 상태에서 MCP 에이전트를 프로덕션에 연결하는 건 열쇠를 꽂아둔 채 자동차를 세워두는 것과 같다.

다음 글에서는 Terraform으로 MCP 에이전트 전용 IAM 역할을 코드화하고 PR 리뷰 자동화에 연결하는 방법을 다룰 예정이다.


🐦 X에서 더 빠르게: @baegseungh7061
📚 이 시리즈 더 보기: AI 인사이트
💌 새 글 알림: X 팔로우 또는 블로그 RSS 구독