0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

CloudFront + S3 でアクセスを特定ドメインからのアクセスに絞りたい

Last updated at Posted at 2024-11-20

やりたいこと

  • S3にある公開データに対するアクセスを制限し、Botなどによる大量アクセスをはじきたい

方法

今回は、CloudFrontとCloudFront関数を利用して作成する。
ざっくり制御なのでもっと良い制御方法があるかも、、?

S3のアクセスをCloudFrontからのみに制御する方法は

ここら辺の記事を参考にやってみてください。
本題ではないので割愛します、、、

アクセス制御する

ここまでできている人はほとんど読む必要がないかもですが、CloudFrontの機能にある関数を利用します。

image.png

関数を作りましょう。

function handler(event) {
    var request = event.request;
    var headers = request.headers;
    
    // Refererをチェック
    var referer = headers.referer ? headers.referer.value : '';
    var pattern = /^https?:\/\/[^\/]*\.hoge\.com\//;
    
    if (!pattern.test(referer)) {
        return {
            statusCode: 403,
            statusDescription: 'Forbidden'
        };
    }
    
    return request;
}

ざっくりrefererヘッダが自分のサイトじゃないとだめと、設定しました。
他にもX-Custom-Authヘッダなどを作成して適当なアクセスをはじくでもよいかもです。

注意としては、狙いをつけられると簡単にアクセスされるのであくまでも公開情報に無差別にはアクセスできないように保険を掛ける程度にしてください。
秘密情報は簡単に漏れるので注意です。

まとめ

本当にアクセスを制御したい場合は、認証認可のシステムを組み込む必要があるので結構面倒かも、、?

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?