🕰️ 작성일 : 2025.02.24

Q : S3에서 Pre-Signed URL을 생성하면 버킷 이름이 노출됩니다. Custom Domain 기반의 Pre-Signed URL을 생성 할 수 있을까요?

A : CloudFront을 Custom Domain으로 연결하고, CloudFront에서 Custom Domain 기반으로 Pre_Signed URL을 생성 할 수 있습니다. 이를 위해서는 CloudFront의 Key Group을 생성해야하며, CloudFront의 뷰어 액세스 제한Trusted key groups (recommended) 으로 지정해야합니다.

💻 테스트 하기

image.png

  1. CloudFront의 Origin을 Amazon S3로 지정하고 Distribution을 생성합니다.
  2. CloudFront의 Custom Domain을 Route 53에 등록합니다.
  3. CloudFront에 접근하려는 요청 중 Key 기반의 서명 된 요청만을 승인하도록 Public/Private Key을 생성하고 Public Key을 CloudFront에 등록합니다.
  4. CloudFront의 뷰어 액세스 제한Trusted key groups (recommended) 으로 설정하여 서명된 요청만이 CloudFront에 접근 되도록 설정합니다.
  5. Local에서 SDK 기반으로 CloudFront에 대한 Signed URL을 생성하고 반환 받은 URL 기반으로 접근합니다.

1~2 번 항목은 AWS의 공식 문서를 참고하여 진행합니다. 테스트에서는 3번 항목부터 진행합니다.

3. CloudFront에 접근하려는 요청 중 Key 기반의 서명 된 요청만을 승인하도록 Public/Private Key을 생성하고 Public Key을 CloudFront에 등록합니다.

# openssl 기반 Private Key 생성하기
openssl genrsa -out private_key.pem 2048

# Public Key 추출하기 
openssl rsa -pubout -in private_key.pem -out public_key.pem
# Public Key 추출
cat public_key.pem