Tech Notes

AWS bucket의 권한 관리

miracle-tech 2025. 10. 10. 18:47
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 Policy와 IAM 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