Categories: 미분류

AWS S3 버킷 정책 설정 실수 피하는 방법

AWS S3 버킷 정책 설정 실수 피하는 방법

AWS S3(Simple Storage Service)는 데이터를 저장하고 공유할 수 있는 가장 보편적이고 강력한 스토리지 서비스입니다. 하지만 버킷 정책(Bucket Policy)을 잘못 설정할 경우, 개인정보 유출, 서비스 장애, 보안 취약점 노출 등 심각한 사고로 이어질 수 있습니다. 특히 공용 액세스(Public Access)를 허용하거나 권한을 과하게 부여하는 실수가 자주 발생합니다.

이번 포스팅에서는 AWS S3 버킷 정책 설정 실수 피하는 방법을 중심으로, 실무에서 안전하게 S3를 관리할 수 있는 핵심 팁들을 구체적으로 안내합니다.


✅ S3 버킷 정책이란?

S3 버킷 정책은 JSON 형식의 문서로, 특정 사용자 또는 서비스가 S3 버킷에 대해 어떤 행동을 할 수 있는지를 정의하는 리소스 기반 정책(Resource-Based Policy)입니다.

  • Allow 또는 Deny를 통해 접근 제어
  • Principal, Action, Resource, Condition 등의 필드로 구성
  • IAM 정책과 달리, S3 리소스에 직접 부착

✅ 자주 발생하는 설정 실수 TOP 5

❌ 1. 전체 공개(Public Read/Write) 설정

{
  "Effect": "Allow",
  "Principal": "*",
  "Action": "s3:*",
  "Resource": "arn:aws:s3:::mybucket/*"
}
  • 누구나 S3의 모든 객체에 접근, 수정, 삭제가 가능해짐
  • 2021년 Accenture S3 유출 사고도 이와 같은 실수로 발생

🔐 해결 방법:

  • "Principal": "*" 절대 사용 금지
  • 반드시 aws:userid 또는 aws:PrincipalArn 조건으로 제한

❌ 2. 퍼블릭 차단 기능 해제 후 방치

AWS S3는 기본적으로 퍼블릭 액세스를 차단하는 보호 기능을 제공합니다. 이를 일시적으로 해제했다가 다시 활성화하지 않으면 버킷이 노출됩니다.

:

  • 버킷 생성 후 반드시 “퍼블릭 액세스 차단” 옵션을 켜두세요
  • 필요 시 특정 객체만 presigned URL로 제한 공유

❌ 3. Deny 정책이 빠져 예외 상황 발생

버킷 정책에서 Allow만 선언하고 Deny를 명시하지 않으면, 악의적 우회 요청을 차단하지 못할 수 있습니다.

{
  "Effect": "Deny",
  "Principal": "*",
  "Action": "s3:*",
  "Resource": "arn:aws:s3:::mybucket/*",
  "Condition": {
    "Bool": {
      "aws:SecureTransport": "false"
    }
  }
}
  • HTTP 요청은 거부하고, HTTPS 요청만 허용

📌 항상 최소 권한 원칙을 지키고, 조건부 Deny도 병행하는 것이 안전합니다.


❌ 4. 특정 Prefix에만 제한했는데 전체 접근 허용됨

"Resource": "arn:aws:s3:::mybucket/*"
  • 실제로는 arn:aws:s3:::mybucket 버킷 루트 자체에 대한 권한이 필요함
  • 이를 빼면 일부 작업(예: 목록 조회)에서 AccessDenied 발생 가능

✅ 해결 방법:

"Resource": [
  "arn:aws:s3:::mybucket",
  "arn:aws:s3:::mybucket/*"
]

❌ 5. 테스트용 정책을 운영 환경에 그대로 반영

개발 환경에서 임시로 "Action": "s3:*" 또는 "Principal": "*" 설정 후, 이를 복붙하여 운영 버킷에 그대로 적용하는 경우가 많습니다.

🚨 실수 방지 방법:

  • 운영 정책은 Git 또는 SSM Parameter Store에서 버전 관리
  • 적용 전 콘솔에서 시뮬레이션 기능 사용 (Policy Simulator)

✅ 안전한 S3 버킷 정책 설정 가이드라인

항목권장 설정
공개 접근원칙적으로 차단 (Presigned URL 또는 CloudFront로 대체)
접근 제어IAM Role 또는 서비스 계정 기반으로 세밀하게 제한
전송 보안aws:SecureTransport: false 조건으로 HTTP 요청 차단
객체 삭제 방지Denys3:DeleteObject 제한 또는 버전 관리 활성화
활동 로깅S3 버킷에 CloudTrail 및 액세스 로그 설정 필수

