스토리지 - S3&CloudFront

‎김연수·2024년 5월 18일
0

AWS-Cloud-Club-Ewha

목록 보기
6/7

Storage

  • 데이터와 파일을 인터넷에 저장할 수 있는 클라우드 컴퓨팅 모델
  • 사용자는 퍼블릭 인터넷 또는 전용 프라이빗 네트워크 연결을 통해 스토리지에 액세스 할 수 있다.

1. Block Stroage

  • 데이터베이스 또는 전사적 자원 관리 시스템과 같은 엔터프라이즈 애플리케이션을 위해 지연 시간이 짧고, 빠른 데이터 액세스를 제공하는 스토리지

  • 데이터를 블록 형태로 저장

  • 빠른 저장 및 검색을 위해 블록에 고유한 식별자 부여

  • DAS, SAN

    DAS: 전통적인 스토리지 시스템 구성 방식이다. 스토리지 시스템을 서버에 직접 부착하는 방식으로 연결되어 있는 클라이언트(컴퓨터)를 이용해야만 스토리지 시스템에 저장되어 있는 데이터에 액세스할 수 있다.

    SAN: 여러 스토리지들을 하나의 네트워크에 연결시킨 다음 이 네트워크를 스토리지 전용 네트워크로 구성하는 방식이다.즉, 스토리지에 접근하기 위해서는 각 호스트들은 모두 SAN 전용 네트워크를 거쳐서 접근해야 한다.

  • Amazon EBS

2. File Storage

  • 데이터를 파일 및 폴더의 계층 구조로 저장하는 데이터 스토리지

  • 어플리케이션에 가장 널리 사용되는 유형

  • 네트워크 환경에서의 파일 기반 스토리지는 NAS 기술 사용
    - 로컬 하드 드라이브와 유사한 방식으로 네트워크 스토리지 데이터에 액세스

    NAS: 스토리지가 다른 호스트 없이 직접 네트워크에 연결되는 방식. 스토리지 시스템을 네트워크에 연결해 공유한다. 이때, 네트워크는 데이터를 전달하는 통로 역할을 한다. 여러 대의 클라이언트가 네트워크를 통해 여러 스토리지 시스템에 액세스하는 방식

  • Amazon EFS

3. Object Storage

  • 대용량 미디어 파일, 이미지, 백업 등의 비정형 데이터를 저장하기 위한 데이터 스토리지

  • 전송된 형식 그대로를 객체 데이터로 저장

  • 사용자가 직접 메타 데이터를 지정 가능

  • 객체는 보안 버킷이라는 저장 공간에 저장

  • HTTP 프로토콜 기반 REST API 호출을 통해 접근

    REST란?
    자원을 이름 (자원의 표현) 으로 구분하여 해당 자원의 상태 (정보)를 주고 받는 모든 것을 의미하는 아키텍처의 한 형식임. .1. HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고, 2. HTTP Method(POST, GET, PUT, DELETE, PATCH 등)를 통해 3. 해당 자원(URI)에 대한 CRUD Operation을 적용하는 것을 의미한다.

  • Amazon S3

Amazon S3

  • Amazon S3는 데이터를 버킷 내 객체로 저장하는 객체 스토리지 서비스

1. 구성

버킷과 객체로 구성

1) 버킷

  • 최상위 디렉토리
  • S3은 저장된 객체에 대한 컨테이너
  • 버킷에는 객체를 무제한으로 저장 가능
  • AWS 전역에서 단 하나만 존재, 리전과 관계없이 전역적으로 유일한 이름 사용

2) 객체

  • 디렉토리 내 저장되는 파일
  • S3에 저장되는 기본 개체
  • 객체 데이터와 메타 데이터(이름 - 값 페어 집합)로 구성.
  • 객체는 키와 버전 ID로 버킷 내에서 고유하게 식별


  • - 객체에 할당한 이름, 버킷 내 객체에 대한 고유한 식별자
  • 버전 ID
    - 버킷에 객체를 추가할 때 Amazon S3가 생성하는 문자열
    - S3 내 모든 객체는 버킷 + 키+ 버전 조합으로 고유하게 식별 가능
  • 메타 데이터
    - 객체 관련 정보를 저장하기 위한 이름-값 페어 세트, 사용자가 직접 지정 가능
  • 태그
    - 저장된 객체를 분류하기 위해 사용하는 정보
  • 액세스 제어 정보
    - 저장하는 객체에 대한 액세스를 제어하기 위한 정보
    -리소스 기반 액세스 제어(ACL, 버킷 정책)과 사용자 기반 액세스 제어 모두 지원

    ACL: 액세스 제어 목록(ACL)은 시스템 리소스와 관련된 권한 목록으로, 방화벽을 구축하는 데 있어서 가장 중요한 요소이며 트래픽 필터링(Traffic Filtering)의 기능을 함. 허가(Permit)되지 않은 이용자가 라우터나 네트워크에 접근하려고 하는 것을 차단함.

     

