🔐 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 방식 (비권장)
문제점: 파일마다 일일이 설정해야 함
🪣Bucket Policy (권장)
장점: public/ 폴더 전체가 자동으로 공개됨
👤IAM Policy
용도: 개발자에게 읽기 권한만 부여
✨ 권장 조합 전략
🏆 베스트 프랙티스
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! 레거시 방식이므로 사용하지 마세요
'Tech Notes' 카테고리의 다른 글
| 언제 try-catch, throw를 써야할까? (1) | 2025.10.11 |
|---|---|
| aws의 cdn, cloudfront 에 대해 알아보자 (1) | 2025.10.10 |
| The bucket does not allow ACLs... (0) | 2025.10.10 |
| 항상 보는 에러 CORS와 Preflight Request 완전 정복 (0) | 2025.10.10 |
| aws access key, secret access key 생성하기 (0) | 2025.10.10 |