AWS WAFより特定URLのみ特定IPを制限する


この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。

やりたいこと

AWS WAF(Web Application Firewall)を使用して、特定のURLに対して特定のIPアドレスからのアクセスのみを許可したいです。

  • www.test.cloud5.jp     ←常にアクセス可能
  • www.test.cloud5.jp/dev/  ←内部開発専用、自社IPのみアクセスできる

構成図

今回実現したい内容の構成図となります。
file

各サービスの用途説明

  • Route 53:名前解決
  • AWS WAF:  アクセス制御
  • Amazon CloudFront: CDN
  • Amazon S3: 静的ウェブサイトをホスティングする
  • AWS Certificate Manager:SSL証明書

やってみた

Route53からS3静的ウェブサイトの内容について、省略します。
参照したい方は下記をご参照ください
S3静的ウェブサイト+CloudFront+Route53の構築

今回はWAF側の設定を説明します。

1.事前にIP set を作成する

自社IPアドレスを「whitelist」に登録する
file

2.Web ACLを作成する

「Web ACLs」タブを選択し、「Create web ACL」をクリックします。

ACL名の設定: Web ACLに名前「webacl-001」を付けます。
リソースの選択: 保護するリソース(CloudFront)を選択します。
file

3.ルールの作成する

「Add rules」または「Add my own rules and rule groups」を選択します。
file

ルールタイプとして「Regular rule」を選択します。
Name: in-not-match-ipset-then-block

file

4.条件の設定:

If a request [matches all the statements (AND)]を選択します。

Statement 1

特定のURLの設定: 「URI path」を「Contains string」「dev」特定のURLを指定します。

Statement 2
[Negate statement results] をチェックします。
特定のIPの設定: 「Originates from an IP address in」を選択し、先程設定するIP Set「whitelist」を指定します。

file

5.アクションの設定

条件に一致した場合のアクション「Block」を設定します。

6.Web ACL作成完了

ルールを保存して、設定を確認し、「Create web ACL」をクリックしてWeb ACLを作成します。

アクセス確認

1.社内環境

www.test.cloud5.jp は常にアクセス可能
file

www.test.cloud5.jp/dev/ は内部開発専用、自社IPのみアクセスできる
file

2.社外環境

www.test.cloud5.jp は常にアクセス可能
file

www.test.cloud5.jp/dev/ は内部開発専用、社外アクセス不可
file

最後に

どなたかの参考になれば幸いです〜。
以上、最後まで読んでいただきありがとうございました。

参考

Amazon S3 を使用して静的ウェブサイトをホスティングする
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/WebsiteHosting.html

S3静的ウェブサイト+CloudFront+Route53の構築

Last modified: 2023-12-12

Author