『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”に設定。

すると自動で”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”をクリック。

〔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”にすると

“Block”にすると

のような表示になり正常にIP制限がかかっていることがわかる。(許可以外の表示もERROR画面になります。)以上でAPI GatewayにCloud Frontを紐づけ、WAFでIP制限をかけてみる事が出来ました。いかがでしたか?その他ご不明な点はこちら までお気軽にお問合せください。では次回をお楽しみに!

この記事を書いた人

aws-recipe-user