AWSコンテンツへのアクセスを限定開放する黒田如水の画像下さい!!!!(4)AWSWAFのアクセスルールをCloudFrontに適応する
あらすじ
黒田家のAWSのS3にあるファイルやAPIを特定の相手のみが利用できる形で公開するために、CloudFrontを使ってみよう。 だって、亡き友竹中半兵衛重治が言い残したのだから...(エモポイント)
前回CloudFrontから複数のコンテンツへのアクセスを可能にするマルチオリジンを実現した黒田如水、今回は肝心のアクセス制限ルールを適用するようだ。
大まかな流れ
- WAFの中のIP SetでIPアドレスをAWSに登録する。
- 登録したIPアドレスを元に、IPアドレスアクセス許可(ないし拒否)のルールを作る
- 作成したアクセス許可ルールをCloudFrontに適用する
アクセス制限のためのルールを作成する v20210607
ここではCloudFront
の外の仕組みである、WAFというサービスを使用します。
このWAF
で作成したアクセス制限のルールを、CloudFront
のDistribution
に適用する、という流れです。
ルールに使用するIPアドレスを登録する
サービス一覧からAWSWAFを立ち上げます。
左のペインから IP sets
を選び、画面右上のCreate IP set
を選びます。
IPアドレスを入力します。
Region
はデフォルトからGlobal
に変更してください。
IP addresses
にアクセスを許可する(あるいは拒否する)IPアドレスを入力します。
アクセスルールを作る
画面左のペインからWeb ACL
を選び、画面左上のCreate web ACL
を押下します
表示される画面のうちResource type
は
今回のようにCloudFrontに対して適用するルールの場合は
CloudFront distribution
に必ず設定してください。
Next
を押し、表示される画面のAddRule
のプルダウンから Add my own rules and rule groups
を選択します。
下図の画面が表示されるので
Rule Type
からIP Set
を選び、
ル―ルの名前の入力とルールが適用されるIPセットのプルダウンの選択を済ませます。
最後にAction
の箇所でプルダウンから選択した IPセットにしたいして動作(ここでいうとCloudFrontのアクセス)を
許可(Allow)するのか、拒否(Block)するのかを選びます。
ここでは、IPセットのみアクセス可能にしたいので、Allow
とします。
右下のAdd rule
でルールの作成を終了します。
最後に戻ってきた画面でBlock
を選びます。
これで、IPアドレスに合致するものはアクションが可能、合致しないIPアドレスの場合はアクションを拒否、というルールが出来ました。
次のSet rule priority
は、複数のルールを登録した場合の処理の優先順位です。
1つしかルールを作成、設定していないので、何もせずNext
を押します。
さらに次のConfigure metrics
は、CloudWatch
上の表示を決める部分なので、デフォルト値で問題ないです。
最後に、Review and create web ACL
で、自分の作成したルールを確認し、画面最下部のCreate web ACL
で完了です。
作ったアクセスルールをCloudFrontに設定する
CloudFront
に戻り、ルールを適用するDistribution
を開き、Editのボタンから編集画面に移動します。
開いた画面のAWS WAF Web ACL
のプルダウンから、先ほどAWFで作成したルールを選んで、右下の「yes,Edit」で完了です。
テスト
登録したIPアドレスでアクセスすると図のように正常にアクセスが、
それ以外でアクセスすると下記のようなアクセス拒否のメッセージが表示されます。
403 ERROR The request could not be satisfied. Request blocked. We can't connect to the server for this app or website at this time. There might be too much traffic or a configuration error. Try again later, or contact the app or website owner. If you provide content to customers through CloudFront, you can find steps to troubleshoot and help prevent this error by reviewing the CloudFront documentation. Generated by cloudfront (CloudFront) Request ID: **********************************
できたこと
一つのアクセスルールを複数のS3、APIゲートウェイに適用する。
まとめ
- 旗印がIPアドレス、つまりWeb上の所属を表す
- CloudFrontに適用したAWFのルールが門番となり、通行を許可したり、拒否したりという判断を行っている。
- アクセス時のBehaviorが目的となるOriginへの分岐をつかさどる
- Originはコンテンツそのものを表す。
黒田家のその後
黒田如水とその息子長政はAWSというクラウドストレージに寝返りに必要な情報を置き、その成果を十分に発揮。 家康は戦後、黒田長政の右手を三度取って礼を言ったとされる。
このことを聞いた如水は息子に対し「その間左手は何をしていたのか」と長政に尋ねた。自分なら家康○して天下を取るだろうに。
長政は答えて言う。
「某しかAWSのアカウントを持っていない故、福島殿のファイルを代わりにアップしていた」
豊前の大名黒田家の受難は続く。