6 min to read
AWS #5 / TIL
서비스 노출, 보안
CloudFront
전 세계 티어 1, 2, 3의 이동통신사와 협력하여 네트워크에 연결된 글로벌 CDN(Content Delivery Network) 서비스로써 저지연성과 고속전송 속성을 지닌 콘텥츠 배포 기능을 제공한다.
콘텐츠 사용자와 가까운 지역에 네트워크망을 구축하고, 지역별 엣지 캐시를 통해 사용자 경험 수준을 높일 수 있게 한다. 정적 콘텐츠뿐만 아니라 동적 콘텐츠도 지원하며, 사용자 요청을 가장 가까운 엣지 로케이션에서 처리된다.
CloudFront는 *엣지 로케이션이라 부르는 글로벌 데이터센터 네트워크를 통해 콘텐츠를 배포한다.
특정 콘텐츠의 인기가 줄어들수록 개별 엣지 로케이션에서는 해당 객체를 삭제해 인기가 많은 콘텐츠를 제공할 수 있는 여유 공간을 확보하고, 지역별 엣지 캐시는 엣지 로케이션보다 높은 수준의 캐싱 능력을 바탕으로 좀 더 오랜 시간 캐싱 데이터를 유지할 수 있다.
이와 같은 캐싱 데이터가 존재하면 사용자의 콘텐츠 요청 시, CloudFront는 오리진 웹 서버에 돌아갈 필요 없이 지역별 엣지 캐시로 사용자 요청에 대응하기 때문에 콘텐츠 제공 성능이 높아진다.
CloutFront의 활용 시나리오
- 정적 콘텐츠 캐싱 : 사진, 영상, JS, StyleSheet 등의 정적 콘텐츠 전송 속도를 높여주고 사용자는 엣지 로케이션을 통해 요청한 콘텐츠를 제공받는다.
- DDoS 공격 대응 : OSI 모델의 3, 4, 7계층을 보호할 수 있는 AWS Shield, WAF를 통합해 DDoS 공격을 방어할 수 있다.
- 동적 콘텐츠 네트워크 최적화를 통한 동적 콘텐츠 가속화 기능을 제공하며, EC2 서버에서 실행 중인 애플리케이션 또는 웹 사이트를 CloudFront와 통합할 수 있다.
- 강화된 보안성 : CloudFront는 SSL(HTTPS) 방식의 보안 기능을 제공하며, 보안이 강화된 API, SSL/TSL 적용, advanced SSL 기능을 자동으로 적용할 수 있다.
- 모든 인프라와 프로세스는 중요 콘텐츠의 보안 수준을 유지하기 위해 PCI, DDS, HIPAA, ISO 규정을 준수한다.
적용 방식
- 경로 패턴 매칭 :
CloudFront가 요청을 받으면, URL 경로 패턴에과 비교해 그에 맞는 캐시 제어 동작을 적용한다. 이와 같은 경로 패턴에 따라 HTTP/HTTPS 프로토콜 설정, 헤어 또는 캐싱 옵션 설정, 쿠키 및 쿼리 문자열 포워딩 설정, 접근 제한 등의 방식으로 특정 오리진으로 요청을 전송할 수 있다. - 헤더 :
헤더 값을 통해 요청 헤더를 오리진 캐시로 포워딩할 수 있으므로, 디바이스의 헤더를 확인한 뒤 그에 맞는 동작을 적용할 수 있다. - 쿼리 문자열 및 쿠키 :
Web APP 중 일부는 오리진으로 정보를 전달하기 위해 쿼리 문자열을 사용한다. 쿼리 문자열은 웹 요청의 일부이며?
기호 다음에 나오며, 하나 이상의 파라미터를&
기호로 연결해 사용한다. - 정적 콘텐츠를 S3 버킷에 옮긴 뒤에는 CloudFront의 서명 URL 방식을 통해 해당 콘텐츠에 대한 비인가 접근을 막을 수 있다.
- 서명 URL :
만료일 및 만료 시간 등 부가 정보가 포함돼 있어 콘텐츠에 접근을 조금 더 세심하게 제어할 수 있다. 웹 서버가 S3 버킷의 콘텐츠에 접근할 수 있는 시간 또는 방식을 제어할 수 있으며, 사용자가 특정 콘텐츠에 대해 접근을 요청할 경우 접속 시간 제약이 설정된 서명 URL 링크를 전달받게 된다. - 서명 쿠키 :
기능상으로는 서명 URL과 거의 동일하며 단지 HTTP 쿠키에 추가 정보를 넣는다는 점이 다르다. 다수 객체에 대한 접근 제어, URL 변경 없이 동일 객체에 대한 접근 제어를 해야할 때 유용하다. 작동 방식은 사용자가 웹 사이트에서 인증을 받으면 Set-Cookie 헤더가 사용자 계정에 전달되어 사용자 디바이스의 쿠키에 적용된다. 사용자가 제한 객체에 대한 접근을 요청하면 브라우저는 요청에 포함된 쿠키를 포워딩한다. 그러면 CloudFront가 쿠키 속성을 확인해 접근 허용 또는 차단 여부를 결정한다.
기능
지역 제한 기능
사용자가 콘텐츠에 대한 요청을 하면 CloudFront는 사용자의 위치에 상관 없이 콘텐츠를 전송한다. 특정 국가의 콘텐츠 요청을 거부하려면 다음과 같은 지역 제한 기능을 사용하면 된다.
- 접속 허용 국가 목록인 화이트리스트를 기반으로 요청 콘텐츠에 대한 접근을 허용
- 접속 금지 국가 목록인 블랙리스트를 기반으로 요청 콘텐츠에 대한 접근을 거절
오류 처리 기능
콘텐츠 요청에 대해 오리진 서버가 HTTP 4xx, 5xx 상태 코드를 반환하면 사용자에게 커스텀 오류 페이지를 제공할 수 있다. 또한 최소 유지시간(TTL)을 정의해 CloudFront 캐시 오류를 얼마나 오래 유지할지 조절할 수 있다.
Route 53
관리형 DNS(Domain Name Service) 서비스 이다. Route53은 사용자의 요청을 EC2 인스턴스 ELB 로드 밸런서, S3 버킷 등 AWS 내의 인프라에 연결시켜 주며, AWS 외부의 인프라에도 연결시킬 수 있다.
Route53은 리전과 독립적으로 작동하기 때문에 다수의 리전을 교차해 연결할 수 있고, 다수의 리전과 VPC 간의 DNS 주소 변환도 가능하다. 퍼블릭 DNS 기록 관리 기능 외에 도메인 등록, 신규 도메인을 위한 DNS 생성, 기존 도메인에 DNS 기록 전송 등 다양한 기능을 제공한다.
Route53이 지원하는 주요 DNS 기록 타입
- A (주소 기록)
- AAAA (IPv6 주소 기록)
- CNAME (캐노니컬 네임 기록)
- CAA (인증 권한 증명)
- MX (메일 교환 기록)
- NAPTR(네임 권한 포인터 기록)
- NS(네임 서버 기록)
- PTR(포인터 기록)
- SOA(권한 시작 기록)
지원하는 라우팅 정책
- 가중치 라운드 로빈 (Weighted Round Robin)
하나의 웹 사이트를 위한 여러 대의 웹 서버 같은 경우처럼, 동일한 기능을 수행하는 여러 개의 리소스를 보유하고 있다면, Route53을 이용해 리소스 별로 트래픽을 분산시킬 수 있다. 이제 막 소프트웨어 설정을 변경한 서버에 소량의 트래픽만(새 서버: 10%, 기존 서버: 90% 분산)을 보내 성능 및 안전 여부를 확인할 수 있다. - 지연 기반 라우팅 (Latency-Based Routing)
동일한 기능을 수행하는 다수의 EC2 기반 데이터 센터에 리소스를 확보하고 있다면 특정 리소스에 대한 DNS 쿼리 요청 시 Route53을 이용해 신속하게 응답할 수 있는 방법이다. 이를 통해 글로벌 사용자를 확보한 애플리케이션의 성능을 높일 수 있고, 다수의 AWS 리전에서 실행되는 애플리케이션을 Route53 엣지 로케이션에 연결해 최저 지연 시간으로 글로벌 사용자에게 서비스를 제공할 수 있다. - 장애 대응 라우팅 (Failover Routing)
능동적 혹은 수동적 페일오버 즉, 장애 대응을 통해 가용 리소스 쪽으로 트래픽을 라우팅 하고 싶을 때 이용한다. 특정 리전에서 모든 리소스를 제공하는 상황에서 해당 리전에 장애가 발생할 때 정상적으로 작동 중인 리전으로 트래픽을 라우팅할 수 있다. - 지역 DNS 라우팅 (Geo DNS Routing)
사용자의 지역에 따라 DNS 쿼리에 응답하도록 한다. 요청 발신지를 기준으로 가장 가까운 엔드포인트로 트래픽을 라우팅하며, 지역에 특화된 콘텐츠 서비스를 제공하거나 특정 지역에서 금지 규정이 있는 콘텐츠는 배포되지 않도록 할 수 있다.
보안
Certificate Manager
AWS 서비스 및 연결된 내부 리소스에 사용할 공인 및 사설 *SSL/TLS(Secure Sockets Layer/전송 계층 보안) 인증서를 손쉽게 프로비저닝, 관리 및 배포할 수 있도록 지원하는 서비스이다. AWS Certificate Manager는 SSL/TLS 인증서를 구매, 업로드 및 갱신하는 데드는 시간 소모적인 수동 프로세스를 대신 처리한다.
IAM Service
AWS 내에서 자격 증명(Authenticaton)에 대해 지원/제어 한다. 대표적으로 User와 User Group 설정을 통해 AWS 계정에 대한 리소스 접근과 관리 권한을 다른 사람에게 부여하고, Role 설정을 통해 AWS 서비스 간 접근 권한을 부여할 수 있다.
관련 레퍼런스