STUDY/AWS
AWS | S3 HTTP Referer + CloudFront (S3 핫링크 방지)
개미606
2021. 2. 1. 10:51
S3에 올라간 객체를 특정 도메인에서만 접근할 수 있도록 설정한다.
✔️Resource의 [bucket-name]부분에 꼭 해당 버킷 명으로 변경할 것
✔️Referer를 하나만 적을 경우 []배열 지워줄 것
✔️Effect 허용에 대한 설정이므로 Allow
✔️Principal은 정책을 적용할 대상. 모두 공개로 설정(*)
✔️파일을 보여줄 때의 상황이므로 Action은 GetObject가 됨
✔️Condition은 조건절을 설정하는 곳. StringLike는 문자열을 포함한다는 뜻으로 aws:Referer를 통해 도메인을 설정한다
{
"Version": "2012-10-17",
"Id": "http referer policy",
"Statement": [
{
"Sid": "Allow get request originated from ~",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::[bucket-name]/*",
"Condition": {
"StringLike": {
"aws:Referer": [
"https://example.com/*",
"https://www.example.com/*"
]
}
}
}
]
}
설정 이후 객체의 URL을 눌렀을 때 Access Denied이 뜨면 설정이 잘 된 것이다!
CloudFront에서 위에서 설정한 S3 버킷을 오리진으로 사용하고 있기 때문에, CloudFront측에도 설정이 필요하다.
Cache Based on Selected Request Headers에서 Whitelist를 선택 (Referer에 대한 설정을 하기 위해)