MLOps 구축

Amazon S3: 생성, IAM 설정, 보안, Python 연동까지

재호아빠 2025. 6. 14. 19:46

S3는 AWS에서 가장 많이 쓰이는 클라우드 스토리지입니다.

하지만 막상 처음 시작하려면 권한 설정, 암호화, 퍼블릭 차단, 접근 방법 등 생각보다 신경 쓸 게 많습니다.

이 글은 제가 테스트용 S3 환경을 구축하면서 직접 궁금했던 것들을 하나하나 정리한 실전 가이드입니다.

 

1. S3 버킷 생성

  1. AWS Console 접속 → S3 → 버킷 만들기
  2. 입력 항목:
    • 버킷 이름: 소문자, 하이픈 가능, IP 형식 금지
    • 리전 선택

버킷 이름 작성 팁

버킷 이름은 전 세계에서 고유해야 하며, 조직 구조를 반영하면 관리가 쉽습니다.

[조직명]-[서비스명]-[데이터종류]-[환경]

예시:

  • hippotnc-cogmo-interaction-dev
  • skku-federated-dataset-prod

 

2. 퍼블릭 액세스 차단

실수로 전체 공개되는 걸 막기 위한 "방화벽" 같은 설정

설정 시 4가지 모두 체크:

  • 퍼블릭 ACL 차단
  • 새 ACL 거부
  • 기존 ACL 무시
  • 퍼블릭 정책 차단

👉 IAM 사용자, Role 등 권한이 있는 사람은 전혀 제한받지 않으므로 걱정 없습니다.

 

3. 기본 암호화

데이터를 업로드할 때 자동으로 암호화되게 만드는 설정입니다. 특히 AI 학습 데이터나 민감한 정보는 필수로 설정해야 합니다.

 

권장 암호화 방식

SSE-S3 AWS가 키 관리 (자동 암호화) ✅ 기본 추천
SSE-KMS 내가 관리하는 KMS 키 사용 🔒 민감 정보용

 

4. S3 접근을 위한 IAM 사용자 생성

루트 계정은 가급적 사용하지 않아야합니다. boto3, AWS CLI, 로컬 스크립트 등에서 사용할 IAM 사용자를 만들어야 합니다.

IAM 사용자 생성

  1. AWS 콘솔 접속 IAM 사용자  사용자 추가
  2. 사용자 이름 예: s3-dev-user
  3. 접근유형
    • 프로그래밍 방식 액세스 체크 (API 접근용)
    • 콘솔 접근은 불필요 (개발 목적이면 생략)
    • 권한 부여: AmazonS3FullAccess or 특정 버킷에만 접근하는 사용자 정책
  4. Access Key 생성
    • Access Key ID와 Secret Access Key 저장
    • 키는 한 번만 보여지므로 반드시 복사/다운로드
항목 용도
CLI AWS CLI에서 명령 실행 시 사용
로컬 코드 Python 등에서 코드로 접근할 때
설명 태그 키 용도 메모

IAM 계정은 팀 단위? 개인 단위?

개인 단위로 부여하는 것이 원칙입니다. 권한 추적과 보안 사고 대응이 훨씬 유리합니다.

단기 테스트용이라도 IAM 사용자 1명을 만들어서 Access Key만 발급받는 구조가 가장 안전하고 권장됩니다.

 5. Python에서 연동 테스트

import boto3

# S3 접속
s3 = boto3.client(
    's3',
    aws_access_key_id='YOUR_KEY',
    aws_secret_access_key='YOUR_SECRET',
    region_name='ap-northeast-2'
)

# 버킷 목록 확인
for b in s3.list_buckets()["Buckets"]:
    print("-", b["Name"])