コンテンツにスキップ

Terraformを使用したAWS上でのWallarmの展開

WallarmはTerraform互換環境からAWS上にノードを展開するためのTerraform moduleを提供します。これらの手順を使用してモジュールを検証し、提供された展開例をお試しください。

Wallarm Terraform moduleを実装することで、2つの主要なWallarm展開オプション、in-line(この展開方法ではproxyです)およびOut‑of‑band (mirror)セキュリティソリューションを実現するソリューションを提供しています。展開オプションはpresetWallarmモジュール変数によって容易に制御できます。

ユースケース

サポートされるWallarm展開オプションの中で、Terraform moduleは以下のユースケースにおけるWallarm展開に推奨されます:

  • 既存のインフラストラクチャがAWS上にある場合

  • Infrastructure as Code (IaC)の実践を活用する場合。WallarmのTerraform moduleはAWS上のWallarmノードの自動管理とプロビジョニングを可能にし、効率性と一貫性を向上させます。

必要条件

  • ローカルにTerraform 1.0.5以上をインストールしてください

  • USまたはEUCloudのWallarm ConsoleでAdministratorroleを持つアカウントへアクセスできること

  • US Wallarm Cloudで作業する場合はhttps://us1.api.wallarm.comへ、EU Wallarm Cloudで作業する場合はhttps://api.wallarm.comへアクセスできること。ファイアウォールによってアクセスがブロックされていないかご確認ください

  • アタック検知ルールのアップデートとAPI仕様の取得、ならびにallowlisted, denylisted, or graylisted国、地域、データセンターの正確なIPを取得するため、以下のIPアドレスにアクセスできること

    34.96.64.17
    34.110.183.149
    35.235.66.155
    34.102.90.100
    34.94.156.115
    35.235.115.105
    
    34.160.38.183
    34.144.227.90
    34.90.110.226
    

このトピックでは、VPCクラスタ等のWallarm展開に必要なすべてのAWSリソースを作成する手順は含まれていません。詳細については、該当するTerraformガイドを参照してください。

Wallarm AWS Terraform Moduleの使用方法

AWS Terraform moduleを使用して本番環境向けのWallarmを展開するには、以下の手順を実行してください:

  1. US CloudまたはEU CloudでWallarm Consoleにサインアップしてください。

  2. Wallarm Console → Nodesを開き、Wallarm nodeタイプのノードを作成してください。

    Creation of a Wallarm node

  3. 生成されたノードトークンをコピーしてください。

  4. Terraform構成にwallarmモジュールコードを追加してください:

    module "wallarm" {
      source = "wallarm/wallarm/aws"
    
      instance_type = "..."
    
      vpc_id     = "..."
    
      preset     = "proxy"
      proxy_pass = "https://..."
      token      = "..."
    
      ...
    }
    
  5. wallarmモジュール構成で変数の値を設定してください:

変数 説明 必須か
instance_type Wallarm展開に使用するAmazon EC2 instance type、例:t3.small string Yes
vpc_id Wallarm EC2インスタンスを展開するAWS Virtual Private CloudのID。 string Yes
token Wallarm Console UIからコピーしたWallarm node token

複数のインストールで1つのトークンを使用する場合

選択されたplatformに関係なく、複数のインストールで1つのトークンを使用できます。これにより、Wallarm Console UI上でノードの論理的なグループ化が可能となります。例: 複数のWallarmノードを開発環境に展開し、各ノードが特定の開発者所有のマシン上に配置される場合。

string Yes
Wallarm特有の変数
host Wallarm API server。可能な値:
  • us1.api.wallarm.com(US Cloudの場合)
  • api.wallarm.com(EU Cloudの場合)
デフォルトはapi.wallarm.comです。
string No
upstream 展開するWallarm node version。最低サポートバージョンは4.0です。

デフォルトは4.8です。
string No
preset Wallarm展開スキーム。可能な値:
  • proxy
  • mirror
デフォルトはproxyです。
string No
proxy_pass プロキシ先のサーバのプロトコルとアドレス。Wallarmノードは指定されたアドレスに送信されたリクエストを処理し、正当なリクエストをプロキシします。プロトコルとしてはhttpまたはhttpsが指定できます。アドレスはドメイン名またはIPアドレス、オプションのポートを指定できます。 string Yes、presetproxyの場合
mode Traffic filtration mode。可能な値: off,monitoring,safe_blocking,block

デフォルトはmonitoringです。
string No
libdetection トラフィック分析中にlibdetectionライブラリを使用するかどうか。

デフォルトはtrueです。
bool No
global_snippet NGINXのグローバル設定に追加するカスタム設定。Terraformコードディレクトリに設定ファイルを配置し、この変数でそのファイルのパスを指定できます。

変数設定例はproxy advanced solution展開の例にあります。
string No
http_snippet NGINXのhttp設定ブロックに追加するカスタム設定。Terraformコードディレクトリに設定ファイルを配置し、この変数でそのファイルのパスを指定できます。

変数設定例はproxy advanced solution展開の例にあります。
string No
server_snippet NGINXのserver設定ブロックに追加するカスタム設定。Terraformコードディレクトリに設定ファイルを配置し、この変数でそのファイルのパスを指定できます。

変数設定例はproxy advanced solution展開の例にあります。
string No
post_script Wallarm node初期化スクリプト(cloud-init.py)実行後に実行するカスタムスクリプト。Terraformコードディレクトリに任意のスクリプトを配置し、この変数でそのファイルのパスを指定できます。

変数設定例はproxy advanced solution展開の例にあります。
string No
AWS展開構成
app_name Wallarm moduleが作成するAWSリソース名のプレフィックス。

