고기 대신 SW 한점/Public Cloud

AWS CloudFront 뽀개기

지식한점 2023. 6. 27. 16:43
반응형

1. AWS CloudFront?

  • Amazon CloudFront는 .html, .css, .js 및 이미지 파일과 같은 정적 및 동적 웹 콘텐츠를 사용자에게 더 빨리 배포하도록 지원하는 웹 서비스
  • udFront는 엣지 로케이션이라고 하는 데이터 센터의 전 세계 네트워크를 통해 콘텐츠를 제공
    CloudFront를 통해 서비스하는 콘텐츠를 사용자가 요청하면 지연 시간이 가장 낮은 엣지 로케이션으로 요청이 라우팅되므로 가능한 최고의 성능으로 콘텐츠가 제공

1.1 콘텐츠를 전송하도록 CloudFront를 설정하는 방법

 

 

설명

1
  • Amazon S3 버킷 또는 고유 HTTP 서버와 같은 오리진 서버(S3버킷 또는 웹서버)를 지정
2
  • 오리진 서버에 파일을 업로드
  • Amazon S3 버킷을 오리진 서버로 사용할 경우 객체의 CloudFront URL을 아는 사람이라면 누구나 액세스 가능
  • 객체를 비공개로 유지하고 액세스할 수 있는 사용자를 제어할 수 있음.
3
  • 사용자가 웹사이트나 앱을 통해 파일을 요청할 경우 어떤 오리진 서버에서 파일을 가져올지 알려주는 CloudFront 배포를 생성
4
  • CloudFront는 새 배포에 도메인 이름을 할당
5
  • CloudFront에서는 배포의 구성(사용자의 콘텐츠가 아님)을 모든 해당 엣지 로케이션 또는 CloudFront가 파일의 사본을 캐싱하는 지리적으로 분산된 데이터 센터의 POP(Point of Presence) 서버 모음으로 보냅니다

 

1.2 CloudFront에서 콘텐츠를 제공하는 방법

 

  1. 사용자가 웹 사이트 또는 애플리케이션에 액세스하고 이미지 파일 및 HTML 파일 같은 하나 이상의 객체에 대한 요청을 전송
  2. DNS가 요청을 최적으로 서비스할 수 있는 CloudFront POP(Point of Presence, 엣지 로케이션)로 요청을 라우팅
  3. CloudFront는 해당 캐시에 요청된 객체가 있는지 확인
    객체가 존재하면 해당 객체를 사용자에게 반환하고, 객체가 캐쉬에 없으면 다음을 수행
    1. CloudFront는 배포의 사양과 요청을 비교하고 요청을 해당하는 객체로 사용자의 원본 서버(예: Amazon S3 버킷 또는 HTTP 서버)에 전달
    2. 원본 서버는 객체를 다시 엣지 로케이션으로 전송
    3. 오리진에서 첫 번째 바이트가 도착하면 CloudFront가 객체를 사용자에게 전달하기 시작
      (CloudFront는 다음에 사용자가 객체를 요청할 때 캐시에 해당 객체를 추가)

 

1.3 CloudFront에서 리전 에지 캐시를 사용하는 방식

  • CloudFront POP(엣지 로케이션)은 많이 사용되는 콘텐츠를 최종 사용자에게 빠르게 제공할 수 있도록 함.
  • 리전 엣지 캐시는 POP에 있을 정도로 많이 사용되는 콘텐츠가 아닌 경우에 도 최종 사용자가 보다 많은 콘텐츠를 가까이에서 액세스 할 수 있도록 함.

 

2. 보안 액세스 구성 및 콘텐츠에 대한 액세스 제한

2.1 CloudFront에서 HTTPS 사용

