📄 2025.12.08 (Day 31) - AWS 스토리지 서비스: S3, EBS, 데이터 전송


1. 핵심 개념 정리

# 핵심 개념 설명 실무/보안 관점
1 Amazon S3 AWS의 객체 스토리지 서비스. 버킷이라는 컨테이너에 객체(파일+메타데이터)를 저장하며 무제한 확장이 가능. 99.999999999%(11 9’s)의 내구성 제공 데이터 레이크, 백업, 정적 웹 호스팅의 핵심. Block Public Access 기본 활성화 필수. 민감 데이터는 서버측 암호화(SSE-S3/KMS) 적용
2 S3 버킷 정책과 ACL 버킷 정책은 JSON 형식의 리소스 기반 정책으로 교차 계정 접근 허용 가능. ACL은 객체/버킷 단위 접근 제어 목록 최소 권한 원칙 적용 필수. Principal이 와일드카드인 정책은 데이터 유출 위험. CloudTrail에서 PutBucketPolicy 이벤트 모니터링
3 S3 버전 관리 동일한 키에 대해 여러 버전의 객체를 유지하는 기능. 실수로 삭제/덮어써도 이전 버전으로 복구 가능 랜섬웨어 공격 대응에 필수. Delete 작업도 Delete Marker만 추가되어 실제 데이터 보존. MFA Delete로 추가 보안
4 S3 암호화 SSE-S3(S3 관리형 키), SSE-KMS(KMS 키, 감사 추적), SSE-C(고객 제공 키), 클라이언트 측 암호화 등 다양한 옵션 규정 준수(GDPR, HIPAA)를 위해 필수. SSE-KMS 사용 시 CloudTrail에서 키 사용 로그 추적 가능
5 S3 스토리지 클래스 Standard(빈번한 접근), IA(비빈번 접근), Glacier(아카이브), Intelligent-Tiering(자동 계층화) 등 용도별 저장 계층 비용 최적화 핵심. 수명 주기 정책으로 오래된 데이터를 저렴한 계층으로 자동 전환
6 S3 정적 웹사이트 호스팅 S3 버킷을 웹 서버로 사용하여 HTML, CSS, JS 등 정적 콘텐츠 호스팅. 서버리스 웹사이트 구축 가능 CloudFront와 결합하면 전 세계 배포 가능. Route 53으로 커스텀 도메인, ACM으로 HTTPS 적용
7 Amazon EBS EC2 인스턴스에 연결하여 사용하는 블록 레벨 스토리지. 파일 시스템을 생성하여 OS, DB 저장. 단일 AZ 종속 데이터 영속성 및 성능에 핵심. EBS 볼륨 암호화로 미사용 데이터 보호. Delete on Termination 설정 확인 필요
8 VPC Gateway Endpoint 프라이빗 서브넷에서 인터넷 없이 S3/DynamoDB에 직접 접근. 라우팅 테이블에 엔드포인트 경로 자동 추가 보안 강화 및 비용 절감. NAT Gateway 없이 S3 접근 가능. Gateway Endpoint는 무료

2. 실습 내용

실습 12: S3 버킷 생성 및 파일 관리

버킷 생성 및 파일 관리:

  • aws s3 mb s3://oooo-labbucket-1234 –region ap-northeast-2 → 버킷 생성
  • aws s3 cp myfile.txt s3://oooo-labbucket-1234/ → 파일 업로드
  • aws s3 cp s3://oooo-labbucket-1234/myfile.txt ./downloaded.txt → 파일 다운로드
  • aws s3 ls s3://oooo-labbucket-1234/ → 버킷 내 객체 목록 확인

버전 관리 활성화:

  • aws s3api put-bucket-versioning –bucket oooo-labbucket-1234 –versioning-configuration Status=Enabled
  • aws s3api list-object-versions –bucket oooo-labbucket-1234 → 객체 버전 목록 확인

실습 13: 퍼블릭 접근 설정

Block Public Access 비활성화 (보안 위험 주의 - 실습 후 반드시 복원):

  • aws s3api put-public-access-block 명령어로 BlockPublicAcls, IgnorePublicAcls, BlockPublicPolicy, RestrictPublicBuckets 모두 false로 설정
  • aws s3api put-object-acl –bucket oooo-labbucket-1234 –key myfile.txt –acl public-read → 객체에 퍼블릭 읽기 ACL 부여
  • 실습 후 반드시 Block Public Access 다시 활성화 (모두 true로 복원)

실습 14: S3 정적 웹사이트 호스팅

정적 웹사이트 호스팅 활성화:

  • aws s3 website s3://oooo-labbucket-1234 –index-document index.html –error-document error.html

버킷 정책 설정 (퍼블릭 읽기 허용):

  • bucket-policy.json 파일 내용:
    • Version: “2012-10-17”
    • Statement: Effect Allow, Principal “”, Action s3:GetObject, Resource arn:aws:s3:::oooo-labbucket-1234/
  • aws s3api put-bucket-policy –bucket oooo-labbucket-1234 –policy file://bucket-policy.json
  • 웹사이트 URL 형식: http://버킷이름.s3-website.리전.amazonaws.com

실습 15: VPC Gateway Endpoint로 S3 연결

