[오브젝트 스토리지] HTTP Referer 엑세스 제한

| 2020년 11월 30일 | 0 Comments

오브젝트 스토리지에 올려진 파일들을 HTTP Referer를 이용하여 특정도메인에서만 보여지게 설정하는 방법입니다.
불필요한 트래픽 발생을 막고자 할때 활용하시면 됩니다.

 

HTTP referer
HTTP 헤더값으로 웹브라우저에서 서버로 전달되는 데이터로 현재 페이지로 오기 이전에 어떤 페이지에 있었는지를 알려주는 정보입니다.
웹브라우저로 사이트를 방문시 링크를 통해 접속하거나 특정 URL(도메인)에서 이미지를 열었냐에 따라 HTTP Referer 값은 결정됩니다.
오브젝트 스토리지 버킷정책에서는 해당 Referer값으로 파일을 보여줄지 말지를 결정할수 있습니다.

 

 

먼저 iwinv 오브젝트 콘솔페이지에서 적용하려는 버킷을 만들고 접근정책을 공개안함으로 수정합니다.

 

S3 Browser를 통해서 버킷내 정책을 입력합니다.

Bucket Referer Policy

{
  “Version”: “2012-10-17”,
  “Id”: “http referer policy example”,
  “Statement”: [
    {
      “Sid”: “Allow get requests originating from www.example.com and example.com.”,
      “Effect”: “Allow”,
      “Principal”: “*”,
      “Action”: [
        “s3:GetObject”
    ],
    “Resource”: “arn:aws:s3:::referer/*”,
    “Condition”: {
      “StringLike”: {
        “aws:Referer”: [
          “https://<도메인주소>/*”,
          “https://www.<도메인주소>/*”
          ]
        }
      }
    }
  ]
}

Effect: 지정한 도메인만 허용할 것이므로 허용(Allow) 입니다.
Principal: 정책을 적용할 대상입니다. 인터넷 전체에 공개할 것이므로 *입니다..
Action: 파일을 보여주는(다운로드) 상황이므로 s3:GetObject 입니다.
Condition: 조건절입니다. 이곳에 설정한 조건에 맞으면 허용(Allow) 또는 거부(Deny) 합니다.
StringLike: 조건절 안에 사용하는 조건문입니다. 뜻은 문자열을 포함하고 있을 때 입니다.
aws:Referer: Referer 값을 지정합니다. 보통 도메인을 설정하며 맨 뒤에 /*를 붙여주어, 도메인 이하 모든 경로에 대해 허용합니다. 여러 도메인을 지정하려면 ,(콤마)로 구분하면 됩니다.

 

다음은 테스트 내용입니다.
버킷정책에서 특정URL을 Referer 설정해두고 게시판에  iwinv 오브젝트 스토리지 경로로 태그하게 되면 페이지가 정상적으로 로딩됩니다.

 

 

Referer 없이 접속 브라우저에서 접속하게 되면 AccessDenied 

 

세부내용은 아래 페이지를 참고하세요.
https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/dev/example-bucket-policies.html#example-bucket-policies-use-case-4

 

Category: LINUX, 가상화/클라우드, 솔루션/IT기타

이 경현

About the Author ()

https://www.cloudv.kr https://www.iwinv.kr (주)스마일서브 IaaS 연구소