こんにちは!ナレコム新兵の松永です。
名の通りプログラミング歴約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”をクリック。
**動作確認
**
—-
今回僕は『/prod』と入力すると以下の通りに返すAPIを設定しました。(参照URL:http://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/getting-started-mappings.html)
の設定を
の設定を
“Allow”にすると
“Block”にすると