やりたいこと
AWS WAF(Web Application Firewall)を使用して、特定のURLに対して特定のIPアドレスからのアクセスのみを許可したいです。
- www.test.cloud5.jp ←常にアクセス可能
- www.test.cloud5.jp/dev/ ←内部開発専用、自社IPのみアクセスできる
構成図
今回実現したい内容の構成図となります。
各サービスの用途説明
- Route 53:名前解決
- AWS WAF: アクセス制御
- Amazon CloudFront: CDN
- Amazon S3: 静的ウェブサイトをホスティングする
- AWS Certificate Manager:SSL証明書
やってみた
Route53からS3静的ウェブサイトの内容について、省略します。
参照したい方は下記をご参照ください
S3静的ウェブサイト+CloudFront+Route53の構築
今回はWAF側の設定を説明します。
1.事前にIP set を作成する
自社IPアドレスを「whitelist」に登録する
2.Web ACLを作成する
「Web ACLs」タブを選択し、「Create web ACL」をクリックします。
ACL名の設定: Web ACLに名前「webacl-001」を付けます。
リソースの選択: 保護するリソース(CloudFront)を選択します。
3.ルールの作成する
「Add rules」または「Add my own rules and rule groups」を選択します。
ルールタイプとして「Regular rule」を選択します。
Name: in-not-match-ipset-then-block
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」を指定します。
5.アクションの設定
条件に一致した場合のアクション「Block」を設定します。
6.Web ACL作成完了
ルールを保存して、設定を確認し、「Create web ACL」をクリックしてWeb ACLを作成します。
アクセス確認
1.社内環境
www.test.cloud5.jp は常にアクセス可能
www.test.cloud5.jp/dev/ は内部開発専用、自社IPのみアクセスできる
2.社外環境
www.test.cloud5.jp は常にアクセス可能
www.test.cloud5.jp/dev/ は内部開発専用、社外アクセス不可
最後に
どなたかの参考になれば幸いです〜。
以上、最後まで読んでいただきありがとうございました。
参考
Amazon S3 を使用して静的ウェブサイトをホスティングする
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/WebsiteHosting.html