コンテンツにスキップ

Terraformを使用してAWSにWallarmをデプロイする

WallarmはTerraform互換環境からAWSへノードをデプロイするためのTerraformモジュールを提供しています。これらの手順を使用してモジュールを確認し、提供されているデプロイ例をお試しください。

Wallarm Terraformモジュールを実装することで、Wallarmノードのin-line(このデプロイ方法ではプロキシ)デプロイが可能になります。デプロイ方式はWallarmモジュールの変数presetで容易に制御できます。

ユースケース

サポートされているWallarmのデプロイオプションの中でも、次のユースケースではTerraformモジュールによるWallarmのデプロイを推奨します。

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

  • Infrastructure as Code(IaC)を実践している場合。WallarmのTerraformモジュールにより、AWS上のWallarmノードを自動で管理・プロビジョニングでき、効率と一貫性が向上します。

要件

  • Terraform 1.0.5以上がローカルにインストール済み

  • USまたはEUCloudのWallarm ConsoleでAdministratorロールを持つアカウントへのアクセス

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

  • 攻撃検出ルールやAPI仕様の更新をダウンロードし、また許可リスト・拒否リスト・グレーリストに登録された国・地域・データセンターの正確なIPを取得するため、以下のIPアドレスへのアクセス

    node-data0.us1.wallarm.com - 34.96.64.17
    node-data1.us1.wallarm.com - 34.110.183.149
    us1.api.wallarm.com - 35.235.66.155
    34.102.90.100
    34.94.156.115
    35.235.115.105
    
    node-data1.eu1.wallarm.com - 34.160.38.183
    node-data0.eu1.wallarm.com - 34.144.227.90
    api.wallarm.com - 34.90.110.226
    

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

Wallarm AWS Terraformモジュールの使用方法

AWS Terraformモジュールを使用して本番環境にWallarmをデプロイするには:

  1. US CloudまたはEU CloudでWallarm Consoleにサインアップします。

  2. Wallarm Console → Nodesを開き、種類がWallarm nodeのノードを作成します。

    Wallarmノードの作成

  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インスタンスタイプ(例:t3.small)。 string はい
vpc_id Wallarm EC2インスタンスをデプロイするAmazon Virtual Private CloudのID string はい
token Wallarm Console UIからコピーしたWallarmノードトークン

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

選択したプラットフォームに関係なく、1つのトークンを複数のインストールで使用できます。これにより、Wallarm Console UI内でノードインスタンスを論理的にグループ化できます。例:複数のWallarmノードを開発環境にデプロイし、各ノードが特定の開発者の所有する専用マシン上にある場合。

string はい
Wallarm固有の変数
host Wallarm APIサーバー。設定可能な値:
  • us1.api.wallarm.com(US Cloud)
  • api.wallarm.com(EU Cloud)
デフォルトはapi.wallarm.comです。
string いいえ
upstream デプロイするWallarmノードのバージョン。サポートされる最小バージョンは4.0です。

デフォルトは4.8です。
string いいえ
preset Wallarmのデプロイスキーム。設定可能:proxy(デフォルト)。 string いいえ
proxy_pass プロキシ対象のサーバープロトコルとアドレス。Wallarmノードは指定されたアドレス宛のリクエストを処理し、正当なもののみをプロキシします。プロトコルには'http'または'https'を指定できます。アドレスはドメイン名またはIPアドレス(任意でポート)を指定できます。 string はい(presetproxyの場合)
mode トラフィックフィルタリングモード。設定可能:offmonitoringsafe_blockingblock

デフォルトはmonitoringです。
string いいえ
libdetection トラフィック解析時にlibdetectionライブラリを使用するか

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

プロキシの高度なソリューションデプロイ例に設定例があります。
string いいえ
http_snippet NGINXのhttp設定ブロックに追加するカスタム設定。設定を記述したファイルをTerraformコードのディレクトリに配置し、この変数にそのパスを指定できます。

プロキシの高度なソリューションデプロイ例に設定例があります。
string いいえ
server_snippet NGINXのserver設定ブロックに追加するカスタム設定。設定を記述したファイルをTerraformコードのディレクトリに配置し、この変数にそのパスを指定できます。

プロキシの高度なソリューションデプロイ例に設定例があります。
string いいえ
post_script Wallarmノード初期化スクリプト(cloud-init.pyの実行後に実行するカスタムスクリプト。任意のスクリプトを記述したファイルをTerraformコードのディレクトリに配置し、この変数にそのパスを指定できます。

プロキシの高度なソリューションデプロイ例に設定例があります。
string いいえ
AWSデプロイ構成
app_name Wallarmモジュールが作成するAWSリソース名のプレフィックス。

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

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

デフォルトはtrueです。
bool いいえ
lb_internal Application Load Balancerを内部ロードバランサーにするかどうか。デフォルトではALBはinternet-facingタイプです。非同期アプローチで接続を処理する場合はtrueを推奨します。

デフォルトはfalseです。
bool いいえ
lb_deletion_protection 誤って削除されることを防ぐための保護をApplication Load Balancerに対して有効にするかどうか。本番デプロイではtrueを推奨します。

デフォルトはtrueです。
bool いいえ
lb_ssl_enabled クライアントとApplication Load Balancer間でSSL接続をネゴシエートするかtrueの場合、lb_ssl_policylb_certificate_arnが必須です。本番デプロイで推奨されます。

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

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

デフォルト:"0.0.0.0/0"
list(string) いいえ
extra_ports Wallarmインスタンスへのインバウンド接続を許可する内部ネットワークの追加ポートのリスト。セキュリティグループに適用されます。 list(number) いいえ
extra_public_ports Wallarmインスタンスへのインバウンド接続を許可するパブリックネットワークの追加ポートのリスト。 list(number) いいえ
extra_policies Wallarmスタックに関連付けるAWS IAMポリシー。Amazon S3からデータを取得するスクリプトをpost_script変数で実行する場合などに役立ちます。 list(string) いいえ
source_ranges AWS Application Load Balancerからのトラフィックを許可する送信元IPおよびネットワークのリスト。

デフォルト:"0.0.0.0/0"
list(string) いいえ
https_redirect_code HTTPリクエストをHTTPSへリダイレクトする際のコード。設定可能:
  • 0 - リダイレクト無効
  • 301 - 恒久的リダイレクト
  • 302 - 一時的リダイレクト
デフォルトは0です。
number いいえ
asg_enabled AWS Auto Scaling groupを作成するかどうか。

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

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

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

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

デフォルトはfalseです。
bool いいえ
autoscaling_cpu_target AWS Auto Scaling groupが維持すべき平均CPU使用率(%)。デフォルトは70.0です。 string いいえ
ami_id Wallarmインスタンスのデプロイに使用するAmazon Machine ImageのID。デフォルト(空文字列)の場合、アップストリームの最新イメージが使用されます。Wallarmノードを基にしたカスタムAMIを作成しても構いません。 string いいえ
key_name SSHでWallarmインスタンスに接続するために使用するAWSキーペア名。デフォルトではSSH接続は無効です。 string いいえ
tags Wallarmモジュールが作成するAWSリソースに付与するタグ。 map(string) いいえ

例でWallarm Terraformモジュールを試す

本番デプロイ前にWallarmモジュールの使い方を試せる例を用意しています。

WallarmとTerraformに関する補足情報

Terraformには、多数の統合(provider)と、すぐに使える構成(module)があり、多くのベンダーが公開レジストリに提供しています。

このレジストリに、Wallarmは以下を公開しています。

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

制限事項