본문 바로가기
Tech Notes

AWS bucket의 권한 관리

by miracle-tech 2025. 10. 10.
728x90
반응형
AWS 권한 관리 3총사 비교

🔐 AWS 권한 관리 3총사

ACL vs Bucket Policy vs IAM Policy 완전 비교

📄

ACL

Access Control List

파일 단위 권한 설정

  • 간단하고 빠름
  • 파일마다 개별 설정
  • 레거시 방식
  • 제한적 기능
쉬움 비권장
🪣

Bucket Policy

버킷 정책

버킷/폴더 단위 권한 설정

  • 폴더별 규칙 가능
  • 복잡한 조건 설정
  • AWS 권장 방식
  • 유연한 제어
보통 권장
👤

IAM Policy

Identity and Access Management

사용자/역할 단위 권한 설정

  • 사용자별 권한 관리
  • AWS 전체 서비스 제어
  • 세밀한 권한 제어
  • 기업용 필수
어려움 고급

📊 상세 비교표

각 권한 관리 방식의 특징과 사용 시나리오

비교 항목 ACL Bucket Policy IAM Policy
권한 범위 파일 단위 (개별 객체) 버킷/폴더 단위 사용자/역할 단위
설정 위치 파일 업로드 시 S3 버킷 설정 IAM 사용자/역할
주요 용도 "이 파일만 공개" "images/ 폴더 전체 공개" "개발자는 읽기만 가능"
세부 제어 제한적 (읽기/쓰기만) 유연함 (조건부 규칙) 매우 세밀함
난이도 쉬움 보통 어려움
AWS 권장 ❌ 비권장 (레거시) ✅ 권장 ✅ 권장 (기업용)
적용 대상 모든 사람 또는 AWS 계정 특정 IP, 도메인, AWS 계정 IAM 사용자, 그룹, 역할
관리 방식 파일마다 개별 관리 버킷 전체 중앙 관리 사용자/역할 중앙 관리
조건부 규칙 ❌ 불가능 ✅ 가능 (IP, 시간 등) ✅ 가능 (MFA, 태그 등)
JSON 작성 ❌ 불필요 ✅ 필요 ✅ 필요
사용 예시 프로필 사진 1개만 공개 public/ 폴더 전체 공개 팀원에게 읽기 권한만 부여

💡 2024년 AWS 권장 사항

ACL은 더 이상 권장하지 않습니다! 새로운 S3 버킷은 기본적으로 "Bucket Owner Enforced" 설정으로 ACL이 비활성화됩니다. 대신 Bucket PolicyIAM Policy를 조합해서 사용하세요.

🎯 실제 사용 시나리오

📄ACL 방식 (비권장)

// 파일마다 개별 설정 await s3.upload({ Key: 'logo.png', ACL: 'public-read' // ❌ 비권장 });

문제점: 파일마다 일일이 설정해야 함

🪣Bucket Policy (권장)

// 폴더 전체를 한 번에 공개 { "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::bucket/public/*" }

장점: public/ 폴더 전체가 자동으로 공개됨

👤IAM Policy

// 사용자별 권한 설정 { "Effect": "Allow", "Action": ["s3:GetObject"], "Resource": "arn:aws:s3:::bucket/*" }

용도: 개발자에게 읽기 권한만 부여

✨ 권장 조합 전략

🏆 베스트 프랙티스

1단계: Bucket Policy로 폴더별 공개/비공개 설정

2단계: IAM Policy로 팀원별 권한 관리

3단계: ACL은 사용하지 않기!

🌐 웹 서비스용

Bucket Policy: public/ 폴더만 공개

코드: 이미지는 public/, 문서는 private/

결과: 이미지는 CDN처럼 빠르게, 문서는 안전하게

👥 팀 협업용

IAM Policy: 팀원별 역할 부여

개발자: 읽기 전용

관리자: 읽기/쓰기/삭제

🔒 보안 강화용

Bucket Policy: IP 제한, MFA 필수

IAM Policy: 최소 권한 원칙

결과: 다층 보안 구축

🤔 어떤 방식을 선택할까?

Q1. 파일 하나만 공개하고 싶다면?

Bucket Policy로 해당 파일 경로 지정

Q2. 폴더 전체를 공개하고 싶다면?

Bucket Policy로 폴더 경로 지정 (권장!)

Q3. 팀원에게 권한을 주고 싶다면?

IAM Policy로 사용자별 권한 부여

Q4. ACL을 써야 하나요?

No! 레거시 방식이므로 사용하지 마세요

728x90