← 목록으로AWS

S3 Presigned URL 관련 자원 보안 점검 — IAM · 버킷 정책 · 퍼블릭 액세스 감사

S3 Presigned URL을 사용하는 버킷과 IAM 자원을 전수 점검하여 퍼블릭 액세스 차단, Access Key 로테이션, 최소 권한 원칙 준수 여부를 감사한 보고서

AWSS3SecurityIAM
2026-04-06

점검 개요

S3 Presigned URL을 사용하는 운영/개발 환경의 버킷과 IAM 자원을 전수 점검했습니다. 퍼블릭 액세스 차단, 암호화, 버킷 정책, IAM 권한, Access Key 로테이션 상태를 확인하고 개선 사항을 도출했습니다.


점검 대상 S3 버킷 현황

총 8개 버킷을 점검했습니다.

항목양호주의
퍼블릭 액세스 차단7개1개 (전체 미차단)
서버측 암호화 (AES256)8개 전체-
버전 관리1개대부분 미설정
HTTPS 강제 (DenyInsecureTransport)3개일부 누락
액세스 로깅0개전체 미설정

Presigned URL 전용 IAM User 점검

Presigned URL 서명 전용 IAM User를 prod/dev 분리하여 운영 중입니다.

권한 설계

{
  "Action": ["s3:GetObject", "s3:PutObject", "s3:DeleteObject"],
  "Resource": [
    "arn:aws:s3:::[bucket-name]/[prefix-1]/*",
    "arn:aws:s3:::[bucket-name]/[prefix-2]/*",
    "arn:aws:s3:::[bucket-name]/[prefix-3]/*"
  ]
}

특정 prefix에만 접근을 제한하여 최소 권한 원칙을 적용했습니다.

Access Key 상태

환경키 경과일마지막 사용상태
prod42일21일 전실제 사용 여부 확인 필요
dev42일3일 전정상 사용 중

90일 로테이션 권장 기준 내이지만, prod 키의 미사용 기간 확인이 필요합니다.


버킷 정책 분석

양호한 버킷 정책 패턴

운영/개발 주요 버킷은 다음 패턴을 따르고 있습니다:

  • 사내 IP 기반 접근 제한 (HTTPS 강제)
  • Presigned 전용 IAM User에게 특정 prefix만 허용
  • DenyInsecureTransport로 HTTP 전면 차단
{
  "Effect": "Deny",
  "Principal": "*",
  "Action": "s3:*",
  "Resource": ["arn:aws:s3:::[bucket-name]", "arn:aws:s3:::[bucket-name]/*"],
  "Condition": {
    "Bool": { "aws:SecureTransport": "false" }
  }
}

위험 발견: 퍼블릭 액세스 미차단 버킷

한 개발 버킷에서 다음 문제가 발견되었습니다:

  • 퍼블릭 액세스 차단 4개 항목 모두 미설정
  • 버킷 정책에 "Principal": "*" + "Action": "s3:*" 허용
  • IP 제한은 있으나 HTTPS 강제 조건 없음

발견된 문제점 및 권장 조치

긴급 (보안 위험)

문제조치
퍼블릭 액세스 차단 미설정4개 항목 모두 true로 변경
버킷 정책에 s3:* + Principal:* 허용최소 권한으로 축소 (Get/Put/List만)
HTTPS 미강제aws:SecureTransport 조건 추가
Access Key 90일 로테이션 초과 (온프레미스 서버용, ~160일)즉시 키 로테이션

주의 (운영 개선)

문제조치
ECS Task Role에 버킷 전체 권한presign 전용 유저로 분리했으면 Task Role S3 권한 축소 검토
fullaccess 유저에 s3:* 권한최소 권한 원칙 적용 (필요한 Action만)
버전 관리 미설정 (운영 버킷)데이터 보호를 위해 활성화 권장
DenyInsecureTransport 누락버킷 정책에 HTTP 차단 Deny 문 추가
액세스 로깅 미설정 (전체)감사 추적을 위해 S3 서버 액세스 로깅 활성화 권장

정상 항목

  • presign 전용 IAM User 생성 (prod/dev 분리)
  • presign 유저 인라인 정책 (prefix 제한)
  • 주요 버킷 퍼블릭 차단
  • 전체 버킷 서버측 암호화 (AES256)
  • 주요 버킷 DenyInsecureTransport 적용

정리

  • S3 Presigned URL 관련 8개 버킷과 IAM 자원을 전수 점검
  • 1개 버킷에서 퍼블릭 액세스 미차단 + 과도한 권한 문제 발견 → 즉시 조치 필요
  • Access Key 로테이션 초과 건 발견 → 키 교체 필요
  • 전반적으로 presign 전용 IAM User 분리, prefix 제한 등 최소 권한 원칙은 잘 적용됨
  • 액세스 로깅, 버전 관리 등 추가 보안 강화 항목 도출