API GatewayのAWS WAF保護設定の確認

リクエストのフィルタリングが必要なREST APIステージに、適切なWAFルールを適用してください。

説明

REST APIステージをAWS WAFのWeb ACLに関連付けなければ、そのACLのリクエスト検査とブロックは適用されません。フィルタリングが必要な場合は、APIの用途と既存の保護手段に合わせてWAFを構成してください。

WAFはルールに従って処理するため、関連付けだけですべての攻撃を防げるわけではありません。呼び出し元の認証、アプリケーションの権限確認、脆弱性の修正の代替にもなりません。

想定される影響

  • 必要なフィルタリングがなければ、悪意のあるリクエストがアプリケーションに届くおそれがあります。
  • 不要なトラフィックがバックエンドの負荷を増やす可能性があります。
  • リクエストのブロックやレート制御が不足する場合があります。

対処方法

  • 保護するREST APIステージに、同じリージョンのREGIONAL WAFv2 Web ACLを関連付けてください。
  • 適切なマネージドルール、カスタムルール、例外を選び、Countモードなどで正当なリクエストへの影響を確認してから必要なブロックを適用してください。
  • WAFの適用後も、ブロックしたリクエストと許可したリクエストを定期的に確認してください。

例

REST API、デプロイ、同じリージョンのREGIONAL WAFv2 Web ACLは別途構成してください。以下は関連付けの抜粋であり、ルールとログ設定は省略しています。

変更前

hcl
resource "aws_api_gateway_stage" "example" {
  deployment_id = aws_api_gateway_deployment.example.id
  rest_api_id   = aws_api_gateway_rest_api.example.id
  stage_name    = "example"
}

変更後

hcl
resource "aws_api_gateway_stage" "example" {
  deployment_id = aws_api_gateway_deployment.example.id
  rest_api_id   = aws_api_gateway_rest_api.example.id
  stage_name    = "example"
}

resource "aws_wafv2_web_acl_association" "association" {
  resource_arn = aws_api_gateway_stage.example.arn
  web_acl_arn  = aws_wafv2_web_acl.foo.arn
}

説明:

  • 変更前: この抜粋にはステージとWeb ACLの関連付けがありません。他の保護手段と実際の関連付け状態も確認してください。
  • 変更後: ステージをWAFv2 Web ACLに関連付けています。ルールと動作を設定し、正当なリクエストと悪意のあるリクエストの処理結果を確認してください。

参考資料