Storage
Storage Service: 데이터 저장, 액세스, 보호 및 분석 기능을 갖춘 Amazon의 서비스
Block Storage
Block Storage - ex. EBS
- 데이터를 일정 크기의 블록으로 나누어 저장
- 각 블록은 독립적인 주소를 가지며 이를 통해 랜덤 엑세스 가능
- Storage Area Network(SAN): 고성능의 전용 네트워크로, 서버와 데이터 스토리지 시스테을 연결
Block Storage 특징
- 빠른 I/O 속도가 필요한 데이터베이스에 적합
- 높은 IOPS(초당 입출력 작업 수)와 낮은 지연 시간이 중요한 경우 선택
- 운영 체제 또는 중요한 어플리케이션을 실행하는 데 사용됨
File Storage
File Storage - ex. EFS
- 데이터를 파일로 저장, 파일들은 폴더나 디렉토리에 조직
- 계층적인 파일 시스템 구조
- Network Attached Storage (NAS): 네트워크에 연결돼 여러 사용자와 장치가 파일 기반의 데이터에 접근할 수 있게 해주는 전용 파일 스토리지
File Storage 특징
- 여러 서버나 사용자가 동일한 파일 시스템에 동시에 애겟스해야 할 때 적합
- 파일과 디렉토리를 통해 데이터를 관리하고 싶을 때 유용
- 네트워크를 통한 파일 공유가 필요한 경우에 적합
Object Storage
Object Storage - ex. S3 Bucket
- REST 기반의 API 호출을 통해 데이터에 접근, HTTP 프로토콜
- 대용량 미디어 파일, 이미지, 백업 등을 저장할 때 적합
- 정적 웹 컨텐츠 (ex. 이미지, 비디오, HTML 페이지)를 호스팅할 때 유용
- 저렴한 비용으로 데이터를 오래 보관해야 할 때 선택
- 전 세계 여러 데이터 센터에 걸쳐 데이터를 분산시켜야 할 때 효과적
Amazon S3
Amazon S3 특징
(1) Access 제어
- 객체 별 ACL을 통해 데이터에 접근 가능한 사용자 특정 가능
- ACL: Access Control List
(2) 데이터 저장
- 데이터는 객체 단위로 저장이 된다.
(3) 높은 내구성
- 데이터가 손실된 확률이 거의 없음
(4) 데이터 저장 용량
- Standard의 경우 객체 하나의 크기는 최대 5TB까지 된다.
Amazon S3 구성
Bucket
- S3에 객체를 저장하게 해주는 시스템
- AWS 전역에서 단 한 개만 존재: Region과 관계없이 전역적으로 Unique한 이름이 필요
- Region 수준에서 정의: 데이터 저장 위치와 관련된 법률 및 규정 준수에 영향
Object
- 객체 === 파일 (img, html, .. etc)
- 객체는 키를 가짐 (키는 파일의 전체 경로)
- 객체 최대 크기는 5TB, 한 번에 5GB 이상 업로드 불가능
Amazon S3 기능
Amazon S3 Versioning
- 버킷의 버전 관리를 활성화함으로써 여러 버전의 객체를 보관할 수 있고 실수로 삭제되거나 덮어써진 객체를 복원할 수 있음
- 한 번 활성화하면 비활성화 할 수 없으며, 대신 중단 상태로 전환할 수 있음
Amazon S3 Replication
- 버킷 내의 객체를 자동으로 다른 버킷으로 복사하는 기능, 비동기적으로 이루어짐
- CRR (Cross Region Replication): 재해 복구, 사용자에게 더 빠른 액세스 제공, 규정 요구사항 충족
- SRR (Same Region Replication): 엑세스 제어, 실수로 인한 삭제 손상 방지, 효율적 데이터 관리
Amazon S3 Encryption - 정적암호화
서버 측 암호화 (SSE)
- SEE-S3 (Server-Side Encryption with Amazon S3-Manged Key)
- 디폴트 설정
- 각 객체마다 고유한 키를 사용하고 추가 보안을 위해 이 키를 다른 마스터 키로 정기적으로 암호화
- 사용자는 키 관리에 대해 걱정할 필요 없이 S3에 의해 자동으로 처리됨
- SSE-KMS (Server-Side Encryption with AWS Key Management Service)
- 사용자가 키의 사용을 제어하고 접근을 감시할 수 있음
- 사용자 정의 키 관리 및 암호화 키의 로테이션을 지원: KMS-api를 사용하므로 KMS 제한 사항에 영향을 받을 수 있음
- SSE-C (Server-Side Encryption with Customer-Provided Keys)
- 데이터를 업로드하거나 다운로드할 때마다 사용자는 자신의 암호화 키를 제공해야 함
- 키 관리의 책임이 사용자에게 있음
- AWS로 키를 보내기 때문에 서버 측 암호화에 해당: HTTP 요청마다 헤더에 키를 포함해야 하고 HTTPS 사용 필수
👉 SSE-S3: 우리가 키를 제어할 수 없다는 단점
클라이언트 측 암호화 (CSE): 사용자에게 많은 책임이 부여
- 클라이언트 측에서 암호화하고 암호화 된 데이터를 S3에 저장
- 암호화 키와 암호화 프로세스는 전적으로 사용자 측에서 관리
- 이는 보안을 높이짐만, 키 관리 및 암호화 구현의 복잡성이 증가함
- Amazon S3 Client-Side Encryption Library와 같은 클라이언트 라이브러리 사용
Amazon S3 Encryption - 동적 암호화
- 전송 중 암호화: SSL 또는 TLS라고 함
- Amazon S3는 HTTP, HTTPS 두 개의 엔드포인트를 가지고 있고 HTTPS만 전송 중 암호화 지원
- SSE-C의 경우 HTTPS 프로토콜을 꼭 사용해야 함
- 대부분의 클라이언트는 기본적으로 HTTPS 엔드포인트를 사용함
Amazon S3 Security
- IAM
- 버킷 정책
- 접근 제어 목록 ACL
Amazon S3 Hosting
- S3 버킷에 있는 파일을 이용해 정적 웹사이트 호스팅 가능
Amazon S3 CORS
- CORS: 요청 프로토콜의 일부로 다른 웹사이트에 요청을 보내야 할 때 다른 오리진이 CORS Header를 사용해서 요청을 허용하지 않는 한 해당 요청은 이행되지 않음 (ex. Access-Control-Allow-Origin)
- Amazon S3 CORS
- 만약 클라이언트가 S3 버킷에서 교차 출처 요청 (cross-origin request)을 보내는 경우, 정확한 CORS 헤더를 활성화해야 한다.
- CORS 헤더를 설정함으로써 특정 출처 혹은 모든 출처 (*)를 허용할 수 있음
Amazon S3 Pre-Signed URLs
- S3 콘솔, AWS CLI 또는 SDK를 사용하여 생성할 수 있는 URL
- 미리 서명된 URL을 받은 사용자는 GET / PUT 에 대한 권한을 URL을 생성한 사용자로부터 상속받음
- 특정 사용자에게만 접근 가능하도록 할 때 사용하기도..
Amazon S3 Classes
Amazon CloudFront
Cloudfront Edge Location
CDN (Content Delivery Network)
- 지리적 제약 없이 전세계 사용자에게 빠르고 안전하게 콘텐츠를 전송할 수 있는 기술
Edge Location
- 사용자에게 더 가까운 지리적 위치에 콘텐츠를 저장하는 데이터 센터
- CloudFront에는 300개 이상의 Edge Location이 있다.
Cloudfront Edge Location
- Regional Edge Caches (REC)
- Origin과 Edge Location 사이에 존재하는 캐시 계층
- 표준 Edge Location에서 캐시하지 않는 콘텐츠를 저장
- Edge Location에서 cache miss가 발생했을 때, 오리진 서버 대신 REC에서 컨텐츠를 검색해서 더 빠른 응답 시간을 제공
- Origin Shield
- 2020.10 Release
- CloudFront에서 캐싱 계층을 하나 더 추가하여 캐시 적중률을 높이고 오리진 서버의 부하를 줄여주어 로드 속도를 향상
Amazon Cloudfront
Cloudfront
- AWS에서 제공하는 CDN 서비스
- 클라이언트의 요청으로 서버에서 받아온 컨텐츠를 캐싱하고 이후 같은 요청이 들어왔을 때, 캐싱해둔 것을 제공
- Origin에서 HTTPS를 지원하지 않아도, CloudFront 내에서 HTTPS 통신 지원 가능
- 성능 향상, 데이터 전송 속도 빨라짐, 보안성 향상, 안정성 및 가용성 향상
Amazon Cloudfront 동작 순서
Amazon Cloudfront Origin
- 정적 콘텐츠: 서버가 필요하지 않은 이미지 등 (S3 bucket)
- 동적 콘텐츠: 서버가 필요한 컨텐츠, 동적 컨텐츠를 정적 캐싱하면 사용자는 TTL 시간 동안 새롭게 추가 or 수정된 데이터를 볼 수 없음.
- 컨텐츠는 TTL 값 동안 Edge Location에 캐싱되어 낮은 지연시간으로 컨텐츠를 가져올 수 있음
Amazon Cloudfront 캐시 정책
- 캐시 정책은 CloudFront가 컨텐츠를 얼마나 오랫동안 캐시할 것인지, 어떤 HTTP 헤더, 쿼리 문자열 및 쿠키를 캐시에 포함할 것인지 결정
- 캐시 정책 설정은 TTL(Time-To-Live), 캐시할 헤더, 쿼리 문자열, 쿠키 등을 포함할 수 있음
Amazon Cloudfront OAI (Original Access Identity)
- OAI: CloudFront가 S3에 저장된 Private 객체에 액세스할 수 있도록 하는 특별한 식별자
- 외부 사용자가 S3 Endpoint를 통한 직접적인 요청이 아닌 CloudFront의 배포를 통해 접근하도록 구성하고 싶을 때 OAI 사용 가능
- S3 Origin 보안 강화를 위해 사용되는 S3만을 위한 CloudFront 서비스
Amazon Cloudfront 응답 헤더 정책
- 응답 헤더 정책: CloudFront가 사용자에게 컨텐츠를 전달할 때 HTTP 응답에 추가할 헤더를 정의하는 기능
- 보안 헤더 추가: 보안 관련 HTTP 헤더를 응답에 자동으로 추가 가능
- 사용자 정의 헤더: 특정 사용자 정의 헤더를 추가하여 응답을 더 유용하게 만들 수 있음 (어플리케이션 버전, 캐시 상태 등)
- 캐싱 동작 제어: Cache-Control 헤더를 통해 캐시 서버와 브라우저가 컨텐츠를 캐싱하는 방식을 제어할 수 있음
- CORS (Cross-Origin Resource Sharing) 설정: 다른 도메인의 웹 페이지에서 리소스를 요청할 수 있도록 허용하는 Access-Control-Allow-Origin과 같은 CORS 관련 헤더를 설정 가능
- 성능 최적화: 성능과 관련된 헤더를 추가하여 브라우저의 렌더링 성능을 개선할 수 있음
Amazon Cloudfront 보안 및 Access 구성 및 제한
- Signed URL
- 개별 파일에 대한 access 제공 (파일 하나당 하나의 url)
- 만료시간, IP주소 범위 등 지정
- Signed Cookie
- 다수의 파일에 대한 access 제공 (다수의 파일에 하나의 signed cookie)
- 만료시간, IP주소 범위 등 지정
Amazon Cloudfront Pricing
- 서버 Edge Location마다 데이터 전송 비용이 다름
- 다양한 Price class 존재
'ASC' 카테고리의 다른 글
5. RDS & DynamoDB (1) | 2023.11.16 |
---|---|
Computing - Lightsail & EC2, Auto Scaling & ELB (0) | 2023.11.08 |
3. VPC & Route53 (0) | 2023.11.01 |
2. Container & Docker + CI/CD (1) | 2023.10.29 |
1. 클라우드 컴퓨팅 개요 & IAM (0) | 2023.09.29 |