目次
3.CloudFront-APIGateway構成でのWAF設置場所
CloudFrontのオリジンにAPIGatewayを設定する際、WAFはCloudFrontに設定するか、APIGatewayに設定するか、はたまた両方なのか。
目的は、直接リクエストできてしまうAPIGatewayのセキュリティを強化する構成を考えたい。
案1:CloudFront-WAF-APIGateway
概要
・CloudFrontでなく、APIGatewayのみにWAFを設定する構成。
・CloudFrontのアドレスに攻撃ができてしまうが、APIGatewayの手前でWAFによるWebリクエストの評価が可能
・APIGatewayのアドレスに対してもWAFによるWebリクエストの評価が可能となる。
設定
■CloudFront
・カスタムヘッダと値を設定する。(後続の処理で許可/拒否するために利用)
■WAF(リージョン)
・一般的なWebセキュリティ対策を設定
・CloudFrontで設定されたカスタムヘッダと値を評価し、許可/拒否する。
・CloudFrontのIPレンジをホワイトリストに入れ許可/拒否を設定
■APIGateway
・特になし
案2:WAF-CloudFront-APIGateway
概要
・CloudFrontのみにWAFを設定する構成で、APIGatewayにはWAFを設定しない。
・APIGatewayのアドレスは公開していなければこの構成でも良いが、API-IDを総当たりでリクエストすれば攻撃を受けることもある。(カスタムドメインの導入で、更に攻撃を受けにくくすることも可能)
・APIGateway側である程度の対策はできるが、Webリクエストはできてしまうことと、APIGatewayごとに設定が必要なため運用面が課題となる。
設定
■WAF(グローバル)
・一般的なWebセキュリティ対策を設定
■CloudFront
・カスタムヘッダと値を設定する。(後続の処理で許可/拒否するために利用)
■APIGateway
・メソッドリクエストの必須HTTPリクエストヘッダーでカスタムヘッダを指定する。
・リソースポリシーにて、CloudFrontのIPレンジで許可/拒否を設定
案3:WAF-CloudFront-WAF-APIGateway
概要
・CloudFrontとAPIGatewayの両方にWAFを設定する構成。
・CloudFrontとAPIGatewayどちらのアドレスに対してもWAFによるWebリクエストの評価が可能
・CloudFront経由の場合、WAFで2重で評価されるためWAFに関してコストが約2倍かかることとなる。
(コスト面は案1ではCloudFront、案2ではAPIGatewayに対してWAFによるレート制限がない為、一概に評価ができない)
設定
■WAF(グローバル)
・後続でセキュリティ対策をするので、レート制限のみ設定
■CloudFront
・カスタムヘッダと値を設定する。(後続の処理で許可/拒否するために利用)
■WAF(リージョン)
・一般的なWebセキュリティ対策を設定
・CloudFrontで設定されたカスタムヘッダと値を評価し、許可/拒否する。
・CloudFrontのIPレンジをホワイトリストに入れ許可/拒否を設定
■APIGateway
・特になし
サマリ
・セキュリティ面は案1も案3も同等で、案2が低くなる。※CloudFrontのWAFとAPIGatewayのWAFでは内部エラーが発生した際の違いはある。APIGatewayの方がセキュリティが高い
・コスト面は一概に言えないが案3>案2>案1となると思われる。
・運用面では案2がAPIGatewayごとに設定が必要で、案3がWAFの2重管理となる。
項目 | 運用 | セキュリティ | コスト | 備考 |
---|---|---|---|---|
案1:CF-WAF-APIGW | 〇 | 〇 | ー | CloudFrontはコンテンツ配信しなければコスト面は大した額でないので、運用面の手間が少なく セキュリティも高いこの案で良いんじゃないだろうか。 |
案2:WAF-CF-APIGW | × | △ | ー | APIGatewayのアドレス漏洩は考えすぎだろうか、内部の人間ならわかるから考慮すべきですよね。 CloudFrontのカスタムヘッダも内部の人間ならわかるから、やはりセキュリティ面が弱いと思う。 |
案3:WAF-CF-WAF-APIGW | △ | 〇 | ー | WAFがグローバルとリージョンで2重管理となる。 運用面で設定変更が手間になるが、セキュリティは高いと思われる。レイテンシ・・・は不明 |
ちなみにCloudFrontのIPアドレスは下記から取得できますが、更新されることがあるのでメンテは必要になります。
https://docs.aws.amazon.com/ja_jp/general/latest/gr/aws-ip-ranges.html
引用(CloudFrontのWAFとAPIGatewayのWAFの違い)
ごくまれに、AWS WAF で、リクエストを許可またはブロックするかどうかについて、
API Gateway、CloudFront、または Application Load Balancer への応答を遅らせる内部エラーが発生する場合があります。
そのような場合は通常、CloudFront はリクエストを許可またはコンテンツを提供します。
API Gateway および Application Load Balancer は、通常、リクエストを拒否し、コンテンツを提供しません。
AWS WAF Classic 仕組み
コメント