이미지는 어떻게 저장해야 할까?

오늘처음해요·2025년 5월 4일
1

S3

  • Simple Storage Service
  • 글로벌 서비스 / 단, 데이터는 리전에 저장
  • 무제한 용량
    • 하나의 객체는 0byte에서 5TB의 용량
  • 객체 스토리지 서버
    • 파일 보관만 가능
    • 어플리케이션 설치 불가능
  • 스토리지 서버의 종료
    • 객체
    • 파일
    • 블록 (EBS, EFS 등)
  • 버킷
    • S3의 저장공간을 구분하는 단위
    • 디렉토리 / 폴더와 같은 개념
    • 버킷 이름은 전 세계에서 고유 값 : 리전에 관계 없이 중복된 이름이 존재할 수 없음
  • 객체
    • Owner : 소유자
    • Key : 파일의 이름
    • Value : 파일의 데이터
    • Version Id : 파일의 버전 아이디
    • Metadata : 파일의 정보를 담은 데이터
    • 0byte가 가능한 경우
      • 실제 파일의 데이터가 0이지만 메타 데이터만 담아서 쓰는 경우
  • S3의 내구성
    • 최소 3개의 가용 영역에 데이터를 분산 저장
    • 99.99…%의 내구성
      • 파일 잃어버릴 확률이 로또 당첨 확률보다 122배 작음
  • 보안 설정
    • S3의 모든 버킷은 새로 생성 시 기본적으로 Private
    • 보안 설정은 객체 단위와 버킷 단위로 구성
      • Bucket Policy : 버킷 단위
      • ACL(Access Control List) : 객체 단위
    • MFA를 활용해 객체 삭제 방지 가능
    • 버저닝 가능
    • 엑세스 로그 생성 및 전송 가능
      • 다른 버킷 혹은 다른 계정으로 전송 가능

버킷의 사용 목적별로 분리하자

  • 정적 웹 호스팅 버킷
    • 만약 백엔드 서버 없이 정적 웹 페이지만 배포하고자 할 때 사용가능
    • 모든 접근을 다 허용 설정
    • 대신 Cloudfront 같은 CDN 서비스를 앞 단에 두고 해당 도메인만 S3에 직접 접근 가능하게 변경
    • Route 53를 사용해서 CNAME 레코드로 클라우드 프론트 엔드 포인트에 별칭을 붙여줌
    • Amazon WAF를 클라우드 프론트 앞 단에 사용해서 아이피를 컨트롤 해줌
  • Presigned URL
    • 프라이빗 버킷이어도 URL이 있으면 접근 가능
    • Time To Live 시간이 정해져 있어서 보안적으로 이점이 있음
    • 누군가 버킷 내 파일에 접근해야 할 때 버킷 전체를 퍼블릭으로 전환하지 않아도 되어서 보안적으로 이점이 있음
    • 서버에서 ShortURL을 구현해서 사용자한테 넘겨주는 것도 고려해보면 좋음


출처 : 우아한테크

참고자료

[우아한테크세미나] 사례별로 알아보는 안전한 S3 보안 가이드

쉽게 설명하는 AWS 기초 강좌 20: Amazon S3 기초

0개의 댓글