2. 보안

1) 데이터 암호화

(1) 서버측 암호화(SSE)

  • 데이터를 받는 애플리케이션 혹은 서비스 서버가 해당 데이터를 암호화하는 것

  • AWS 데이터 센터에서 객체 데이터 암호화, 사용자 접근 시 자동으로 암호 해독하여 반환

    • SSE-S3
    • SSE-KMS/DSSE-KMS/SSE-C
  • 현재 S3은 서버측 암호화(SSE-S3)를 S3 내 모든 버킷 암호화의 기본 수준으로 적용

(2) 클라이언트측 암호화(SSE)

  • 전송 및 저장 시 보안을 보장하기 위해 로컬에서 데이터 암호화
  • S3 암호화 클라이언트를 사용하여 객체를 암호화하고 버킷에 업로드

2) 액세스 제어

(1) 리소스 기반 정책

  • S3 버킷과 같은 리소스에 연결하는 JSON 정책 문서
  • 리소스에 접근하기 위해 필요한 권한 정의

(2) 자격증명 기반 정책

  • 자격증명(사용자, 사용자 그룹, 역할)이 무슨 작업을 어느 리소스, 어느 조건에서 수행할 수 있는지를 제어하는 정책

    다수의 사용자, 그룹, 역할에 정책을 연결하는 경우 관리형 정책
    단일 사용자, 그룹, 역할에 1:1로 정책을 연결하는 경우 인라인 정책

  • 사용자가 수행할 수 있는 작업 정의

(3) CORS

  • S3을 사용하여 정적 웹 사이트를 호스팅하는 경우 CORS 구성을 통해 액세스 제어

    CORS는 웹 브라우저의 한 도메인이 다른 도메인의 리소스를 요청할 때 해당 리소스에 대한 액세스를 선택으로 허용

  • 다른 도메인에서 S3 리소스에 대한 요청을 보내는 경우 해당 요청 도메인에 대한 CORS 정책 구성 필요
  • S3가 브라우저의 preflight 요청을 받으면 버킷의 CORS 구성을 바탕으로 해당 요청과 일치하는 규칙으로 Cross-Origin 요청을 허용

(4) Pre-Signed URLS

  • 미리 서명된 URL을 사용하여 버킷 정책 업데이트 없이 S3 객체 액세스 허용

3. 스토리지 관리

1. 버전 관리

한 버킷에 여러 버전의 객체를 보관, 실수로 삭제되거나 덮어써진 객체 복원 가능

  • 버킷의 버전 관리를 활성화하면 저장되는 객체에 대해 고유한 버전 ID 자동 생성
  • 한 버킷에 여러 버전의 객체 보관 가능
  • 한 번 활성화하면 비활성화 불가(중단 상태로 전환 가능)

2. 객체 복제

객체 복제를 통해 하나 이상의 대상 버킷에 대한 객체를 동일하거나 다른 AWS 리전에 비동기적으로 자동 복제 가능

  • S3 리전 간 복제(CRR): 서로 다른 리전 버킷에서 새 객체를 복제하는 경우
  • S3 동일 리전 복제(SRR): 동일한 리전 버킷에서 새 객체를 복제하는 경우
  • S3 배치 복제: 기존 객체를 온디맨드 옵션으로 다른 버킷에 복제하는 경우

3. 클래스

S3 버킷의 각 객체에는 그와 연결된 스토리지 클래스가 존재하며, 사용자는 사용 사례 및 요구 사항에 맞게 스토리지 클래스를 선택

  • 자주 액세스하고 짧은 지연 시간이 필요한 객체 스토리지 클래스
    - S3 Standard, S3 Express One Zone, Reduce Redundancy
  • 자주 액세스하지 않는 객체 스토리지 클래스
    - S3 Standard-IA, S3 One Zone-IA