뷰어가 HTTPS를 사용할 것을 요청하도록 CloudFront를 구성할 수 있습니다. 이렇게 하면 CloudFront가 뷰어와 통신할 때 연결이 암호화됩니다. 또한 CloudFront가 오리진과 HTTPS를 사용하도록 구성할 수 있습니다. 이렇게 하면 CloudFront가 오리진과 통신할 때 연결이 암호화됩니다

  1. 최종 사용자가 HTTPS 요청을 CloudFront에 제출 → 뷰어와 CloudFront 간에 SSL/TLS 협상이 수행
  2. CloudFront 엣지 로케이션에 캐시 응답을 포함하는 경우 CloudFront가 응답을 암호화하여 뷰어에게 반환하면 뷰어는 이를 해독
  3. CloudFront 엣지 로케이션에 캐시 응답을 포함하지 않는 경우 CloudFrontnt는 오리진과 SSL/TLS 협상을 수행하며 협상이 완료되면 요청을 암호화된 형식으로 오리진에 전달
  4. 오리진은 요청을 복호화한 후 요청을 처리하여 응답을 생성 및 암호화한 후 CloudFront에 반환
  5. CloudFront는 응답을 복호화한 후 다시 암호화하여 뷰어에게 전달
    CloudFront는 엣지 로케이션에 응답을 캐시하여 다음에 요청할 때 사용할 수 있도록 함.
  6. 최종 사용자가 응답을 해독

 

2.2 서명된 URL과 서명된 쿠키를 사용하여 프라이빗 콘텐츠 제공

프라이빗 콘텐츠에 대한 사용자 액세스는 다음 두가지 방법으로 제어

  • CloudFront 캐시에 있는 파일에 대한 액세스를 제한
  • 오리진 파일에 대한 액세스를 제한

2.2.1 CloudFront 캐시에 있는 파일에 대한 액세스 제한

  • 서명된 URL을 만들어 인증된 사용자에게 배포
  • 인증된 사용자를 위해 Set-Cookie 헤더를 보내 서명된 쿠키를 설정하도록 하는 애플리케이션 개발
  • URL 또는 쿠키에 서명하기 위해서는 RSA-SHA1을 사용

2.2.2 Amazon S3 버킷에 있는 파일에 대한 액세스 제한

  • 사용자가 지정된 CloudFront 배포를 통해 액세스할 수는 있지만 Amazon S3 URL을 사용하여 직접 액세스할 수는 없도록 Amazon S3 버킷의 콘텐츠를 선택적으로 보호
  • 인증된 요청을 Amazon S3로 보내도록 CloudFront를 구성하고 CloudFront의 인증된 요청에 대한 액세스만 허용하도록 Amazon S3를 구성

 

2.3 콘텐츠의 지리적 배포 제한

  • 특정 지리적 위치에 있는 사용자가 CloudFront 배포를 통해 배포한 콘텐츠에 액세스하는 것을 차단

2.4 필드레벨 암호화 사용으로 민감한 데이터 보호

  • Amazon CloudFront를 사용하면 HTTPS를 통해 오리진 서버에 대한 종단 간 보안 연결을 적용할 수 있습니다. 필드 레벨 암호화는 추가 보안 레이어를 추가하여 시스템 처리 전체에서 특정 데이터를 보호하고 특정 애플리케이션만 이를 볼 수 있도록 합니다
  • 필드 레벨 암호화를 통해 사용자가 민감한 정보를 웹 서버에 안전하게 업로드할 수 있습니다. 사용자가 제공한 민감한 정보는 사용자에게 가까운 엣지에서 암호화되고 전체 애플리케이션 스택에서 암호화를 유지하므로 데이터가 필요하고 이를 해독할 자격 증명을 보유한 애플리케이션만 이 작업을 수행할 수 있습니다
  • CloudFront 필드 레벨 암호화는 퍼블릭 키 암호화라고도 하는 비대칭 암호화를 사용합니다. CloudFront에 퍼블릭 키를 입력하면 지정한 모든 민감한 데이터가 자동적으로 암호화됩니다. CloudFront에 입력한 키는 암호화된 값의 해독에 사용할 수 없습니다. 이는 프라이빗 키만이 가능합니다
  •  
반응형