Cookie の設定を選択する

当社は、当社のサイトおよびサービスを提供するために必要な必須 Cookie および類似のツールを使用しています。当社は、パフォーマンス Cookie を使用して匿名の統計情報を収集することで、お客様が当社のサイトをどのように利用しているかを把握し、改善に役立てています。必須 Cookie は無効化できませんが、[カスタマイズ] または [拒否] をクリックしてパフォーマンス Cookie を拒否することはできます。

お客様が同意した場合、AWS および承認された第三者は、Cookie を使用して便利なサイト機能を提供したり、お客様の選択を記憶したり、関連する広告を含む関連コンテンツを表示したりします。すべての必須ではない Cookie を受け入れるか拒否するには、[受け入れる] または [拒否] をクリックしてください。より詳細な選択を行うには、[カスタマイズ] をクリックしてください。

Terraform を使用して AWS WAF ソリューションのセキュリティオートメーションをデプロイする - AWS 規範ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Terraform を使用して AWS WAF ソリューションのセキュリティオートメーションをデプロイする

作成者: Dr. Rahul Sharad Gaikwad (AWS)、Tamilselvan P (AWS)

概要

AWS WAF は、ウェブアクセスコントロールリスト (ACL) で定義してデプロイするカスタマイズ可能なルールを使用して、一般的な悪用からアプリケーションを保護するウェブアプリケーションファイアウォールです。AWS WAF ルールの設定は、特に専任のセキュリティチームを持たない組織にとっては難しい場合があります。このプロセスを簡素化するために、Amazon Web Services (AWS) は AWS WAF 向けセキュリティ自動化ソリューションを提供しています。このソリューションでは、ウェブベースの攻撃をフィルタリングする一連の AWS WAF ルールを含む単一のウェブ ACL が自動的にデプロイされます。Terraform のデプロイ時に、どの保護機能を含めるかを指定できます。このソリューションをデプロイすると、AWS WAF は既存の Amazon CloudFront ディストリビューションまたは Application Load Balancer へのウェブリクエストを検査し、ルールに一致しないリクエストをすべてブロックします。

AWS WAF 向けセキュリティオートメーションソリューションは、「Security Automations for AWS WAF Implementation Guide」の指示に従って AWS CloudFormation を使用してデプロイできます。このパターンは、HashiCorp Terraform を推奨 Infrastructure as Code (IaC) ツールとして使用してクラウドインフラストラクチャをプロビジョニングおよび管理する組織にとって、代替のデプロイオプションとなります。このソリューションをデプロイすると、Terraform は変更をクラウドに自動的に適用し、AWS WAF 設定と保護機能をデプロイして設定します。

前提条件と制限

前提条件

  • アクティブなAWS アカウント

  • インストールおよび必要な権限を設定済みの AWS コマンドラインインターフェイス (AWS CLI)。詳細については、「使用の開始 (AWS CLI ドキュメント)」を参照してください。

  • インストールおよび設定済みの Terraform。詳細については、「Terraform のインストール (Terraform ドキュメント)」を参照してください。

製品バージョン

  • AWS CLI バージョン 2.4.25 以降

  • Terraform バージョン 1.1.9 以降

アーキテクチャ

ターゲットアーキテクチャ

このパターンは、AWS WAF ソリューションのセキュリティ自動化をデプロイします。ターゲットアーキテクチャの詳細については、「Security Automations for AWS WAF Implementation Guide」の「Architecture overview」を参照してください。このデプロイの AWS Lambda 自動化、アプリケーションログパーサー、AWS WAF ログパーサー、IP リストパーサー、アクセスハンドラーの詳細については、「Security Automations for AWS WAF Implementation Guide」のコンポーネントの詳細を参照してください。

Terraform デプロイ

