AWS DVA-C02AWS 허브발행일 2025. 8. 17.원본 https://blog.naver.com/jword_/223970243180 ↗

AWS DVA-C02 #29 CORS

AWS DVA-C02 #29 CORS — #개발자의도구들 #AWS시험 #AWSDVA-C02 #DVA-c02문제 #DVA-c02덤프 참고: ExamPotic Di...

#DVA-C02#Naver Blog

#개발자의도구들 #AWS시험 #AWSDVA-C02 #DVA-c02문제 #DVA-c02덤프

​

참고: ExamPotic Disscussion

문제 찾는법 : 여기 최하단

요구사항 분석

  • 기존 상황
  • 클라이언트 사이드 웹앱 1개 → S3에서 호스팅
  • CloudFront 도메인: https://www.example.com
  • 목표
  • 추가로 3개의 웹앱을 각각 별도 S3 버킷에서 호스팅
  • 공통 리소스(JS·웹폰트)는 중앙 S3 버킷에서 제공
  • 문제

-

  • 브라우저에서 중앙 S3 버킷의 JS·폰트를 로드할 때 차단 발생

​

보기 분석

A. 중앙 S3 버킷에 접근할 수 있는 Access Point를 4개 만들고, 각 웹 애플리케이션 버킷에 해당 Access Point를 연결한다.

​

B.중앙 S3 버킷에 접근을 허용하는 버킷 정책을 만들고, 해당 정책을 중앙 S3 버킷에 적용한다

​

C. 중앙 S3 버킷에 접근을 허용하는 CORS(Cross-Origin Resource Sharing) 구성을 만들고, 이를 중앙 S3 버킷에 추가한다.

​

D. 중앙 S3 버킷의 무결성 검증을 위해 Content-MD5 헤더를 생성하고, 각 웹 애플리케이션 요청에 이 헤더를 포함한다.

​


👉 한줄 솔루션

  • 중앙 S3 버킷의 CROS 정책에 각 웹앱 오리진을 허용하라
  • CloudFront 사용시 CORS 헤더 전달 설정도 함께 구성하라.

​

A.

❌ S3 Access Point는 대규모 데이터 셋에 대한 세분화된 접근 제어를 제공하지만, 브라우저 CORS 차단과는 무관하다.

​

B.

❌. 버킷 정책은 IAM 권한 제어, CORS와 무관하다.

​

C.

✅ 중앙 버킷에서 허용할 오리진(도메인)을 명시하면 중앙 버킷의 컨텐츠를 copy가능

​

D.

❌. Content-MD5는 무결성 검증 용도, CORS와 무관

​

요구 지식

CORS(Cross-Origin Resource Sharing)

웹 브라우저의 보안 정책 중 하나이다. 한 도메인에서 웹 페이지가 다른 도메인/오리진에 요청할 때 차단하는 메커니즘

​

ex) app1.example.com → common-assets.s3.amazonaws.com

​

허용 하려면 서버에서 Access-Control-Allow-Origin 헤더 설정 필요

​

S3의 CORS 설정

S3는 버킷 단위로 CORS 규칙을 JSON으로 설정한다.

​

javascript 코드 예제
                                    # .xml
<CORSConfiguration>
  <CORSRule>
    <AllowOrigin>https://www.example.com</AllowedOrigin>
    <AllowOrigin>https://app2.example.com</AllowedOrigin>
    <AllowedMethod>GET</AllowedMethod>
    <AllowedMethod>HEAD</AllowedMethod>
    <AllowedHeader>*</AllowedHeader> <!--📌 모든 도메인 허용 -->
  </CORSRule>
</CORSConfiguration>

CloudFront + CORS

S3에서 CORS 헤더를 설정해도, CloudFront 캐시가 해당 헤더를 전달해야 한다.

​

👇CloudFront동작

javascript 코드 예제
                                    Behavior → Cache Based on Selected Headers에서 Origin 헤더를 포함

CORS 관련 응답 헤더가 캐시에서 제거되지 않도록 Whitelist Headers 설정

브라우저의 폰트/JS 로드 정책

웹폰트(@font-facE)와 JS 파일은 CORS 검사 대상

폰트: 서버에서 Access-Control-Allow-Origin 헤더 없으면 차단된다.

JS: 다른 오리진이면 동일하게 차단

​

​

​

실습

-S3 bucket -< 권한 -> 편집

javascript 코드 예제
                                    [
  {
    "AllowedHeaders": [
      "*"
    ],
    "AllowedMethods": [
      "GET",
      "HEAD"
    ],
    "AllowedOrigins": [
      "https://www.example.com",
      "https://app2.example.com",
      "https://app3.example.com",
      "https://app4.example.com"
    ],
    "ExposeHeaders": [
      "Access-Control-Allow-Origin"
    ],
    "MaxAgeSeconds": 3000
  }
]

중앙 버킷에 허용할 도메인 및 method를 입력