Terraformを使用したWallarmの管理¶
[infrastructure management]をTerraformで管理している場合、Wallarmの管理にも利用することは快適なオプションかもしれません。TerraformのWallarm providerを使用することで実現できます。
必要条件¶
-
Terraformの基本知識
-
Terraform 0.15.5以上のバイナリ
-
USまたはEUのCloudにあるWallarm ConsoleでAdministratorroleのアクセス権があるアカウント
-
US Wallarm Cloudを利用している場合は
https://us1.api.wallarm.com
、EU Wallarm Cloudを利用している場合はhttps://api.wallarm.com
へのアクセス権があり、ファイアウォール等によりアクセスがブロックされていないこと
プロバイダーのインストール¶
-
次のコードをTerraformの設定ファイルにコピー&ペーストしてください:
-
terraform init
を実行します。
Wallarmアカウントへのプロバイダーの接続¶
Wallarm TerraformプロバイダーをUSまたはEUCloudのWallarmアカウントに接続するには、Terraformの設定ファイルにAPIアクセスの認証情報を設定してください:
-
<WALLARM_API_TOKEN>
はWallarmアカウントのAPIへのアクセスを可能にします。取得方法はこちら→ -
<CLIENT_ID>
はテナント(クライアント)のIDです。マルチテナンシー機能を使用する場合のみ必要で、こちらに記載のとおりuuid
ではなくid
を使用してください。
Wallarm providerの詳細についてはこちらをご確認ください。
プロバイダーによるWallarmの管理¶
Wallarmプロバイダーを使用することで、Terraform経由で以下の項目を管理できます:
-
グローバルなfiltration mode
-
Scannerの範囲
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"
→ ID42
のTerraform 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。
これらは異なる目的で使用される独立したツールであり、互いに依存するものではありません。