AWS IAM Access Analyzer로 최소 권한 원칙(Least Privilege) 자동 구현하기

엔터프라이즈 환경에서 관리자들은 흔히 '우선 작동하게 하라'는 압박 때문에 AdministratorAccess나 와일드카드(*) 권한을 남발합니다. 이러한 과잉 권한은 자격 증명 탈취 시 인프라 전체를 위협하는 치명적인 구멍이 됩니다.

이 글에서는 AWS IAM Access Analyzer를 사용하여 실제 사용 데이터를 기반으로 보안 정책을 자동 생성하고, 공격 표면을 물리적으로 줄이는 실무 프로세스를 설명합니다.

TL;DR — IAM Access Analyzer의 정책 생성(Policy Generation) 기능을 사용하면 CloudTrail 로그를 분석해 사용자가 지난 90일간 실제로 사용한 서비스와 액션만 포함된 정교한 정책을 1분 만에 만들 수 있습니다.

1. IAM Access Analyzer의 핵심 정의

💡 비유로 이해하기: 건물의 모든 방을 열 수 있는 마스터키를 가진 직원에게, 지난 한 달간 그 직원이 실제로 출입한 방의 기록(로그)을 확인한 뒤 딱 그 방들만 열 수 있는 전용 카드키로 교체해 주는 과정과 같습니다.

AWS IAM Access Analyzer는 수학적 추론(Automated Reasoning)과 CloudTrail 로그 분석을 결합한 보안 서비스입니다. 2019년 출시 이후 지속적으로 업데이트되어 현재는 단순한 외부 공유 자원 식별을 넘어 정책 검증 및 자동 생성 기능까지 제공합니다.

기존에는 보안 담당자가 사용자의 수천 개 API 호출 내역을 직접 대조해야 했습니다. 하지만 Access Analyzer를 사용하면 CloudTrail에 기록된 90일간의 활동 내역을 분석하여 실제 필요한 권한만 담긴 JSON 정책을 즉시 얻을 수 있습니다.

2. 실무에서 최소 권한 자동화가 필요한 이유

수동으로 최소 권한을 유지하는 것은 불가능에 가깝습니다. AWS 서비스가 200개가 넘고 각 서비스당 수십 개의 API 액션이 존재하기 때문입니다. 특히 다음과 같은 상황에서 자동화가 필수적입니다.

  • 컴플라이언스 대응: SOC2, ISO27001 등 보안 인증을 위해 주기적으로 '불필요한 권한 회수' 증적을 제출해야 할 때 유용합니다.
  • 사고 범위 제한: 특정 개발자의 액세스 키가 유출되어도, 해당 키가 평소에 S3 읽기 권한만 사용했다면 공격자가 EC2 인스턴스를 삭제하는 등의 2차 피해를 막을 수 있습니다.
  • DevSecOps 통합: 인프라 변경 시마다 정책을 자동 갱신하여 보안 부채를 쌓지 않고 개발 속도를 유지할 수 있습니다.

3. 정책 자동 생성 및 구현 가이드

CloudTrail 로그를 기반으로 특정 역할(Role)의 권한을 정제하는 프로세스입니다.

Step 1. CloudTrail 로깅 확인

Access Analyzer는 CloudTrail 로그를 소스로 사용합니다. 분석 대상 리전의 관리 이벤트 로깅이 활성화되어 있는지 확인합니다.

# AWS CLI를 통한 로깅 상태 확인
aws cloudtrail describe-trails --query "trailList[*].Name"

Step 2. 정책 생성 요청 (Generate Policy)

IAM 콘솔에서 대상 역할(Role)을 선택하고 'Generate policy' 버튼을 누릅니다. 분석 기간(최대 90일)을 설정하면 로그 분석이 시작됩니다.

{
    "status": "IN_PROGRESS",
    "jobId": "example-8432-4821-8432-example",
    "startedOn": "2023-10-27T10:00:00Z"
}

Step 3. 결과 검토 및 적용

분석이 완료되면 Access Analyzer는 실제 호출된 서비스와 액션만 포함된 JSON 정책을 생성합니다. 사용되지 않은 권한은 모두 제거된 상태입니다. 생성된 정책을 기존 정책과 교체하기 전, 누락된 액션이 없는지 테스트 환경에서 먼저 검증합니다.

4. 수동 감사 vs Access Analyzer vs SCP

권한 관리를 위해 사용되는 도구들의 특성을 비교합니다.

비교 기준수동 감사Access AnalyzerService Control Policy(SCP)
정확성낮음(사람의 실수)높음(실제 로그 기반)매우 높음(강제 적용)
운영 복잡도매우 높음낮음중간
사용 목적일회성 보안 점검최소 권한 정책 생성조직 단위 가드레일 설정
적합 규모소규모 팀중대형 클라우드 환경멀티 어카운트 환경

단일 계정 내 세밀한 권한 조정이 필요하면 Access Analyzer를, 조직 전체의 위험한 액션을 원천 차단하려면 SCP를 사용하는 것이 적절합니다.

5. 주의사항

⚠️ 가장 자주 하는 실수: 분석 기간(90일) 동안 한 번도 실행하지 않은 주기적 배치 작업이나 1년에 한 번 실행하는 연말 결산 스크립트의 권한이 누락되어 장애가 발생할 수 있습니다.

정책 생성 기능은 '과거 기록'에만 의존합니다. 따라서 미래에 필요한 권한이나 매우 긴 주기로 동작하는 자동화 툴의 권한은 수동으로 보정해야 합니다.

에러 메시지별 해결법

# Error: Access Analyzer is not authorized to read CloudTrail
# 원인: IAM 역할에 CloudTrail 읽기 권한이 없거나 서비스 링크드 역할이 생성되지 않음
# 해결: IAM 콘솔에서 "Service-linked role for IAM Access Analyzer" 권한 부여 확인

6. 실전 팁

정책 자동 생성 시 Resource-level restrictions 기능을 활용하세요. 단순히 S3에 접근할 수 있다는 사실뿐만 아니라, 특정 버킷에만 접근했다는 정보를 바탕으로 Resource: "*"를 특정 ARN으로 자동 치환해 줍니다.

AWS Config와 결합하여 과도한 권한이 부여된 정책이 생성될 경우 즉시 알람을 받도록 설정하면 보안 운영 효율이 약 40% 이상 개선됩니다.

📌 핵심 요약

  • IAM Access Analyzer는 CloudTrail 로그를 분석해 실제 사용 기반의 최소 권한 정책을 자동 생성한다.
  • 최대 90일간의 활동을 분석할 수 있으며, Resource ARN 수준까지 세밀하게 정제 가능하다.
  • 주기적 작업이 누락되지 않도록 생성된 정책 검토 프로세스를 반드시 포함해야 한다.

Frequently Asked Questions

Q. IAM Access Analyzer 사용 비용은 얼마인가요?

A. 정책 검증 및 생성 기능은 추가 비용 없이 무료로 제공됩니다.

Q. CloudTrail이 꺼져 있어도 사용 가능한가요?

A. 아니요. 분석을 위한 데이터 소스가 없어 정책 생성이 불가능합니다.

Q. 생성된 정책이 너무 길어서 IAM 제한에 걸리면 어떡하죠?

A. 정책을 여러 개로 분할하거나 Managed Policy로 관리하세요.

Post a Comment