Storage
- 데이터와 파일을 인터넷에 저장할 수 있는 클라우드 컴퓨팅 모델
- 사용자는 퍼블릭 인터넷 또는 전용 프라이빗 네트워크 연결을 통해 스토리지에 액세스 할 수 있다.
1. Block Stroage
-
데이터베이스 또는 전사적 자원 관리 시스템과 같은 엔터프라이즈 애플리케이션을 위해 지연 시간이 짧고, 빠른 데이터 액세스를 제공하는 스토리지
-
데이터를 블록 형태로 저장
-
빠른 저장 및 검색을 위해 블록에 고유한 식별자 부여
-
DAS, SAN
DAS: 전통적인 스토리지 시스템 구성 방식이다. 스토리지 시스템을 서버에 직접 부착하는 방식으로 연결되어 있는 클라이언트(컴퓨터)를 이용해야만 스토리지 시스템에 저장되어 있는 데이터에 액세스할 수 있다.
SAN: 여러 스토리지들을 하나의 네트워크에 연결시킨 다음 이 네트워크를 스토리지 전용 네트워크로 구성하는 방식이다.즉, 스토리지에 접근하기 위해서는 각 호스트들은 모두 SAN 전용 네트워크를 거쳐서 접근해야 한다.
-
Amazon EBS
2. File Storage
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 동작 방식

- 사용자 → 어플리케이션에 요청
- DNS는 사용자에게 적합한 Edge Location으로 라우팅
- Edge Location에서 캐시를 확인 & 사용자에게 반환
- Edge Location에 없으면 가장 가까운 REC로 캐시가 있는지 확인 요청
- REC에 없으면 CloudFront는 origin server로 요청
- 오리진은 '오리진 > REC > Edge Location > CloudFront > 사용자' 수순을 밟음 (캐시도 추가)
- REC에 캐시가 있다면 REC는 콘텐츠를 요청한 Edge Location으로 반환
- REC로부터 콘텐츠의 첫 번째 바이트가 도착하는 즉시 Edge Location은 이를 사용자에게 반환
- 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)
4. Signed Cookie
- 다수의 파일에 대한 access 제공 (다수의 파일에 하나의 signed cookie)
- 만료시간, IP주소 범위 등 지정
(ex) ID/PW를 입력해 로그인 한 유료 회원에게 유료 콘텐츠를 모두 제공하는 상황