terraform apply を実行すると、Terraform は次のことを行います。

  1. Terraform は、.esting.tfvars ファイルからの入力に基づいて IAM ロールとLambda 関数を作成します。

  2. Terraform は、.esting.tfvars ファイルからの入力に基づいて AWS WAF ACL ルールと IP セットを作成します。

  3. Terraform は、testing.tfvars ファイルからの入力に基づいて、Amazon Simple Storage Service (Amazon S3) バケット、Amazon EventBridge ルール、AWS Glue データベーステーブル、および Amazon Athena ワークグループを作成します。

  4. テラフォームは AWS CloudFormation スタックをデプロイしてカスタムリソースをプロビジョニングします。

  5. Terraform は、test.tfvars ファイルからの指定された入力に基づいて Amazon API Gateway リソースを作成します。

自動化とスケール

このパターンを使用して、複数の AWS アカウントと AWS リージョン用の AWS WAF ルールを作成し、AWS クラウド環境全体に AWS WAF ソリューションのセキュリティ自動化をデプロイできます。

ツール

AWS サービス

  • AWS コマンドラインインターフェイス (AWS CLI)」は、オープンソースのツールであり、コマンドラインシェルのコマンドを使用して AWS サービスとやり取りすることができます。

  • AWS WAF は、保護されたウェブアプリケーションリソースに転送される HTTP と HTTPS リクエストをモニタリングできるウェブアプリケーションファイアウォールです。

その他のサービス

  • Git はオープンソースの分散型バージョン管理システムです。

  • HashiCorp Terraform は、コードを使用してクラウドインフラストラクチャとリソースをプロビジョニングおよび管理するのに役立つコマンドラインインターフェイスアプリケーションです。

コードリポジトリ

このパターンのコードは、GitHub 内の「Terraform を使用した AWS WAF オートメーション」リポジトリで利用できます。

ベストプラクティス

  • 静的ファイルは別の S3 バケットに配置してください。

  • 変数をハードコーディングすることは避けてください。

  • カスタムスクリプトの使用を制限してください。

  • 命名規則を採用してください。

エピック

タスク説明必要なスキル

Git をインストールする。

Getting started」(Git Web サイト) の指示に従って、ローカルワークステーションに Git をインストールします。

DevOps エンジニア

リポジトリをクローン作成します。

ローカルワークステーションで次のコマンドを入力し、コードリポジトリをクローンします。repo URL を含むコマンド全体をコピーするには、このパターンの「追加情報」セクションを参照してください。

git clone <repo-URL>.git
DevOps エンジニア

変数を更新してください。

  1. 次のコマンドを入力し、クローンされたディレクトリに移動します。

    cd terraform-aws-waf-automation
  2. 任意のテキストエディタで testing.tfvars ファイルを開きます。

  3. testing.tfvars ファイル内の変数の値を更新します。

  4. ファイルを保存して閉じます。

DevOps エンジニア

ローカルワークステーションをセットアップする

タスク説明必要なスキル

Git をインストールする。

Getting started」(Git Web サイト) の指示に従って、ローカルワークステーションに Git をインストールします。

DevOps エンジニア

リポジトリをクローン作成します。

ローカルワークステーションで次のコマンドを入力し、コードリポジトリをクローンします。repo URL を含むコマンド全体をコピーするには、このパターンの「追加情報」セクションを参照してください。

git clone <repo-URL>.git
DevOps エンジニア

変数を更新してください。

  1. 次のコマンドを入力し、クローンされたディレクトリに移動します。

    cd terraform-aws-waf-automation
  2. 任意のテキストエディタで testing.tfvars ファイルを開きます。

  3. testing.tfvars ファイル内の変数の値を更新します。

  4. ファイルを保存して閉じます。

DevOps エンジニア
タスク説明必要なスキル

Terraform の設定を初期化します。

次のコマンドを入力し、Terraform 設定ファイルを含む作業ディレクトリを初期化します。

terraform init
DevOps エンジニア

Terraform プランをプレビューしてください。

次のコマンドを入力します。Terraform は設定ファイルを評価して、宣言されたリソースのターゲット状態を判断します。次に、ターゲットの状態を現在の状態と比較し、プランを作成します。