Gateway VPC Endpoint 생성:

  • aws ec2 create-vpc-endpoint 주요 파라미터:
    • –vpc-id vpc-0abcdef1234567890
    • –service-name com.amazonaws.ap-northeast-2.s3
    • –route-table-ids rtb-0privateroutableid
    • –vpc-endpoint-type Gateway
  • Private EC2에서 S3 접근 테스트: NAT Gateway 없이도 aws s3 mb s3://oooo-s3-gw-endpoint-test-01 성공

실습 7: EBS 볼륨 생성 및 연결

EBS 볼륨 생성 (동일 AZ 필수):

  • aws ec2 create-volume –availability-zone ap-northeast-2a –size 1 –volume-type gp3 → gp3, 1GB 볼륨 생성
  • aws ec2 attach-volume –volume-id vol-xxx –instance-id i-xxx –device /dev/sdf → EC2에 볼륨 연결

EC2 내부에서 파일시스템 생성 및 마운트:

  • sudo mkfs -t ext4 /dev/sdf → ext4 파일시스템 생성
  • sudo mkdir /appdir → 마운트 포인트 생성
  • sudo mount /dev/sdf /appdir → 볼륨 마운트
  • df -k → 마운트 확인
  • sudo umount /appdir → 볼륨 분리 전 반드시 umount 먼저 실행

3. 실무/보안 관점 분석

분야 시나리오
스토리지 유형 선택 S3: 비정형 데이터, 백업, 미디어, 로그, 정적 웹에 적합. HTTP로 어디서나 접근. EBS: OS, DB, 파일 시스템 등 빈번한 읽기/쓰기에 적합. EC2 직접 연결 필요. EFS: 여러 EC2에서 동시 접근 필요한 공유 파일 시스템에 적합
데이터 보호 전략 S3는 버전 관리로 실수/랜섬웨어 대비, Cross-Region Replication으로 DR 구성. EBS는 정기 스냅샷 생성, DLM으로 자동화
접근 제어 모범 사례 S3는 Block Public Access 기본 활성화, IAM과 버킷 정책 조합, VPC Endpoint로 프라이빗 접근. EBS는 보안 그룹으로 EC2 접근 제어, 볼륨 암호화 필수
비용 최적화 S3는 스토리지 클래스 적절 선택, 수명 주기 정책으로 자동 전환. EBS는 적절한 볼륨 타입 선택(gp3 권장), 미사용 볼륨/스냅샷 정기 삭제
프라이빗 접근 구성 Gateway Endpoint는 S3/DynamoDB 전용, 무료, 라우팅 테이블 기반. Interface Endpoint는 대부분 서비스 지원, 유료, ENI 기반

4. 배운 점 및 심화 방향

  • 배운 점: S3는 HTTP 기반 객체 스토리지로 무제한 확장 가능, EBS는 EC2 직접 연결 블록 스토리지로 파일 시스템 구성. Block Public Access, 버킷 정책, ACL 등 다층적 접근 제어가 존재하며, 실수로 퍼블릭 노출 시 데이터 유출 사고 발생 가능. VPC Gateway Endpoint로 NAT Gateway 없이 프라이빗 서브넷에서 S3 접근하면 비용 절감과 보안 강화를 동시에 달성할 수 있음. EBS 볼륨은 특정 가용 영역에 종속되어 다른 AZ의 EC2에 연결 불가 — 스냅샷 활용한 AZ 간 데이터 이동이 DR 전략의 핵심.
  • 심화 방향: S3 수명 주기 정책(30일 후 IA, 90일 후 Glacier, 365일 후 삭제), S3 이벤트 트리거(파일 업로드 시 Lambda 트리거하여 이미지 리사이징), EBS 스냅샷 자동화(DLM으로 스냅샷 생성/삭제 자동화), S3 보안 자동화(AWS Config로 퍼블릭 접근 감지, Lambda로 자동 수정).

5. Quick Reference

S3 vs EBS vs EFS 비교

특성 S3 EBS EFS
스토리지 유형 객체 블록 파일
접근 방식 HTTP API EC2 직접 연결 NFS
확장성 무제한 최대 64TiB 자동 확장
가용 영역 리전 내 자동 복제 단일 AZ 다중 AZ
동시 접근 무제한 단일 EC2 수천 개 EC2
주요 용도 백업, 미디어, 로그 OS, DB 공유 파일 시스템

S3 스토리지 클래스

클래스 용도 검색 시간 최소 저장 기간
Standard 빈번한 접근 즉시 없음
Intelligent-Tiering 접근 패턴 불확실 즉시 없음
Standard-IA 비빈번 접근 즉시 30일
One Zone-IA 비빈번, 단일 AZ 즉시 30일
Glacier Instant 아카이브, 즉시 접근 밀리초 90일
Glacier Flexible 아카이브 분~시간 90일
Glacier Deep Archive 장기 아카이브 12~48시간 180일

EBS 볼륨 타입

타입 유형 용도 최대 IOPS
gp3 SSD 범용 (기본 권장) 16,000
gp2 SSD 범용 (레거시) 16,000
io2 SSD 고성능 DB 64,000
st1 HDD 처리량 최적화 500
sc1 HDD Cold 데이터 250

SOC 모니터링 대상 이벤트

CloudTrail 이벤트 의미 위험도
PutBucketPolicy 버킷 정책 변경 높음
PutBucketAcl ACL 변경 높음
DeleteBucketEncryption 암호화 비활성화 높음
PutBucketPublicAccessBlock 퍼블릭 접근 설정 변경 높음
ModifySnapshotAttribute EBS 스냅샷 공유 범위 변경 중간
PutBucketVersioning 버전 관리 설정 변경 중간