AWS S3를 사용할 때, 보안 및 데이터 보호를 위한 다양한 기능들이 존재한다.
이번 글에서는 S3 접근 제어, 로깅, Pre-Signed URL, 객체 잠금 정책 등 필수 개념을 정리한다.
S3 버킷은 승인(Approval)과 거버넌스(Governance)와 관계없이 접근 설정에 따라 데이터 접근이 가능하다.
기본적으로 S3는 비공개(Private) 설정이지만, 다음과 같은 방식으로 접근을 제어할 수 있다.
✅ S3 접근 제어 방법
1️⃣ S3 퍼블릭 액세스 차단(Public Access Block) 설정
🔹 최고의 보안 전략: S3 버킷은 기본적으로 Private 유지 + Pre-Signed URL을 활용한 접근 허용
S3에서 버킷 접근 요청을 로깅(Log)하여 보안 및 감사 용도로 활용할 수 있다.
✅ S3 로깅 설정 방법
1️⃣ S3 서버 액세스 로그(Server Access Logging)
🚨 주의! 로깅 루프 문제 발생 가능
🔹 권장 사항: 로깅 버킷을 별도로 분리하고, CloudTrail과 연계하여 보안 이벤트를 모니터링
Pre-Signed URL은 IAM 권한 없이도 특정 사용자에게 일시적으로 S3 객체 접근을 허용하는 URL이다.
✅ Pre-Signed URL 활용 예시
1️⃣ AWS SDK 또는 CLI를 사용하여 Pre-Signed URL 생성
2️⃣ 해당 URL을 특정 사용자에게 전달
3️⃣ 사용자는 해당 URL을 통해 S3 객체 다운로드 또는 업로드
✅ Pre-Signed URL 생성 예제 (Python, Boto3 사용)
import boto3
import datetime
s3 = boto3.client('s3')
# 1시간 동안 유효한 Pre-Signed URL 생성
url = s3.generate_presigned_url(
'get_object',
Params={'Bucket': 'my-private-bucket', 'Key': 'data/report.pdf'},
ExpiresIn=3600 # 1시간 (3600초)
)
print("Pre-Signed URL:", url)
🚀 장점
🔹 권장 사항: 보안 강화를 위해 URL 유효기간을 짧게 설정하고, 필요할 때마다 새 URL을 발급
S3에서는 데이터를 보호하기 위해 객체 잠금(Object Lock) 및 Glacier Vault Lock 기능을 제공한다.
이 기능을 활용하면 데이터 수정, 삭제를 차단하여 데이터 보존 및 규정 준수를 보장할 수 있다.
✅ Glacier Vault Lock 특징
🔹 사용 예시: 금융거래 기록, 의료 데이터, 법적 증거 데이터 장기 보관
S3 Object Lock을 사용하면 각각의 객체 단위로 WORM(Write Once Read Many) 모델을 적용할 수 있다.
✅ Object Lock 활성화 조건
모드 | 설명 |
---|---|
규정 준수 모드 (Compliance Mode) | - 모든 사용자 포함 → 누구도 수정/삭제 불가- 보존 기간 동안 절대 변경 불가능 |
거버넌스 모드 (Governance Mode) | - 일반 사용자는 수정/삭제 불가- IAM 권한이 있는 관리자만 보존 기간 변경 가능 |
🚀 거버넌스 모드는 좀 더 유연한 방식으로 관리자 권한을 허용할 수 있음
✅ 법적 보존(Legal Hold) 특징
🔹 권장 사항: 중요 데이터 보호 시 규정 준수 모드를 설정하고, 관리자가 유연성을 원한다면 거버넌스 모드를 선택
개념 | 설명 |
---|---|
S3 접근 제어 | IAM 정책, 버킷 정책, ACL, 퍼블릭 액세스 차단을 활용하여 보안 강화 |
S3 로깅 | 로깅 버킷을 별도로 설정하여 무한 루프 방지 |
Pre-Signed URL | IAM 권한 없이 일시적으로 S3 객체 접근을 허용하는 URL |
Glacier Vault Lock | S3 Glacier에 저장된 데이터를 영구적으로 보호 (삭제 불가) |
S3 Object Lock | 객체 단위의 잠금 정책 (규정 준수 모드, 거버넌스 모드) |
법적 보존 상태 | 특정 객체를 무기한 보호하여 재판 등 중요한 데이터 보관 가능 |
AWS S3는 강력한 보안 기능을 제공하며, 적절한 설정을 통해 데이터를 보호할 수 있다.
Pre-Signed URL을 활용하면 비공개 버킷을 유지하면서도 안전하게 데이터를 공유할 수 있으며,
Object Lock을 사용하면 중요 데이터를 보존하고 규정 준수 요구사항을 충족할 수 있다.
🚀 권장 사항: 보안이 중요한 데이터는 Pre-Signed URL을 활용하고, 규정 준수를 위해 Object Lock을 적절히 설정하자!