terraform plan -var-file="testing.tfvars"
DevOps エンジニア

プランを検証してください。

プランを確認し、ターゲット AWS アカウントで必要なアーキテクチャが設定されていることを確認します。

DevOps エンジニア

ソリューションをデプロイします。

  1. 次のコマンドを入力してプランを適用します。

    terraform apply -var-file="testing.tfvars"
  2. yes を入力して確定します。Terraform は、構成ファイルに宣言されている目標状態を達成するために、インフラストラクチャを作成、更新、または破棄します。シーケンスの詳細については、このパターンの「アーキテクチャ」セクションにある「Terraform デプロイ」を参照してください。

DevOps エンジニア

Terraform を使用してターゲットアーキテクチャをプロビジョニングします。

タスク説明必要なスキル

Terraform の設定を初期化します。

次のコマンドを入力し、Terraform 設定ファイルを含む作業ディレクトリを初期化します。

terraform init
DevOps エンジニア

Terraform プランをプレビューしてください。

次のコマンドを入力します。Terraform は設定ファイルを評価して、宣言されたリソースのターゲット状態を判断します。次に、ターゲットの状態を現在の状態と比較し、プランを作成します。

terraform plan -var-file="testing.tfvars"
DevOps エンジニア

プランを検証してください。

プランを確認し、ターゲット AWS アカウントで必要なアーキテクチャが設定されていることを確認します。

DevOps エンジニア

ソリューションをデプロイします。

  1. 次のコマンドを入力してプランを適用します。

    terraform apply -var-file="testing.tfvars"
  2. yes を入力して確定します。Terraform は、構成ファイルに宣言されている目標状態を達成するために、インフラストラクチャを作成、更新、または破棄します。シーケンスの詳細については、このパターンの「アーキテクチャ」セクションにある「Terraform デプロイ」を参照してください。

DevOps エンジニア
タスク説明必要なスキル

変更を確認します。

  1. Terraform コンソールで、出力が期待どおりの結果であることを確認します。

  2. AWS マネジメントコンソールにサインインします。

  3. Terraform コンソールの出力が AWS アカウントに正常にデプロイされていることを確認します。

DevOps エンジニア

(オプション) インフラストラクチャをクリーンアップします。

このソリューションによって行われたすべてのリソースと設定の変更を削除するには、次の操作を行います。

  1. Terraform コンソールで、次のコマンドを入力します。

    terraform destroy -var-file="testing.tfvars”
  2. yes を入力して確定します。

DevOps エンジニア

検証とクリーンアップ

タスク説明必要なスキル

変更を確認します。

  1. Terraform コンソールで、出力が期待どおりの結果であることを確認します。

  2. AWS マネジメントコンソールにサインインします。

  3. Terraform コンソールの出力が AWS アカウントに正常にデプロイされていることを確認します。

DevOps エンジニア

(オプション) インフラストラクチャをクリーンアップします。

このソリューションによって行われたすべてのリソースと設定の変更を削除するには、次の操作を行います。

  1. Terraform コンソールで、次のコマンドを入力します。

    terraform destroy -var-file="testing.tfvars”
  2. yes を入力して確定します。

DevOps エンジニア

トラブルシューティング

問題ソリューション

WAFV2 IPSet: WAFOptimisticLockException エラー

terraform destroy コマンドの実行時にこのエラーが発生した場合は、IP セットを手動で削除する必要があります。手順については、「IP セットの削除」(AWS WAF ドキュメント) を参照してください。

関連リソース

AWS リファレンス

Terraform のリファレンス

追加情報

以下のコマンドは、このパターンの GitHub リポジトリをクローンします。

git clone https://github.com/aws-samples/aws-waf-automation-terraform-samples.git
プライバシーサイト規約Cookie の設定
© 2025, Amazon Web Services, Inc. or its affiliates.All rights reserved.