『API GatewayにCloud Frontを紐づけ、WAFでIP制限をかけてみる』

こんにちは!ナレコム新兵の松永です。
名の通りプログラミング歴約1か月の『ド』のつく初心者の僕の成長日誌とも言えるAWSレシピ記事をAWS入門を
試みている皆さんに向けて(とか言って一番は自分のためなんじゃないのか?笑)綴って行きます!!

記念すべき初投稿は『API GatewayにCloud Frontを紐づけ、WAFでIP制限をかけてみる』です。

では早速。。。

そもそも

Cloud Frontとは…

・AWSが提供する高速コンテンツ配信サービス。
・CDN(Contents Delivery Network)を利用しCloud Frontを通すことでより高速なコンテンツの配信が実現できる。

WAFとは…

・Web Application Firewall はWabサイト上のアプリケーション用に特化したファイヤーウォールのことです。
・Web Application の脆弱性を無害化できる。

Cloud Front、WAFもAWSをする上で大変重宝なサービスですので別記事にてまた詳しく書きます。

さてさて本題、『API GatewayにCloud Frontを紐づけ、WAFでIP制限をかけてみる』
を作成していきます。

解説

・Cloud Frontに作成
・Cloud FrontにAPIを紐づけ
・WAFにIPアドレスを設定
・WAFでIPアドレス制限を設定
・WAFでIPアドレスの許可設定
・動作確認

Cloud Frontの作成

——
まず初めにWAFをCloud Frontに紐づけていきます。
Cloud Front画面を開き以下の設定を行います。(WAFは、この記事ではすでに作成してあるものとする

* 〔1〕Cloud Frontを開きDistributions内の”Create Distribution”をクリック。
* 〔2〕Webの”Get Started”をクリック。

Cloud FrontにAPIを紐づけ

—-

* 〔3〕別タブで紐づけるAPIの画面を開き、ステージの”URLの呼び出し”を表示しておく。
* 〔4〕”Origin Domain Name”に〔3〕をコピーし、張り付ける。
すると自動で”Origin Path”,”Origin ID”が割り当てられる。

APIはhttpsなので

・”Origin Protocol Policy”を”Match Viewer”に設定。
・”Viewer Protocol Policy”を”HTTPS only”に設定。

* 〔5〕下にスクロールしDistribution Settingsの”AWS WAF Web ACL”で紐づけしたいWAFを設定する。
* 〔6〕logを設定する場合は”Logging”をOnに設定。
* 〔7〕logの保存先を設定。
* 設定完了したら右下の”Create Distribution”をクリック。

〔8〕のちほど動作確認は、ここで作成したCloud Frontのドメイン名〔9〕を使用して確認します。
〔10〕作成直後Cloud Frontの”Statusが”In Progress”から”Deployed”になるまで約30分なので作成、編集はミスの無いように。

WAFにIPアドレスを設定

—-
次に紐づけたWAF内でIPアドレスを設定し制限を掛けていきます。
WAFの画面を開き以下の設定を行います。

* 〔11〕 WAFの画面の”IP addresses”
* 〔12〕”Create condition”をクリック。
* 〔13〕”Name”を入力。”Region”は”Global(Cloudfront)”に設定。
* 〔14〕指定対象としたいIPアドレス(単体の場合:IPアドレス/32)を入力。
→入力したら”Add address or range”をクリック。
* 〔15〕設定完了したらクリック。

WAFでIPアドレス制限を設定

—-

* 〔16〕WAFの画面の”Rules”の”Create rule”をクリック。
* 〔17〕”Name”を入力。(入力すると”CloudWatch metric name”も自動入力される)
* 〔18〕上から”does”に設定。”Originate from an IP address in”を選択し、先ほど〔13〕で設定したIPを選択。
※これで〔14〕のIPアドレスを対象とする設定ができるようになる。
* 〔19〕設定完了したら”Create”をクリック。

WAFでIPアドレスの許可設定

—-

〔20〕WAFの画面に戻り設定中のWAF名を選択。
〔21〕”Rule”をクリック。
〔22〕 “Edit web ACL”をクリック。

〔23〕先ほど作成した”Rule”〔17〕を選択し”Add rule to web ACL”をクリック。
〔24〕設定したIPアドレス〔14〕を”許可する”か”拒否する”か選択。
〔25〕設定しているIP〔14〕以外のアクセスに対しての動作を設定。
※”Allow”を選択→許可する。”Block”→拒否する。”Count”→アクセスをカウントする。
〔26〕設定完了したら”Update”をクリック。
以上で設定は完了です!それでは動作確認してみましょう。

動作確認

—-
今回僕は『/prod』と入力すると以下の通りに返すAPIを設定しました。(参照URL:http://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/getting-started-mappings.html)
の設定を

“Allow”にすると

“Block”にすると

のような表示になり正常にIP制限がかかっていることがわかる。(許可以外の表示もERROR画面になります。)

以上でAPI GatewayにCloud Frontを紐づけ、WAFでIP制限をかけてみる事が出来ました。
いかがでしたか?

その他ご不明な点は
こちら までお気軽にお問合せください。

では次回をお楽しみに!

この記事を書いた人

aws-recipe-user