[AWS] S3와 CloudFront 연동하기

RUNGOAT·2023년 5월 1일
1

AWS

목록 보기
1/1
post-thumbnail

🔑 CloudFront와 S3를 연동했을 때 이점


  • 콘텐츠 캐싱을 통한 S3 부하 감소
  • Edge Location을 통한 응답속도 향상
  • 콘텐츠 보안 유지
  • 등등

찾아보니 이점들이 꽤나 많다.
하지만 이번 프로젝트에서 진행하는 목적은 콘텐츠 보안 유지이다.
S3 콘텐츠에 Public 액세스 접근을 차단하고 CloudFront를 거치도록 하여 CloudFront의 보호 기능들을 사용한다.

자세한 내용은 여기를 찾아보길 바란다.


⚙ CloudFront 배포 설정

1. 배포 생성


2. 배포 생성 설정

  • 원본 도메인: S3 도메인 선택
  • 이름: 원본 도메인 선택 시 자동 입력
  • 원본 액세스 제어 설정 선택
    • 이름에는 S3 도메인이 입력되어 있다.
    • 확인 후 "생성"

위 설정들을 마쳤으면 아래의 나머지 설정들은 기본으로 두고 "배포 생성"을 한다.


3. S3 ACL 활성화

  • 해당 버킷 - 권한 - 객체 소유권


4. S3 버킷정책 설정 추가

  • CloudFront - 배포 - 해당 배포 클릭 후
  • S3 버킷 정책에 CloudFront에 대한 액세스 허용하는 정책을 복사한다.

  • 버킷의 권한에서 버킷 정책에 해당 정책을 복사한다.
{
        "Version": "2008-10-17",
        "Id": "PolicyForCloudFrontPrivateContent",
        "Statement": [
            {
                "Sid": "AllowCloudFrontServicePrincipal",
                "Effect": "Allow",
                "Principal": {
                    "Service": "cloudfront.amazonaws.com"
                },
                "Action": "s3:GetObject",
                "Resource": "arn:aws:s3:::test-springboot-deploy/*",
                "Condition": {
                    "StringEquals": {
                      "AWS:SourceArn": "arn:aws:cloudfront::468740963806:distribution/ED6BSKMEE9BKA"
                    }
                }
            }
        ]
      }
  • 모든 퍼블릭 액세스 차단(오류 발생)
  • 삭제 오류
    모든 퍼블릭 액세스를 차단하니 s3버킷으로 접근해서 파일 삭제가 안된다.
  • 해결

S3 버킷의 퍼블릭 액세스 차단의 경우, 활성화 시켜도 CloudFront와 연결하는데는 문제가 없지만 SpringBoot를 통해 S3에 파일 업로드/삭제를 진행하고 있어 새 ACL을 통해 부여된 버킷 및 객체에 대한 퍼블릭 액세스 차단은 비활성화해야 한다.


✅ 확인

S3 객체 URL 로 직접 접근한 경우

  • AccessDenied가 된다.

CloudFront 배포 도메인을 통해 접근한 경우

  • 정상적으로 파일을 불러온다.

📌 출처

profile
📞피드백 너무나 환영

0개의 댓글