(한국어) AWS ML Associate (6) - Amazon S3 핵심 정리
Amazon S3 보안 (Amazon S3 Security)
Amazon S3는 단순한 저장소 서비스지만, 보안(Security) 을 제대로 설정하지 않으면 데이터 유출(Data Leak)과 같은 심각한 문제가 발생할 수 있습니다. AWS Certified Machine Learning Engineer – Associate 시험에서도 자주 출제되는 주제이므로 꼭 이해해야 합니다.
1. S3 보안 유형
🔹 User-Based (IAM 기반)
- IAM Policies
IAM(Identity and Access Management)에서 특정 사용자(User) 또는 그룹(Group)에 대해 어떤 API 호출(API Calls)을 허용할지 정의합니다.
→ 예:s3:GetObject
권한 부여.
🔹 Resource-Based (리소스 기반)
Bucket Policies
- JSON 기반 정책으로, 버킷 전체에 대한 접근 권한을 설정합니다.
- Cross-Account Access(계정 간 접근)도 허용 가능.
- 버킷 정책은 S3 콘솔에서 직접 작성/관리.
Object ACL (Access Control List)
- 객체 단위로 세밀하게 접근 제어.
- 하지만 현재는 비추천(Deprecated) → 대부분 버킷 정책으로 대체.
Bucket ACL
- 버킷 단위 ACL. 거의 사용하지 않으며 역시 비추천.
2. IAM 권한 평가 규칙
S3 객체에 접근하려면 다음 조건을 만족해야 합니다:
- IAM 정책이 ALLOW 이거나 리소스 정책이 ALLOW
- 그리고 명시적 DENY가 없어야 함
👉 즉, ALLOW OR ALLOW
이면서 동시에 NO DENY
조건이어야 함.
3. S3 버킷 정책 (Bucket Policies)
- 형식: JSON 기반 문서
- 구성 요소
- Resource: 적용 대상 (버킷/객체 ARN)
- Effect:
Allow
또는Deny
- Action: 허용/거부할 API 목록 (
s3:GetObject
,s3:PutObject
등) - Principal: 정책 적용 대상 (계정, 사용자, 역할,
*
= 모든 사용자)
예시 1: 퍼블릭 읽기 (Public Access)
1 | { |
- 이 정책은
my-example-bucket
안의 모든 객체(*
)를 누구나 읽기 가능하도록 허용.
4. 보안 시나리오별 접근 방법
- 퍼블릭 접근 (Public Access)
- 버킷 정책으로
GetObject
권한을 열어줌. - 단, Block Public Access 설정을 해제해야 함.
- 버킷 정책으로
- 내부 사용자 (IAM User)
- IAM 정책으로 권한 부여 (
s3:ListBucket
,s3:GetObject
등).
- IAM 정책으로 권한 부여 (
- EC2 인스턴스에서 접근
- IAM User 사용 ❌ → IAM Role을 EC2에 부여해야 함.
- Cross-Account Access (계정 간 접근)
- 다른 AWS 계정의 IAM User가 접근하려면 → 버킷 정책으로 허용.
5. Block Public Access 설정
- AWS가 데이터 유출 방지(Data Leak Prevention) 를 위해 도입한 기능.
- 기본적으로 모든 퍼블릭 접근을 막음.
- ✅ 시험 포인트:
- 버킷을 공개해야 한다면 반드시 Block Public Access를 해제해야 함.
- 하지만 기업 환경에서는 대부분 항상 켜둔다.
- 계정 레벨에서도 적용 가능 → 모든 버킷이 퍼블릭 차단됨.
6. 암호화 (Encryption)
- SSE-S3: S3가 자체적으로 키 관리 (간단, 기본 옵션).
- SSE-KMS: AWS KMS(Key Management Service)를 사용해 키 관리 (더 세밀한 보안, 로깅 가능).
- 시험에서는 SSE-S3와 SSE-KMS 차이점을 잘 물어봄.
✅ 시험 대비 핵심 정리
IAM Policy vs Bucket Policy
- IAM Policy: 사용자(User) 관점에서 권한 관리.
- Bucket Policy: 리소스(Resource) 관점에서 권한 관리.
객체 접근 조건
- ALLOW(사용자 정책 OR 리소스 정책) + NO DENY.
EC2에서 S3 접근 → IAM Role 사용.
Cross-Account Access → 버킷 정책 필요.
Block Public Access
- 기본 ON (데이터 유출 방지).
- 시험에서는 “퍼블릭 버킷이 동작하지 않는다 → Block Public Access 때문” 자주 출제.
암호화 옵션
- SSE-S3 (자동, 간단) vs SSE-KMS (보안·규제 요구사항 대응).
All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.