CloudFront 배포를 사용하여 Amazon S3 버킷에 대한 액세스를 제한하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2020년 5월 28일

Amazon CloudFront 배포를 통해서만 객체에 액세스할 수 있도록 Amazon Simple Storage Service(Amazon S3) 버킷에 대한 액세스를 제한하려고 합니다. 어떻게 해야 합니까?

해결 방법

중요: 시작하기 전에 CloudFront 배포의 Amazon S3 원본이 REST API 엔드포인트(AWSDOC-EXAMPLE-BUCKET.s3.amazonaws.com)로 구성되었는지 확인하십시오. 이 해결 방법은 웹 사이트 엔드포인트(AWSDOC-EXAMPLE-BUCKET.s3-website-us-east-1.amazonaws.com)로 구성된 S3 원본에는 적용되지 않습니다.

CloudFront 원본 액세스 ID(OAI) 생성

1.    CloudFront 콘솔을 여십시오.

2.    배포 목록에서 액세스를 제한하려는 S3 버킷의 콘텐츠를 서비스하는 배포를 선택합니다.

3.    [Origins and Origin Groups] 탭을 선택합니다.

4.    S3 원본을 선택하고 [Edit]를 선택합니다.

5.    [Restrict Bucket Access]에서 [Yes]를 선택합니다.

6.    [Origin Access Identity]에서 [Create a New Identity] 또는 [Use an Existing Identity]를 선택합니다.

7.    [Grant Read Permissions on Bucket]에서 [Yes, Update Bucket Policy]를 선택합니다.
참고: 이 단계에서는 S3 원본의 버킷 정책을 업데이트하여 s3:GetObject에 대한 OAI 액세스 권한을 부여합니다.

8.    [Yes, Edit]를 선택합니다.

버킷 정책 검토

1.    Amazon S3 콘솔을 엽니다.

2.    버킷 목록에서 CloudFront 배포의 원본 버킷을 선택합니다.

3.    [권한] 탭을 선택합니다.

4.    버킷 정책을 선택합니다.

5.    [Bucket policy editor]에서 다음과 같은 문이 표시되는지 확인합니다.

{
	"Sid": "1",
	"Effect": "Allow",
	"Principal": {
		"AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity EAF5XXXXXXXXX"
		},
	"Action": "s3:GetObject",
	"Resource": "arn:aws:s3:::AWSDOC-EXAMPLE-BUCKET/*"
}

OAI 설정의 일부로 [Yes, Update Bucket Policy]를 선택하면 CloudFront가 버킷 정책에 추가하는 문입니다.

6.    CloudFront OAI에서 버킷에 대한 액세스를 금지하는 "Effect": "Deny"가 포함된 문이 있는지 버킷 정책을 검토합니다. CloudFront OAI가 버킷의 객체에 액세스할 수 있도록 해당 문을 수정합니다.

7.    CloudFront OAI가 아닌 소스에서 버킷으로의 액세스를 허용하는 "Effect": "Allow"가 포함된 문이 있는지 버킷 정책을 검토합니다. 각 사용 사례에 따라 해당 문을 수정합니다.

참고: 객체 액세스 제어 목록(객체 ACL)을 사용하여 권한을 관리할 경우 CloudFront OAI 외부에서 해당 파일에 액세스할 수 없는지 객체 ACL에서 확인해야 합니다.

CloudFront OAI를 사용하여 버킷에 대한 액세스를 제한한 후에 선택적으로 AWS WAF를 통합하여 또 다른 보안 계층을 추가할 수 있습니다.