地理的条件によるアクセス遮断の実装
Amazon CloudFront 経由でコンテンツを配信している企業が、ライセンス契約により特定の 3 か国からのリクエストを必ず遮断する必要に迫られました。アプリケーションのコードを改修せずにこの地理的制限を実現するために利用すべき AWS サービスはどれですか。
解説を読む(正解: C)
Web アプリケーションに対する HTTP/HTTPS リクエストを、内容や送信元の属性に基づいて許可・拒否するための AWS のサービスが AWS WAF です。AWS WAF では Web ACL にルールを並べ、その中の地理的一致(geo match)ルールステートメントで送信元 IP から判定された国コードを条件にできるため、特定国からのリクエストだけをブロックできます。Web ACL は CloudFront ディストリビューション、Application Load Balancer、API Gateway などに関連付けて動作するので、アプリケーションコードを一切変更せずにエッジ側で遮断でき、ライセンス上の地理的制限という本シナリオの要件を満たします。よって C が正解です。A の AWS Shield は DDoS 攻撃からの保護に特化したサービスで、Advanced でも「この国からのアクセスは拒否する」といった業務要件ベースのフィルタリングは行えません。B の Amazon GuardDuty は CloudTrail や VPC フローログなどを解析して脅威を検出する検出専用サービスであり、リクエストをインラインでブロックする機能を持ちません。D の AWS Firewall Manager は AWS Organizations 配下の複数アカウントに対して AWS WAF やセキュリティグループのルールを一元配布・監査する管理サービスであり、それ自体が遮断エンジンではなく、実際のブロックは配布先の AWS WAF が担います。
レイヤー 7 の攻撃からアプリケーションを保護する
ALB の背後の API が、SQL インジェクションやクロスサイトスクリプティングの試行と、特定の送信元からの大量リクエストを受けています。既定の AWS Shield Standard に加えて、HTTP リクエストの中身を検査して遮断するために追加すべき対策はどれですか。
解説を読む(正解: A)
AWS WAF は、CloudFront、Application Load Balancer、API Gateway、AppSync などの前段に配置される Web アプリケーションファイアウォールで、HTTP/HTTPS リクエストの URI、ヘッダー、クエリ文字列、ボディといったレイヤー 7 の中身を検査してルールに基づき許可・ブロック・カウントを行います。SQL インジェクションやクロスサイトスクリプティングに対しては AWS マネージドルールグループを適用でき、短時間に大量のリクエストを送る送信元に対してはレートベースルールで自動的に閾値超過をブロックできます。設問の要件を過不足なく満たすため A が正解です。B は誤りで、AWS Shield Standard も Advanced も主眼はネットワーク層・トランスポート層を中心とした DDoS 攻撃の緩和であり、SQL インジェクションのような不正なリクエスト内容をシグネチャで自動判定して遮断する機能ではありません。Shield Advanced では AWS WAF の利用料が含まれますが、実際に L7 の攻撃パターンを遮断するにはやはり WAF のルール設定が必要になります。C も誤りで、Amazon GuardDuty は CloudTrail、VPC フローログ、DNS ログなどを解析して脅威を検出する検出専用サービスであり、通信をインラインで遮断する機能は持ちません。D は送信元 IP とポートという L3/L4 の情報しか扱えず、正規のポート 443 経由で送られてくる不正なペイロードを判別できないため、要件を満たしません。
SQL インジェクションと大量リクエストへの対処
Application Load Balancer で公開している API に対して、SQL インジェクションと単一 IP アドレスからの大量リクエストの両方を防ぎたいと考えています。利用すべきサービスと機能はどれですか。
解説を読む(正解: A)
AWS WAF は、Amazon CloudFront、Application Load Balancer、Amazon API Gateway などの前段に配置してレイヤー 7 の HTTP/HTTPS リクエストを検査する Web アプリケーションファイアウォールです。Web ACL にルールを追加して動作を定義し、AWS マネージドルールでは SQL インジェクションやクロスサイトスクリプティング、既知の不正な入力といった代表的な攻撃パターンを AWS が管理するシグネチャで遮断できます。加えてレートベースルールを使うと、指定した時間枠内に定めたしきい値を超えたリクエストを送る送信元 IP アドレスを自動的にブロックできるため、HTTP フラッドやブルートフォースの緩和にも有効です。1 つの Web ACL で両方の要件を満たせることから、A が正解です。B の AWS Shield Standard はネットワーク層とトランスポート層の DDoS を緩和するもので、リクエストの中身を解析して SQL インジェクションを判定することはできません。C のネットワーク ACL はサブネット境界で IP アドレスやポートを基準に許可・拒否を行う仕組みであり、HTTP ペイロードの検査はできず、攻撃元 IP を手動で登録し続ける運用も現実的ではありません。D の Amazon GuardDuty は脅威を検出して結果 (findings) を出力する検出専用サービスであり、トラフィックを遮断するブロックルールという機能は持っていません。