WAF를 사용하여 hot-linking 지원

3022 단어 AWSwaf
streampack의 Tana입니다.

개요


영상과 이미지 등을 보내는 링크 등이 있다고 생각하지만, 외부 서비스에 링크가 붙는 등 이용되기 싫은 경우가 있다고 생각한다.서버 쪽에서는 nginx 등을 통해 제어할 수 있지만, 급격한 스파이크나 트래픽 등을 의식하고 싶지 않아 CDN(CloudFront)이 가능하다면 AWS WAF를 통해 제어할 수 있다는 걸 최근에 알았다(땀)
AWF WAF
https://console.aws.amazon.com/waf/home
상세한 IP 제한, 파라미터 제한, 지역 제한 등을 할 수 있다
대상 자원은 클라우드 프론트뿐만 아니라 ALB와 API Gateway도 합작 대상이 될 수 있다.
이번에는 직접 링크 (Hot-linking) 에 접근할 수 없도록 s3 도메인 이름만 허용합니다.

설정 방법


웹 ACLs에서 제작하면 이해하기 어려워서 String and regexmatching에서 제작했습니다.

String and regexmatching: 조건 설정


여기에 객체의 기준을 설정합니다.
URL, 매개변수, 헤더 등의 세부 조건을 지정할 수 있습니다.
domain-check이라는 이름으로 제작되어 이번에 헤더의 기계를 검사합니다.

Rule


규칙을 작성합니다.여러 조건을 링크할 수 있습니다.
domain-rule라는 이름으로 새로 만들고 방금 만든 조건의domain-check을 연결합니다.

웹 ACLs 설정


domain-rule를 연결하여 이번에 사전 제작된 CloudFront를 지정합니다.

Edit ACLs


Edit ACLs에서 조건을 지정합니다.
조건에 맞는 것만 허용!를 설정합니다.
즉 s3를 거치지 않으면 접근할 수 없다는 것이다.

직접 연결



기대대로 방문할 수 없습니다.

s3에서 "" 액세스


다음 버전을 만들고 CloudFront의 비디오를 참조합니다.
test.html
<video width="640" height="360" controls>
  <source src="http://xxxxx.cloudfront.net/tmp/test.mp4" type="video/mp4">
</video>
비디오에 액세스할 수 있습니다.

결론


WAF를 사용하는 경우 UI에 간단히 등록하고 제한할 수 있습니다.
더 세밀한 규칙과 조건을 만들면 더 견고한 것을 제공할 수 있다.
청구수에 따라 요금을 받기 때문에 필요한 자원만 제한하는 것이 좋다.

좋은 웹페이지 즐겨찾기