개발
home
📦

AWS S3를 CloudFront 통해서만 접근하기 (OAI)

Created
2022/06/03
Tags
S3
CloudFront
AWS
2022-06-03 @이영훈
AWS S3의 모든 접근을 막고 CloudFront에서만 외부 접근이 가능하도록 설정하였습니다.
간단하게 설정할 수 있으면서도 보안적으로 안전하게 유용하게 쓸 수 있습니다.

S3 생성

S3 버킷을 생성합니다
보안적으로 안전하게 ‘Block all public access’를 설정해서 외부의 접근을 차단합니다

CloudFront 연결 - OAI 사용

S3를 CloudFront로 연결하여 CDN을 적용합니다.
Origin은 위에서 생성한 S3를 선택하고, ‘S3 bucket access’에서 OAI를 사용합니다.
Create new OAI 버튼을 눌러서 OAI를 생성하고, ‘Yes, update the bucket policy’를 클릭하여 버킷의 policy가 자동으로 변경되도록 해줍니다.
원본 엑세스 ID(OAI, Origin Access Identification)라는 특수 CloudFront 사용자를 만들어 접근이 가능하게 하는 방식입니다.
CloudFront에서 OAI를 사용하여 버킷의 파일을 접근해 사용자에게 제공하고, 사용자는 S3 버킷을 직접 URL을 사용하여 파일을 엑세스 할 수 없습니다.

변경된 S3 Bucket Policy 확인해보기

추가로, S3 버킷의 바뀐 설정을 확인해보겠습니다.
IAM의 State는 5가지로 구성되어 있습니다. 5가지를 다 써야하는 것은 아니고 필요한 내용만 사용하면 됩니다.
Bucket Policy의 Statement의 5요소 E, P, A, R, C를 살펴보면
Effect (허용 또는 차단): 허용
Principal (주체): AWS의 CloudFront OAI E2PBMSANZW5WQR가
Action (목적 대상에 액션): s3에서 object를 가지고 올 수 있는 행동을
Resource (목적 대상): ‘restircted-s3-bucket-test’라는 이름의 s3에게
Condition (조건): 없음 (모든 경우)
{ "Version": "2012-10-17", "id": "PolicyForCloudFrontPrivateContent", "Statement": { "Sid": "1", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity E2PBMSANZW5WQR" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::restricted-s3-bucket-test/*" } }
JSON
복사

Reference.