デフォルトはwallarmです。
string No
app_name_no_template Wallarm moduleが作成するAWSリソース名に大文字、数字、特殊文字を使用するかどうか。falseの場合、リソース名は小文字のみになります。

デフォルトはfalseです。
bool No
lb_subnet_ids Application Load Balancerの展開先となるAWS Virtual Private CloudサブネットIDのリスト。推奨値はインターネットゲートウェイへのルートを持つルートテーブルに関連付けられたパブリックサブネットです。 list(string) No
instance_subnet_ids Wallarm EC2インスタンスを展開するAWS Virtual Private CloudサブネットIDのリスト。推奨値は出口専用接続用に構成されたプライベートサブネットです。 list(string) No
lb_enabled AWS Application Load Balancerを作成するかどうか。カスタムtarget groupがcustom_target_group変数で指定されない限り、この変数に渡された任意の値でターゲットグループが作成されます。

デフォルトはtrueです。
bool No
lb_internal Application Load Balancerを内部ロードバランサにするかどうか。デフォルトではALBはインターネットフェイシングタイプです。非同期の接続処理を使用する場合、推奨値はtrueです。

デフォルトはfalseです。
bool No
lb_deletion_protection Application Load Balancerの誤削除防止のための保護機能を有効にするかどうか。本番環境での展開には推奨値はtrueです。

デフォルトはtrueです。
bool No
lb_ssl_enabled クライアントとApplication Load Balancer間のSSL接続を交渉するかどうか。trueの場合、lb_ssl_policylb_certificate_arn変数が必須となります。本番環境の展開に推奨されます。

デフォルトはfalseです。
bool No
lb_ssl_policy Application Load Balancerのセキュリティポリシー string Yes、lb_ssl_enabledtrueの場合
lb_certificate_arn AWS Certificate Manager (ACM)証明書のAmazon Resource Name (ARN) string Yes、lb_ssl_enabledtrueの場合
custom_target_group Auto Scaling groupにアタッチする既存のターゲットグループの名前。デフォルトでは新しいターゲットグループが作成されアタッチされます。非デフォルトの値の場合、AWS ALBの作成は無効となります。 string No
inbound_allowed_ip_ranges Wallarmインスタンスへの着信接続を許可するソースIPおよびネットワークのリスト。AWSはパブリックサブネットから起動された場合でもロードバランサのトラフィックをマスクする点にご留意ください。

デフォルト:
  • "10.0.0.0/8",
  • "172.16.0.0/12",
  • "192.168.0.0/16"
list(string) No
outbound_allowed_ip_ranges Wallarmインスタンスからのアウトバウンド接続を許可するソースIPおよびネットワークのリスト。

デフォルトは"0.0.0.0/0"です。
list(string) No
extra_ports Wallarmインスタンスへの着信接続を許可する内部ネットワークの追加ポートのリスト。この設定はセキュリティグループに適用されます。 list(number) No
extra_public_ports Wallarmインスタンスへの着信接続を許可するパブリックネットワークの追加ポートのリスト。 list(number) No
extra_policies Wallarmスタックに関連付けるAWS IAMポリシー。Amazon S3からデータを要求するスクリプトを実行するpost_script変数と合わせて使用する際に有用です。 list(string) No
source_ranges AWS Application Load Balancerへのトラフィックを許可するソースIPおよびネットワークのリスト。

デフォルトは"0.0.0.0/0"です。
list(string) No
https_redirect_code HTTPリクエストをHTTPSにリダイレクトするためのコード。可能な値:
  • 0 - リダイレクト無効
  • 301 - 永続的リダイレクト
  • 302 - 一時的リダイレクト
デフォルトは0です。
number No
asg_enabled AWS Auto Scaling groupを作成するかどうか。

デフォルトはtrueです。
bool No
min_size 作成されるAWS Auto Scaling groupの最小インスタンス数。

デフォルトは1です。
number No
max_size 作成されるAWS Auto Scaling groupの最大インスタンス数。

デフォルトは3です。
number No
desired_capacity 作成されるAWS Auto Scaling groupの初期インスタンス数。min_size以上かつmax_size以下である必要があります。

デフォルトは1です。
number No
autoscaling_enabled Wallarmクラスターに対してAmazon EC2 Auto Scalingを有効にするかどうか。

デフォルトはfalseです。
bool No
autoscaling_cpu_target AWS Auto Scaling groupの目標とする平均CPU利用率(%)。デフォルトは70.0です。 string No
ami_id Wallarmインスタンス展開に使用するAmazon Machine ImageのID。デフォルト(空文字列)の場合、最新のupstreamイメージが使用されます。Wallarm nodeを基にしたカスタムAMIの作成も可能です。 string No
key_name WallarmインスタンスへSSH接続するために使用するAWS key pairの名前。デフォルトではSSH接続は無効です。 string No
tags Wallarm moduleが作成するAWSリソースのタグ。 map(string) No

例によるWallarm Terraform Moduleの試用

Wallarm moduleの使用方法についてさまざまな例を準備しておりますので、本番環境への展開前にお試しください:

WallarmとTerraformに関する追加情報

Terraformは多数の統合(providers)や即時利用可能な構成(modules)をサポートしており、パブリックなregistryを通じて多くのベンダーから提供されています。

このregistryにおいて、Wallarmは以下を公開しました:

  • AWS上へのノード展開を可能にするWallarm module(本記事で説明しております)。

  • WallarmをTerraformで管理するためのWallarm provider

これらは、目的が異なる独立した要素であり、互いに依存するものではありません。

制限事項