コンテンツにスキップ

Terraformを使用したWallarmの管理

インフラストラクチャの管理にTerraformを使用している場合、Wallarmの管理にもそれを使用すると便利です。Terraform向けのWallarmプロバイダーを使用すると実現できます。

要件

  • Terraformの基礎知識

  • Terraform 0.15.5以降のバイナリ

  • US CloudまたはEU CloudのWallarmアカウント

  • USまたはEUのCloudにあるWallarm ConsoleでAdministratorroleを持つアカウントへのアクセス

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

プロバイダーのインストール

  1. 次をTerraformの構成にコピー&ペーストします:

    terraform {
      required_version = ">= 0.15.5"
    
      required_providers {
        wallarm = {
          source = "wallarm/wallarm"
          version = "1.5.0"
        }
      }
    }
    
    provider "wallarm" {
      # 構成オプション
    }
    
  2. terraform initを実行します。

プロバイダーをWallarmアカウントに接続する

USまたはEU CloudのWallarmアカウントにWallarm Terraformプロバイダーを接続するには、Terraformの構成にAPIアクセス認証情報を設定します:

provider "wallarm" {
  api_token = "<WALLARM_API_TOKEN>"
  api_host = "https://us1.api.wallarm.com"
  # マルチテナンシー機能を使用する場合にのみ必要です:
  # client_id = <CLIENT_ID>
}
provider "wallarm" {
  api_token = "<WALLARM_API_TOKEN>"
  api_host = "https://api.wallarm.com"
  # マルチテナンシー機能を使用する場合にのみ必要です:
  # client_id = <CLIENT_ID>
}
  • <WALLARM_API_TOKEN>はお使いのWallarmアカウントのAPIにアクセスするためのトークンです。取得方法→

  • <CLIENT_ID>はテナント(クライアント)のIDで、マルチテナンシー機能を使用する場合にのみ必要です。こちらの説明に従ってuuidではなくidを使用してください。

詳細はWallarmプロバイダーのドキュメントを参照してください。

プロバイダーでWallarmを管理する

Wallarmプロバイダーを使用すると、Terraform経由で次の項目を管理できます:

Wallarm TerraformプロバイダーとEdgeノード

現時点では、EdgeのinlineおよびconnectorノードはWallarm Terraformプロバイダー経由で管理できません。

記載の操作方法はWallarmプロバイダーのドキュメントを参照してください。

使用例

以下はWallarm用のTerraform構成例です:

provider "wallarm" {
  api_token = "<WALLARM_API_TOKEN>"
  api_host = "https://us1.api.wallarm.com"
}

resource "wallarm_global_mode" "global_block" {
  waf_mode = "default"
}

resource "wallarm_application" "tf_app" {
  name = "Terraform Application 001"
  app_id = 42
}

resource "wallarm_rule_mode" "tiredful_api_mode" {
  mode =  "monitoring"

  action {
    point = {
      instance = 42
    }
  }

  action {
    type = "regex"
    point = {
      scheme = "https"
    }
  }
}

構成ファイルを保存し、その後terraform applyを実行します。

この構成は次の処理を行います:

  • US Cloud → 企業アカウントに、指定のWallarm APIトークンで接続します。

  • resource "wallarm_global_mode" "global_block" → グローバルフィルタリングモードをLocal settings (default)に設定します。これは各ノードでローカルにフィルタリングモードを制御することを意味します。

  • resource "wallarm_application" "tf_app" → 名前がTerraform Application 001、IDが42のアプリケーションを作成します。

  • resource "wallarm_rule_mode" "tiredful_api_mode" → IDが42のアプリケーションにHTTPSプロトコルで送信されるすべてのリクエストに対して、トラフィックのフィルタリングモードをMonitoringに設定するルールを作成します。

WallarmとTerraformに関するさらなる情報

Terraformは、多数のインテグレーション(プロバイダー)と、すぐに使用できる構成(モジュール)をサポートしており、複数のベンダーが公開レジストリに提供しています。

このレジストリには、Wallarmが次を公開しています:

これら2つは目的の異なる独立したツールです。一方を使用するためにもう一方は必要ありません。