Terraformを使用したAWS上でのWallarmの展開¶
WallarmはTerraform互換環境からAWS上にノードを展開するためのTerraform moduleを提供します。これらの手順を使用してモジュールを検証し、提供された展開例をお試しください。
Wallarm Terraform moduleを実装することで、2つの主要なWallarm展開オプション、in-line(この展開方法ではproxyです)およびOut‑of‑band (mirror)セキュリティソリューションを実現するソリューションを提供しています。展開オプションはpreset
Wallarmモジュール変数によって容易に制御できます。
ユースケース¶
サポートされる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アドレスにアクセスできること
このトピックでは、VPCクラスタ等のWallarm展開に必要なすべてのAWSリソースを作成する手順は含まれていません。詳細については、該当するTerraformガイドを参照してください。
Wallarm AWS Terraform Moduleの使用方法¶
AWS Terraform moduleを使用して本番環境向けのWallarmを展開するには、以下の手順を実行してください:
-
Wallarm Console → Nodesを開き、Wallarm nodeタイプのノードを作成してください。
-
生成されたノードトークンをコピーしてください。
-
Terraform構成に
wallarm
モジュールコードを追加してください: -
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。可能な値:
api.wallarm.com です。 | string | No |
upstream | 展開するWallarm node version。最低サポートバージョンは4.0 です。デフォルトは 4.8 です。 | string | No |
preset | Wallarm展開スキーム。可能な値:
proxy です。 | string | No |
proxy_pass | プロキシ先のサーバのプロトコルとアドレス。Wallarmノードは指定されたアドレスに送信されたリクエストを処理し、正当なリクエストをプロキシします。プロトコルとしてはhttp またはhttps が指定できます。アドレスはドメイン名またはIPアドレス、オプションのポートを指定できます。 | string | Yes、preset がproxy の場合 |
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_policy とlb_certificate_arn 変数が必須となります。本番環境の展開に推奨されます。デフォルトは false です。 | bool | No |
lb_ssl_policy | Application Load Balancerのセキュリティポリシー。 | string | Yes、lb_ssl_enabled がtrue の場合 |
lb_certificate_arn | AWS Certificate Manager (ACM)証明書のAmazon Resource Name (ARN)。 | string | Yes、lb_ssl_enabled がtrue の場合 |
custom_target_group | Auto Scaling groupにアタッチする既存のターゲットグループの名前。デフォルトでは新しいターゲットグループが作成されアタッチされます。非デフォルトの値の場合、AWS ALBの作成は無効となります。 | string | No |
inbound_allowed_ip_ranges | Wallarmインスタンスへの着信接続を許可するソースIPおよびネットワークのリスト。AWSはパブリックサブネットから起動された場合でもロードバランサのトラフィックをマスクする点にご留意ください。 デフォルト:
| 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 です。 | 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。
これらは、目的が異なる独立した要素であり、互いに依存するものではありません。
制限事項¶
- Credential stuffing detectionは現在サポートされていません