✅ 모범 예시: 특정 IAM Role만 읽기 허용

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowReadOnlyToSpecificRole",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::123456789012:role/MyAppReadOnlyRole"
      },
      "Action": [
        "s3:GetObject"
      ],
      "Resource": "arn:aws:s3:::my-secure-bucket/*"
    }
  ]
}
  • 해당 역할을 가진 사용자/서비스만 읽기 가능
  • 쓰기 및 삭제는 기본적으로 차단됨

✅ Q&A

Q. S3 정책과 IAM 정책 중 어느 것이 우선인가요?
둘 다 적용됩니다.

  • 둘 중 하나라도 Deny이면 거부
  • 둘 다 Allow일 때만 성공
  • S3 버킷 정책은 리소스 기준, IAM 정책은 사용자 기준 제어

Q. S3 버킷을 외부에서 안전하게 공유하려면?
Presigned URL을 사용하세요.

  • 제한된 시간 동안만 유효한 URL
  • GetObject, PutObject 요청에 대해 생성 가능
  • AWS SDK 또는 CLI에서 쉽게 생성 가능
aws s3 presign s3://mybucket/image.jpg --expires-in 3600

Q. 버킷 정책이 적용되지 않을 때 원인은?

  • 퍼블릭 액세스 차단이 활성화되어 있으면 정책과 관계없이 거부
  • Principal 설정 오류 (Role, User ARN 잘못 입력)
  • Resource ARN 누락 또는 오타
  • S3 콘솔에서 변경 후 버전 캐시가 남아있을 수 있으므로, 수 초 대기 후 테스트

✅ 요약 정리

체크리스트확인 여부
Principal: * 사용 여부☐ 금지
✅ 퍼블릭 액세스 차단 설정☐ 활성화
✅ HTTPS 전용 전송 조건 추가☐ 적용
✅ 최소 권한 정책 작성☐ 적용 완료
✅ IAM 사용자 또는 역할 기반 제어☐ 사용 중
✅ 버전 관리 및 액세스 로그 설정☐ 활성화 완료

결론

AWS S3 버킷 정책 설정 실수 피하는 방법을 숙지하면 보안 사고 가능성을 획기적으로 줄일 수 있습니다. 특히 실수로 인한 데이터 유출은 대부분 정책 한 줄로부터 시작되며, 사전 점검과 모범 정책을 통해 충분히 예방이 가능합니다. 신중하게, 반복적으로 검토하고, 보안은 “한 번 설정”이 아닌 지속적인 관리임을 꼭 기억하세요.

huniverse4

Recent Posts

윈드라이브 동기화 용량 초과 시 대처법

윈드라이브(OneDrive)를 사용하다 보면 어느 순간 “동기화 중지됨”, “저장소 가득 참”이라는 메시지를 마주할 수 있습니다. 이는…

1개월 ago

윈드라이브 동기화 폴더 바꾸는 법 (드라이브 변경 포함)

윈드라이브(OneDrive)를 사용하다 보면, 기본으로 설정된 동기화 폴더 위치가 불편하거나 C드라이브 용량 부족 등으로 인해 다른…

1개월 ago

윈드라이브를 수동 동기화로 설정하는 방법

윈드라이브(OneDrive)는 기본적으로 자동으로 파일을 클라우드와 동기화하도록 설정되어 있습니다. 문서를 수정하거나 사진을 추가하면, 몇 초 내로…

1개월 ago

윈드라이브 동기화 안 될 때 체크할 설정 5가지

윈드라이브(OneDrive)는 자동으로 파일을 클라우드에 백업하고 여러 기기와 실시간으로 동기화해주는 매우 유용한 도구입니다. 하지만 간혹 “OneDrive…

1개월 ago

윈드라이브 동기화 상태 확인 및 오류 해결법

윈드라이브(OneDrive)는 실시간으로 파일을 클라우드에 저장하고 여러 기기에서 자동으로 동기화해주는 편리한 서비스지만, 때때로 동기화가 멈추거나 오류가…

1개월 ago

윈드라이브 특정 폴더만 동기화하는 방법

윈드라이브(OneDrive)는 기본적으로 전체 OneDrive 폴더를 PC와 동기화하지만, 모든 데이터를 동기화할 필요는 없습니다. 저장 공간을 절약하거나,…

1개월 ago