S3 (Simple Storage Service)의 특징

안전하고 가변적인 Object 저장공간을 제공한다. (ex. Google Cloud)

  • AWS에서 모든 파일에 일종의 안전장치를 걸어 놓아서 외부에서 접근은 불가능하게 만들어준다.
  • 우리가 따로 저장 공간의 크기를 직접 만지지 않아도 자기가 알아서 크기를 조절한다.

편리한 UI 인터페이스를 통해 어디서나 쉽게 데이터를 저장하고 불러올 수 있다.

파일 크기는 파일당 0KB부터 최대 5TB까지 지원한다.

저장공간이 무제한이다. (디스크 크기를 따로 할당할 필요가 없다)

Bucket 이라는 이름을 사용한다. (디렉토리와 유사함)

Bucket은 보편적인 namespace를 사용한다. (고유한 성질)

  • IAM과 마찬가지로 S3는 리전이 글로벌이기 때문에 리전과 상관없이 Bucket 이름은 고유해야한다.

S3 Object 구성요소

  • Key (파일명)
  • Value (파일에 대한 데이터)
  • Version ID (S3 고유 특징)
    • 똑같은 파일인데 다른 버전으로 올릴 수 있게 해줄수 있다.
  • Metadata (언제 업로드 되었는지, 오너는 누구인지 등등)
  • CORS (한 bucket의 파일을 다른 bucket에서 접근 가능하게 해주는 기능)

S3 Data Consistency Model (S3 일관성 모델)

  1. Read after Write Consistency (PUT) - 데이터 일관성
    • PUT 동작(쓰기 후 읽기) 에 대해서는 데이터 일관성을 보장해준다.
    • 파일이 S3 Bucket에 올라간다면 그 파일을 즉시 사용할 수 있다는 뜻이다.
  2. Eventual Consistency (UPDATE, DELETE) - 최종 일관성
    • put과 달리 내가 파일을 update/delete 했을 때 바로 누가 읽게되면 그 파일이 update/delete가 안되어 있는 상태일 수 있다.
    • 시간이 지남에 따라 당장은 아니지만 최종적으로 일관성이 유지된다는 뜻이다.

S3 스토리지 종류

  • 일반 S3
  • S3 - IA(Infrequent Access)
  • S3 - One Zone IA
  • Glacier
  • Intelligent Tiering

1. 일반 S3

가장 보편적으로 사용되는 스토리지 타입이다.

높은 내구성 (데이터 손실 없이), 높은 가용성 (데이터 접근 용이)

2. S3 - IA (Infrequent Access)

자주 접근되지는 않으나 접근시 빠른 접근이 요구되는 파일이 많을시 유용하다.

일반 S3에 비해 비용은 저렴하나 접근시 추가 비용이 발생한다. → 접근이 잦은 데이터를 보관하기에는 적합X

Multi-AZ로 인해 가용성이 상당히 높다.

3. S3 - One Zone IA

단일 AZ를 통한 데이터 저장 → 단일 AZ로 인해 데이터 접근 제한 (조금 낮은 가용성)

데이터 접근시 S3 - IA 보다 20% 비용 저렴하다.

4. Glacier

거의 접근하지 않을 데이터 저장 시 유용

매우 저렴한 비용

데이터 접근시 대략 4~5시간 소요된다.

5. Intelligent Tiering

데이터 접근 주기를 알아서 분석한 후 두가지 티어 중 하나로 분류해준다.

  • Frequent Tier (비용이 약간 더 비쌈)
  • Infrequent Tier

데이터 접근 주기가 불규칙할 때 매우 유용하다.

최고의 비용 절감 효율을 누릴 수 있다.

S3 사용 용례

  • 파일 저장소 (로그, 다양한 파일들-이미지, 비디오, 압축파일 등)
  • 웹사이트 호스팅 - HTML, CSS, Javascript 등의 파일을 올려서 실제로 웹 사이트를 돌리기 위한 파일들을 업로드한 후 S3 Bucket을 실제 도메인 DNS로 사용할 수 있다.
  • CORS

CORS (Cross-Origin Resource Sharing)

현재 사용자가 접속한 웹 애플리케이션이 다른 출처의 리소스를 불러올 때,

Access-Control-Allow-Origin 헤더를 보내주지 않으면 브라우저가 그 리소스를 거부하는 정책으로,

웹 브라우저에서 보안상의 이유로 도입되었음.

S3에서는 접근 제어 리스트(ACL), CORS 정책(CORS Policy)를 설정하여 액세스 권한을 부여할 수 있다.

(IAM으로 사용자의 버킷 권한 액세스도 관리 가능)

S3 암호화

  • 파일 업로드/다운로드 시
    • S3에서 파일을 업로드,다운로드 시 SSL/TLS 동작
  • 가만히 있을 시
    1. SEE-S3
    2. SSE-KMS
    3. SSE-C

SEE-S3

  • 기본적으로 S3 Bucket에 저장되어 있는 모든 Object들은 고유한 키를 가지고 있다.
  • SEE-S3는 마스터키라는 것을 가지고 일정 시간마다 고유 키값들을 변경시킨다. (우리가 API를 접근할 때 부여받는 토큰 처럼)

SEE-KMS

  • KMS 언제 어떻게 암호를 풀었는지에 대한 기록이 복원되어 있어 좀 더 체계적인 관리를 가능하게 해준다.

SEE-C

  • 우리가 암호키를 직접 다룰 수 있으며 따라서 키값을 우리가 변경시켜줘야 한다.

S3 암호화 과정

  • PUT 요청이 생성되었을 때 헤더

    스크린샷 2024-08-26 오후 9.13.09.png

PUT 요청 헤더에 ‘x-amz-server-side-encryption-parameter’가 들어있으면 S3는 암호화 요청을 건 것으로 간주한다.

위의 헤더 내용처럼 simon-image.jpg라는 파일이 업로드 될 시에 S3는 AES-256 암호화 알고리즘을 사용하여 암호화할 것이다.

암호화가 걸리지 않은 파일은 Bucket에 못올리게 하는 기능은 없을까?

→ S3의 버킷 정책에서 설정이 가능함.

태그: ,

카테고리:

업데이트:

댓글남기기