1️⃣ 개요
- S3는 AWS에서 제공하는 객체 스토리지 서비스
- 인터넷을 통해 데이터를 저장하고 검색할 수 있으며
확장성, 내구성, 보안성이 높아 웹 호스팅, 백업, 로그 저장, 빅데이터 분석 등 다양한 용도로 사용됨
- 간단한 정적 웹사이트 호스팅도 가능
2️⃣ 구성 요소
- Bucket: 데이터를 저장하는 기본 단위 (전 세계에서 이름 고유해야 함)
- Object: 실제 데이터(파일)와 메타데이터
- Key: 버킷 내 객체를 구분하는 고유 이름 또는 경로
- Region: 버킷이 위치한 AWS 지역
- Versioning: 객체 버전을 관리해 삭제나 덮어쓰기 방지 가능
- Storage Class: 접근 빈도와 비용에 따른 저장 등급
Standard: 자주 접근하는 데이터
IA (Infrequent Access): 접근은 드물지만 빠른 복원이 필요한 데이터
Glacier: 장기 보관, 저비용 저장
3️⃣ S3 보안 기능
4️⃣ 서버 측 암호화 (SSE, Server-Side Encryption)
-
SSE-S3 (기본형)
- AWS가 자체 관리하는 키로 자동 암호화
- 추가 비용 없음
-
SSE-KMS (권장형)
- AWS KMS(Key Management Service)를 이용해 키를 관리
- 접근 제어 및 감사 로그 관리 가능
-
SSE-C (고객 제공 키)
- 사용자가 직접 암호화 키를 제공
- 관리 부담이 크지만 보안 통제가 엄격한 환경에서 사용
-
DSSE-KMS (이중 암호화)
- KMS 호출을 두 번 수행해 보안 강화
- 비용은 증가하지만 중요 데이터에 적합
💡 운영 환경 권장: SSE-KMS (보안성과 통합성 균형 우수)
5️⃣ 버킷 구조 유형
① 평면(Flat) 구조
- Key 값으로 직접 객체 관리 (
my-bucket/file1.txt)
- 장점: 단순하고 자동화 스크립트에 적합
- 단점: 구조적 구분 어려움
② 디렉토리 구조
- Key에
/를 포함하여 폴더처럼 사용 (my-bucket/project1/data/file.txt)
- 장점: 시각적 관리 용이
- 단점: 객체 이동 시 전체 Key 수정 필요
6️⃣ 버킷 정책 (Bucket Policy)
- 버킷 단위 접근 정책을 JSON 형식으로 관리
- ACL보다 명확하고 관리가 쉬움
- 정책 수정 후 접근 테스트 필수
예시 정책:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicRead",
"Effect": "Allow",
"Principal": "*",
"Action": ["s3:GetObject"],
"Resource": ["arn:aws:s3:::my-bucket/*"]
}
]
}
7️⃣ 퍼블릭 접근 차단
- 모든 새 버킷은 퍼블릭 접근 기본 차단 상태
- 퍼블릭 공개가 필요할 경우 “퍼블릭 액세스 차단 설정 편집”에서 예외 지정
- 기업 환경에서는 원칙적으로 비공개 유지
8️⃣ 사용 시 유의사항
-
접근 제어 원칙
- 최소 권한 원칙 적용 (필요한 리소스만 허용)
- IAM 정책과 버킷 정책 중복 설정 주의
-
데이터 보호
- SSE 암호화 및 MFA Delete 활성화
- CloudTrail 연동으로 접근 이력 추적
-
비용 절감
- Storage Class를 데이터 특성에 맞게 선택
- Lifecycle 정책으로 오래된 데이터를 Glacier로 이동
9️⃣ 요약
| 항목 | 내용 |
|---|
| 서비스 유형 | 객체 스토리지 |
| 핵심 구성 요소 | 버킷, 객체, 키, 리전 |
| 주요 기능 | 버전 관리, 암호화, 접근 제어 |
| 보안 기능 | IAM 정책, 버킷 정책, SSE-KMS, MFA Delete |
| 활용 예시 | 정적 웹 호스팅, 백업, 로그 저장, 분석 데이터 보관 |