

# アーキテクチャの概要
<a name="architecture-overview"></a>

このセクションでは、このソリューションで導入されるコンポーネントのリファレンス実装のアーキテクチャ図を示します。

## アーキテクチャ図
<a name="architecture-diagram"></a>

このソリューションをデフォルトのパラメータを使用してデプロイすると、AWS アカウントに次のコンポーネントがデプロイされます。

 **CloudFormation テンプレートは、AWS WAF およびその他の AWS リソースをデプロイして、一般的な攻撃からウェブアプリケーションを保護します。**

![\[AWS WAF アーキテクチャの概要\]](http://docs.aws.amazon.com/ja_jp/solutions/latest/security-automations-for-aws-waf/images/aws-waf-architecture-overview.png)


設計の中核となるのは [AWS WAF](https://aws.amazon.com/waf/) ウェブ ACL です。このウェブ ACL は、ウェブアプリケーションへのすべての受信リクエストの一元的な検査と判断ポイントとして機能します。CloudFormation スタックの初期設定時に、ユーザーはどの保護コンポーネントをアクティブにするのかを定義します。各コンポーネントは独立して動作し、ウェブ ACL に異なるルールを追加します。

このソリューションのコンポーネントは、次の保護領域に分類できます。

**注記**  
グループのラベルは WAF ルールの優先度レベルを反映していません。
+  **AWS マネージドルール (A)** – このコンポーネントには、AWS マネージドルールの [IP 評価ルールグループ](https://docs.aws.amazon.com/waf/latest/developerguide/aws-managed-rule-groups-ip-rep.html)、[ベースラインルールグループ](https://docs.aws.amazon.com/waf/latest/developerguide/aws-managed-rule-groups-use-case.html)、および[ユースケース固有のルールグループ](https://docs.aws.amazon.com/waf/latest/developerguide/aws-managed-rule-groups-baseline.html)が含まれます。これらのルールは独自のルールを作成しなくても、[OWASP](https://owasp.org/) で公開されているものを含め、一般的なアプリケーションの脆弱性やその他の望ましくないトラフィックが悪用されるのを防ぐことができます。
+  **手動 IP リスト (B および C)** – これらのコンポーネントは 2 つの AWS WAF ルールを作成します。これらのルールを使用すると、許可または拒否する IP アドレスを手動で挿入できます。[Amazon EventBridge](https://aws.amazon.com/eventbridge) [ルール](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-rules.html)と [Amazon DynamoDB](https://aws.amazon.com/dynamodb) を使用して、許可または拒否された IP セットの IP 保持を設定し、期限切れの IP アドレスを削除できます。詳細については、「[許可および拒否された AWS WAF IP セットの IP 保持を設定する](configure-ip-retention-on-allowed-and-denied-aws-waf-ip-sets.md)」を参照してください。
+  **SQL インジェクション (D) および XSS (E)** – これらコンポーネントにより、URI、クエリ文字列、リクエストボディ内の一般的な SQL インジェクションやクロスサイトスクリプティング (XSS) パターンから保護するよう設計された 2 つの AWS WAF ルールが設定されます。
+  **HTTP フラッド (F)** – このコンポーネントは、アプリケーションレイヤーの DDoS 攻撃や総当たりのログインの試行など、特定の IP アドレスから大量の要求を行う攻撃から保護します。このルールでは、デフォルトの 5 分間に 1 つの IP アドレスから許可される受信リクエストの最大数を定義するクォータを設定します (**Athena Query Run Time Schedule** パラメータで設定可能)。このしきい値を超えると、IP アドレスからの追加のリクエストは一時的にブロックされます。このルールは、AWS WAF レートベースのルールを使用するか、Lambda 関数または Athena クエリを使用して AWS WAF ログを処理することで実装できます。HTTP フラッドの緩和策オプションに関連するトレードオフの詳細については、「[ログパーサーオプション](log-parser-options.md)」を参照してください。
+  **スキャナーとプローブ (G)** – このコンポーネントは、アプリケーションアクセスログを解析して、オリジンによって生成された異常な量のエラーなどの疑わしい動作を検索します。その後、疑わしい送信元 IP アドレスは、お客様が定義した期間、ブロックされます。このルールは、[Lambda](https://aws.amazon.com/lambda/) 関数または [Athena](https://aws.amazon.com/athena/) クエリを使用して実装できます。スキャナーとプローブの緩和策オプションに関連するトレードオフの詳細については、「[ログパーサーオプション](log-parser-options.md)」を参照してください。
+  **IP 評価リスト (H)** – このコンポーネントは、ブロックする新しい範囲について、毎時サードパーティーの IP 評価リストをチェックする `IP Lists Parser` Lambda 関数です。これらのリストには、Spamhaus Don’t Route Or Peer (DROP) および Extended DROP (EDROP) リスト、Proofpoint Emerging Threats IP リスト、Tor exit node リストが含まれます。
+  **不正なボット (I)** - このコンポーネントは、ハニーポットメカニズムに加えて、Application Load Balancer (ALB) または Amazon CloudFront への直接接続をモニタリングすることで、不正なボットの検出を強化します。ボットがハニーポットをバイパスして ALB または CloudFront とやり取りしようとすると、システムはリクエストパターンとログを分析して悪意のあるアクティビティを特定します。不正なボットを検出すると、その IP アドレスを抽出して AWS WAF ブロックリストに追加し、以降のアクセスを防ぎます。不正なボット検出は、構造化されたロジックチェーンを介して動作し、脅威に対して包括的に対応します。
  + HTTP フラッド保護 Lambda ログパーサー – フラッド分析中にログエントリから不正なボットの IP を収集します。
  + スキャナーとプローブ保護 Lambda ログパーサー – スキャナー関連のログエントリから不正なボットの IP を特定します。
  + HTTP フラッド保護 Athena ログパーサー – クエリ実行全体でパーティションを使用して、Athena ログから不正なボットの IP を抽出します。
  + スキャナーとプローブ保護 Athena ログパーサー – 同じパーティショニング戦略を使用して、スキャナー関連の Athena ログから不正なボットの IP を取得します。
  + フォールバック検出 - HTTP フラッド保護およびスキャナーとプローブ保護の両方が無効になっている場合、システムは Log Lambda パーサーにより、[WAF ラベルフィルター](https://docs.aws.amazon.com/waf/latest/developerguide/waf-labels.html)に基づいてボットアクティビティをログに記録します。

このソリューションの 3 つのカスタム Lambda 関数はそれぞれ、ランタイムメトリクスを CloudWatch に公開します。これらの Lambda 関数の詳細については、「[コンポーネントの詳細](component-details.md)」を参照してください。

# AWS Well-Architected の設計に関する考慮事項
<a name="well-architected"></a>

このソリューションでは、[AWS Well-Architected フレームワーク](https://aws.amazon.com/architecture/well-architected/)のベストプラクティスを使用しています。これにより、お客様は信頼性が高く、安全で、効率的で、コスト効率の高いワークロードをクラウド上で設計し運用することができます。

このセクションでは、Well-Architected Framework の設計原則とベストプラクティスがこのソリューションにどのように役立つかについて説明します。

## オペレーショナルエクセレンス
<a name="operational-excellence"></a>

このセクションでは、[オペレーショナルエクセレンスの柱](https://docs.aws.amazon.com/wellarchitected/latest/operational-excellence-pillar/welcome.html)に関する原則とベストプラクティスを用いてこのソリューションをどのように設計したかを説明します。
+ このソリューションは、メトリクスを CloudWatch にプッシュして、インフラストラクチャ、Lambda 関数、[Amazon Data Firehose](https://aws.amazon.com/kinesis/data-firehose/)、Amazon S3 バケット、その他のソリューションコンポーネントへのオブザーバビリティを提供します。
+ 当社では、AWS 継続的インテグレーションおよび継続的デリバリー (CI/CD) パイプラインを通じてソリューションを開発、テスト、公開します。これにより、デベロッパーは一貫して高品質の結果を達成できます。
+ アカウントに必要なすべてのリソースをプロビジョニングする CloudFormation テンプレートを使用してソリューションをインストールできます。ソリューションを更新または削除するには、テンプレートを更新または削除するだけで済みます。

## セキュリティ
<a name="security-pillar"></a>

このセクションでは、このソリューションを設計する際に、[セキュリティの柱](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/welcome.html)の原則とベストプラクティスをどのように適用したかについて説明します。
+ すべてのサービス間通信は、[AWS Identity and Access Management](https://aws.amazon.com/iam/) (IAM) ロールを使用します。
+ このソリューションで使用されるすべてのロールは、[最小権限](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege)の原則に従います。つまり、サービスが正しく機能するために必要な最小限のアクセス許可のみが含まれます。
+ Amazon S3 バケットと DynamoDB を含むすべてのデータストレージは保管時に暗号化されます。

## 信頼性
<a name="reliability"></a>

このセクションでは、[信頼性の柱](https://docs.aws.amazon.com/wellarchitected/latest/reliability-pillar/welcome.html)に関する原則とベストプラクティスを用いてこのソリューションをどのように設計したかを説明します。
+ このソリューションは、AWS のサーバーレスサービス (Lambda、Firehose、Amazon S3、Athena など) をできるだけ使用し、高可用性の維持とサービス障害からの復旧を確保します。
+ ソリューションで自動化されたテストを実行して、エラーを神速に検出して修正します。
+ このソリューションでは、データ処理に Lambda 関数を使用します。このソリューションはデータを Amazon S3 と DynamoDB に保存しており、デフォルトで複数のアベイラビリティーゾーンに保持します。

## パフォーマンス効率
<a name="performance-efficiency"></a>

このセクションでは、[パフォーマンス効率の柱](https://docs.aws.amazon.com/wellarchitected/latest/performance-efficiency-pillar/welcome.html)に関する原則とベストプラクティスを用いてこのソリューションをどのように設計したかを説明します。
+ このソリューションでは、サーバーレスアーキテクチャを使用して、高いスケーラビリティと可用性を低コストで実現します。
+ このソリューションでは、データをパーティション分割し、クエリを最適化してデータスキャンの量を減らし、より高速な結果を実現することで、データベースのパフォーマンスを向上させます。
+ このソリューションは毎日自動的にテストされて、デプロイされます。ソリューションアーキテクトと対象分野の専門家が、実験と改善が必要な分野についてこのソリューションをレビューします。

## コスト最適化
<a name="cost-optimization"></a>

このセクションでは、このソリューションを設計する際に、[コスト最適化の柱](https://docs.aws.amazon.com/wellarchitected/latest/cost-optimization-pillar/welcome.html)の原則とベストプラクティスをどのように適用したかを説明します。
+ このソリューションはサーバーレスアーキテクチャを使用しており、ユーザーは使用した分のみを支払います。
+ コンピューティングレイヤーのデフォルトは Lambda で、従量課金制モデルを使用しています。
+ Athena データベースとクエリは、データスキャンの量を減らすように最適化されているため、コストが削減されます。

## 持続可能性
<a name="sustainability"></a>

このセクションでは、このソリューションを設計する際に、[持続可能性の柱](https://docs.aws.amazon.com/wellarchitected/latest/sustainability-pillar/sustainability-pillar.html)の原則とベストプラクティスをどのように適用したかを説明します。
+ このソリューションは、マネージドサービスとサーバーレスサービスを使用して、バックエンドサービスの環境への影響を最小限に抑えます。
+ このソリューションのサーバーレス設計は、継続的に運用されているオンプレミスサーバーのフットプリントと比較して、二酸化炭素排出量を削減することを目的としています。