コンテンツにスキップ

DockerイメージからNative Nodeをデプロイする

NGINXに依存せずに動作するWallarm Native Nodeは、一部のコネクタと組み合わせてのデプロイを想定して設計されています。公式DockerイメージからNative Nodeを起動し、コンテナ化されたサービス上で実行できます。

ユースケース

Native Node用のDockerイメージは、AWS ECSなどのコンテナオーケストレーションプラットフォームや、その他のDockerベース環境をすでに利用している場合に最適です。Wallarmノードはサービス内でDockerコンテナとして実行され、API管理プラットフォーム向けのセキュリティフィルタリングとトラフィック検査を提供します。

要件

  • ホストシステムにDockerがインストールされていること

  • API管理プラットフォームからコンテナ化環境へのインバウンドアクセス

  • コンテナ化環境から以下へのアウトバウンドアクセス:

    • デプロイに必要なDockerイメージをダウンロードするためのhttps://hub.docker.com/r/wallarm
    • US/EUのWallarm Cloud向けのhttps://us1.api.wallarm.comまたはhttps://api.wallarm.com
    • 攻撃検知ルールやAPI specificationsの更新ダウンロード、さらにallowlisted, denylisted, or graylistedの国・地域・データセンターに対する正確な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
      
  • Native Nodeを実行するECSインスタンスの前段にあるロードバランサーには、信頼できるSSL/TLS証明書が必要です

  • 併せて、Wallarm ConsoleでAdministratorロールが付与されている必要があります

制限事項

デプロイ

1. Dockerイメージを取得します

docker pull wallarm/node-native-aio:0.17.1

2. 設定ファイルを準備します

Native Node用の最小構成でwallarm-node-conf.yamlファイルを作成します:

version: 4

mode: connector-server

connector:
  address: ":5050"
version: 4

mode: envoy-external-filter

envoy_external_filter:
  address: ":5080"
  tls_cert: "/path/to/cert.crt"
  tls_key: "/path/to/cert.key"

すべての設定パラメータ(DockerイメージとNative Nodeのall-in-oneインストーラーで同一です)

3. Wallarmトークンを準備します

ノードをインストールするには、Wallarm Cloudにノードを登録するためのトークンが必要です。トークンの準備手順:

  1. Wallarm Console → SettingsAPI tokensUS CloudまたはEU Cloud)を開きます。

  2. 使用タイプがNode deployment/DeploymentのAPIトークンを探すか作成します。

  3. このトークンをコピーします。

4. Dockerコンテナを起動します

Dockerイメージを実行するには、次のコマンドを使用します。wallarm-node-conf.yamlファイルをコンテナにマウントします。

docker run -d -e WALLARM_API_TOKEN='XXXXXXX' -e WALLARM_LABELS='group=<GROUP>' -e WALLARM_API_HOST='us1.api.wallarm.com' -v ./wallarm-node-conf.yaml:/opt/wallarm/etc/wallarm/go-node.yaml -p 80:5050 wallarm/node-native-aio:0.17.1
docker run -d -e WALLARM_API_TOKEN='XXXXXXX' -e WALLARM_LABELS='group=<GROUP>' -e WALLARM_API_HOST='api.wallarm.com' -v ./wallarm-node-conf.yaml:/opt/wallarm/etc/wallarm/go-node.yaml -p 80:5050 wallarm/node-native-aio:0.17.1
環境変数 説明 必須
WALLARM_API_TOKEN 使用タイプがNode deployment/DeploymentのAPIトークンです。 はい
WALLARM_LABELS ノードインスタンスをグループ化するためのgroupラベルを設定します。例:
WALLARM_LABELS="group=<GROUP>"はノードインスタンスを<GROUP>インスタンスグループ(既存。存在しない場合は作成されます)に配置します。
はい
WALLARM_API_HOST Wallarm APIサーバー:
  • US Cloudの場合はus1.api.wallarm.com
  • EU Cloudの場合はapi.wallarm.com
デフォルト: api.wallarm.com
はい
WALLARM_APID_ONLY(0.12.1以降) このモードでは、トラフィックで検知された攻撃は(有効化されていれば)ノードがローカルでブロックしますが、Wallarm Cloudへはエクスポートされません。一方で、API Discoveryや一部のその他機能は完全に動作し、APIインベントリを検出して可視化のためにCloudへアップロードします。このモードは、まずAPIインベントリを確認して機微データを特定し、そのうえで攻撃データのエクスポートを計画的に実施したい場合に適しています。ただし、Wallarmは攻撃データを安全に処理し、必要に応じて機微な攻撃データのマスキングも提供するため、攻撃データのエクスポートを無効化するケースは稀です。詳細
デフォルト: false
いいえ
  • -pオプションはホストとコンテナのポートをマッピングします:

    • 最初の値(80)は外部トラフィックに公開されるホスト側のポートです。
    • 2つ目の値(5050)はコンテナ側のポートで、wallarm-node-conf.yaml内のconnector.addressまたはenvoy_external_filter.addressの設定と一致させる必要があります。
  • 設定ファイルはコンテナ内で/opt/wallarm/etc/wallarm/go-node.yamlとしてマウントする必要があります。

5. API管理サービスにWallarmコードを適用します

ノードをデプロイしたら、トラフィックをデプロイ済みノードへルーティングするため、WallarmコードをAPI管理プラットフォームまたはサービスに適用します。

  1. sales@wallarm.comに連絡し、コネクタ用のWallarmコードバンドルを入手します。

  2. プラットフォーム別の手順に従って、API管理プラットフォームにバンドルを適用します:

ノード動作の検証

ノードがトラフィックを検知していることを確認するには、ログを確認できます:

  • Native Nodeのログはデフォルトで/opt/wallarm/var/log/wallarm/go-node.logに書き込まれ、追加の出力はstdoutにも出力されます。

  • データがWallarm Cloudへ送信されたか、検知した攻撃など、フィルタリングノードの標準ログ/opt/wallarm/var/log/wallarmディレクトリにあります。

  • 追加のデバッグには、log.levelパラメータをdebugに設定します。

http://<NODE_IP>:9000/metrics.で公開されるPrometheusメトリクスを確認して、ノードの動作を検証することもできます。

アップグレード

ノードのアップグレードは手順に従います。