コンテンツにスキップ

Terraformを使用したWallarmの管理

[infrastructure management]をTerraformで管理している場合、Wallarmの管理にも利用することは快適なオプションかもしれません。TerraformのWallarm providerを使用することで実現できます。

必要条件

  • 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" {
      # Configuration options
    }
    
  2. terraform initを実行します。

Wallarmアカウントへのプロバイダーの接続

Wallarm TerraformプロバイダーをUSまたはEUCloudのWallarmアカウントに接続するには、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 providerの詳細についてはこちらをご確認ください。

プロバイダーによるWallarmの管理

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

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

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

Wallarm providerのdocumentationにおいて、上記の操作方法をご確認ください。

使用例

以下は、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を実行してください。

この設定は以下のことを行います:

  • 提供されたWallarm APIトークンを使用してUS Cloud→企業アカウントに接続します。

  • resource "wallarm_global_mode" "global_block" → グローバルなfiltration modeをLocal settings (default)に設定します。これは、それぞれのノードでローカルにfiltration modeが管理されることを意味します。

  • resource "wallarm_application" "tf_app" → ID42Terraform Application 001という名前のアプリケーションを作成します。

  • resource "wallarm_rule_mode" "tiredful_api_mode" → アプリケーションID42へHTTPSプロトコルで送信されるすべてのリクエストに対して、filtration modeをMonitoringに設定するルールを作成します。

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

Terraformは多数のprovidersや、準備されたmodulesを通じて利用可能な統合をサポートしており、これらは多数のベンダーによりパブリックなregistryで提供されています。

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

  • Terraformを使用してWallarmを管理するためのWallarm provider。本記事にて説明しています。

  • Terraform互換環境からAWSへノードを展開するためのWallarm module

これらは異なる目的で使用される独立したツールであり、互いに依存するものではありません。