Amazon CloudFront

  • 짧은 대기 시간과 빠른 전송 속도로 최종 사용자에게 데이터, 동영상, 애플리케이션 및 API를 안전하게 전송하는 CDN(글로벌 콘텐츠 전송 네트워크) 서비스

  • CloudFront는 엣지 로케이션이라고 하는 데이터 센터의 전 세계 네트워크를 통해 콘텐츠를 제공

  • Client의 콘텐츠 요청으로 서버에서 받아온 콘텐츠를 캐싱하고 이후 같은 요청이 왔을 때, 그 캐싱해 둔 것을 제공하는 서비스

  • CloudFront를 통해 서비스하는 콘텐츠를 사용자가 요청하면 지연 시간이 가장 낮은 엣지 로케이션으로 요청이 라우팅되므로 가능한 최고의 성능으로 콘텐츠가 제공

CDN(Content Delivery Network)

  • 콘텐츠 전송 네트워크
  • 지리적 제약 없이 전세계 사용자에게 빠르고 안전하게 콘텐츠를 전송할 수 있는 기술
  • 웹 사이트의 원래 서버와 달리 사용자에게 더 가까이에 있는 서버로부터 컨텐츠를 배포하는 방식

Edge Location

  • 사용자에게 더 가까운 지리적 위치에 콘텐츠를 저장하는 데이터센터
  • 컨텐츠가 캐싱되고 유저에게 제공되는 지점
  • CloudFront 서비스는 edge location을 통해 콘텐츠를 제공

Regional Edge Caches(REC)

  • 오리진과 엣지 로케이션 사이에 존재하는 캐시 계층
  • 글로벌하게 배포되어있는 CloudFront 위치
  • 리전 엣지 캐시는 표준 에지 로케이션에서 캐시 하지 않는 콘텐츠를 저장
  • 엣지 로케이션에서 캐시 미스(cache miss)가 발생했을 때, 오리진 서버 대신 리전 엣지 캐시로부터 콘텐츠를 검색하여 더 빠른 응답 시간을 제공

CloudFront 동작 방식

  1. 사용자 → 어플리케이션에 요청
  2. DNS는 사용자에게 적합한 Edge Location으로 라우팅
  3. Edge Location에서 캐시를 확인 & 사용자에게 반환
  4. Edge Location에 없으면 가장 가까운 REC로 캐시가 있는지 확인 요청
  5. REC에 없으면 CloudFront는 origin server로 요청
  6. 오리진은 '오리진 > REC > Edge Location > CloudFront > 사용자' 수순을 밟음 (캐시도 추가)
  7. REC에 캐시가 있다면 REC는 콘텐츠를 요청한 Edge Location으로 반환
  8. REC로부터 콘텐츠의 첫 번째 바이트가 도착하는 즉시 Edge Location은 이를 사용자에게 반환
  9. Edge Location은 나중을 위해 이 콘텐츠 캐시를 저장

Origin Access Identity (OAI)

  • CloudFront가 S3 버킷과 같은 origin에 안전하게 접근할 수 있도록 하는 고유 식별자
  • OAI를 사용하면 CloudFront를 통해서만 origin에 저장된 콘텐츠에 접근할 수 있도록 제한
  • 사용자가 S3 URL을 직접 사용하여 콘텐츠에 접근하는 것을 방지, CloudFront를 통해서만 접근하도록 하여 보안을 강화

Origin Access Control (OAC)

  • 보안을 강화하고 심화된 기능 통합을 위해 지정된 배포에만 접근을 허용함으로써 S3 오리진을 보호하는 새로운 기능
  • OAI는 CloudFront에서 S3 오리진에 접근하는 안전한 방법을 제공하지만 세분화된 정책 구성, 암호화 미지원 등 제한사항이 있음

CloudFront 기능

1. HTTPS 지원

  • Origin에서 https 지원을 해주지 않아도 CloudFront 안에서 https 통신을 지원하도록 구성 가능

2. 특정 지역 콘텐츠 접근 제한 가능

  • 지리적 제한 가능. 회사 사정으로 특정 지역을 제한하거나 할 수 있다

3. Signed Url

  • 허용된 사용자에게만 접근할 수 있는 signed url 제공
  • 개별 파일에 대한 access 제공 (파일 하나당 하나의 url)
  • 다수의 파일에 대한 access 제공 (다수의 파일에 하나의 signed cookie)
  • 만료시간, IP주소 범위 등 지정
    (ex) ID/PW를 입력해 로그인 한 유료 회원에게 유료 콘텐츠를 모두 제공하는 상황

0개의 댓글

관련 채용 정보