マルチテナントノードのデプロイと設定¶
マルチテナントノードは、複数の独立した企業のインフラまたは分離された環境を同時に保護します。
マルチテナントノードのデプロイオプション¶
ご利用のインフラおよび対応したい課題に基づいて、マルチテナントノードのデプロイ方法を選択します。
-
以下のように、1つのWallarmノードで全クライアントまたは分離環境のトラフィックをフィルタリングします。
-
1つのWallarmノードが複数テナント(Tenant 1、Tenant 2)のトラフィックを処理します。
The term "partner client"
Previously, "tenant" was referred to as "partner client". We further use the term "tenant".
-
Wallarmノードは、テナントの一意識別子(
wallarm_partner_client_uuid
)により、トラフィックの受信先テナントを識別します。 - ドメイン
https://tenant1.com
およびhttps://tenant2.com
に対し、パートナーまたはクライアントのIPアドレス225.130.128.241
を指すDNS Aレコードを設定します。これは一例であり、パートナー側およびテナント側で別の設定を使用できます。 - パートナー側では、正当なリクエストをTenant 1のアドレス(
http://upstream1:8080
)およびTenant 2のアドレス(http://upstream2:8080
)へプロキシするように設定します。これも一例であり、パートナー側およびテナント側で別の設定を使用できます。
-
-
以下のように、各テナント専用にトラフィックをフィルタリングする複数のWallarmノードをデプロイします。
- 特定のテナントごとにトラフィックをフィルタリングする複数のWallarmノード(Tenant 1、Tenant 2)があります。
- ドメインhttps://tenant1.comには、クライアントIPアドレス225.130.128.241を指すDNSレコードを設定します。
- ドメインhttps://tenant2.comには、クライアントIPアドレス225.130.128.242を指すDNSレコードを設定します。
- 各ノードは自テナントのアドレスに正当なリクエストをプロキシします。
- ノード1はTenant 1へ(http://upstream1:8080)プロキシします。
- ノード2はTenant 2へ(http://upstream2:8080)プロキシします。
マルチテナントノードの特性¶
マルチテナントノードは次の特徴を持ちます。
-
通常のフィルタリングノードと同じプラットフォームに、同じ手順でインストールできますが、以下は除きます。
- MuleSoft MuleおよびFlex Gatewayのコネクタ
- Amazon CloudFrontコネクタ
- Cloudflareコネクタ
- Broadcom Layer7 API Gatewayコネクタ
- Fastlyコネクタ
- Kong API Gatewayコネクタ
- Istioコネクタ
-
テクニカルテナントまたはテナントレベルにインストールできます。テナントにWallarm Consoleへのアクセスを提供する場合は、フィルタリングノードを該当するテナントレベルにインストールする必要があります。
-
通常のフィルタリングノードと同じ手順で設定できます。
-
ディレクティブ
wallarm_partner_client_uuid
は、テナントごとにトラフィックを分割するために使用します。 -
ディレクティブ
wallarm_application
は、アプリケーションごとに設定を分割するために使用します。
デプロイ要件¶
-
テナントアカウントの設定が完了していること
-
テクニカルテナントアカウント配下でGlobal administratorロールが付与されたユーザーが以降のコマンドを実行すること
-
フィルタリングノードインストール対象のサポートプラットフォームが用意されていること
マルチテナントノードのデプロイに関する推奨事項¶
-
テナントにWallarm Consoleへのアクセスが必要な場合は、適切なテナントアカウント内にフィルタリングノードを作成します。
-
テナントのNGINX設定ファイル経由でフィルタリングノードを設定します。
マルチテナントノードをデプロイする手順¶
-
Wallarm Console → Nodesで、Create nodeをクリックし、Wallarm nodeを選択します。
既存のWallarmノードをマルチテナントモードに切り替える
既存のWallarmノードをマルチテナントモードに切り替える場合は、Nodesセクションの該当ノードのメニューからMake it multi-tenantオプションを使用します。
切り替えと確認が完了したら、4番目の手順に進みます。
-
Multi-tenant nodeオプションを選択します。
-
ノード名を設定し、Createをクリックします。
-
フィルタリングノードのトークンをコピーします。
-
フィルタリングノードのデプロイ形態に応じて、該当する手順を実行します。
-
各テナントの一意識別子を使用してテナント間でトラフィックを分割します。
テナントのNGINX設定ファイルを開き、ディレクティブ
wallarm_partner_client_uuid
を使用してテナント間でトラフィックを分割します。以下の例を参照してください。各Ingressリソースに対してテナントUUIDを設定するには、Ingressのアノテーション
nginx.ingress.kubernetes.io/wallarm-partner-client-uuid
を使用します。1つのリソースは1つのテナントに対応します。- NGINX設定ファイルを開き、ディレクティブ
wallarm_partner_client_uuid
を使用してテナント間でトラフィックを分割します。以下の例を参照してください。 - Dockerコンテナを設定ファイルをマウントして実行します。
- NGINX設定ファイルを開き、ディレクティブ
wallarm_partner_client_uuid
を使用してテナント間でトラフィックを分割します。 - NGINX設定ファイルをWallarm sidecarコンテナにマウントします。
2つのクライアントのトラフィックを処理するフィルタリングノード向けNGINX設定ファイルの例:
server { listen 80; server_name tenant1.com; wallarm_mode block; wallarm_partner_client_uuid 11111111-1111-1111-1111-111111111111; location / { proxy_pass http://upstream1:8080; } } server { listen 80; server_name tenant2.com; wallarm_mode monitoring; wallarm_partner_client_uuid 22222222-2222-2222-2222-222222222222; location / { proxy_pass http://upstream2:8080; } }
- テナント側では、パートナーIPアドレスを指すDNS Aレコードを設定します。
- パートナー側では、テナントのアドレス(
wallarm_partner_client_uuid 11111111-1111-1111-1111-111111111111
のテナントはhttp://upstream1:8080
、wallarm_partner_client_uuid 22222222-2222-2222-2222-222222222222
のテナントはhttp://upstream2:8080
)にリクエストをプロキシするように設定します。 - すべての受信リクエストはパートナーのアドレスで処理され、正当なリクエストは
wallarm_partner_client_uuid 11111111-1111-1111-1111-111111111111
のテナントにはhttp://upstream1:8080
へ、wallarm_partner_client_uuid 22222222-2222-2222-2222-222222222222
のテナントにはhttp://upstream2:8080
へプロキシされます。
- NGINX設定ファイルを開き、ディレクティブ
-
必要に応じて、ディレクティブ
wallarm_application
を使用してテナントのアプリケーションIDを指定します。例:
server { listen 80; server_name tenant1.com; wallarm_mode block; wallarm_partner_client_uuid 11111111-1111-1111-1111-111111111111; location / { proxy_pass http://upstream1:8080; } location /login { wallarm_application 21; ... } location /users { wallarm_application 22; ... } }
テナント
11111111-1111-1111-1111-111111111111
には次の2つのアプリケーションが属します。tenant1.com/login
はアプリケーション21
ですtenant1.com/users
はアプリケーション22
です
マルチテナントノードの設定¶
フィルタリングノードの設定をカスタマイズするには、利用可能なディレクティブを使用します。
Common customization options:
-
Using the balancer of the proxy server behind the filtering node
-
Limiting the single request processing time in the directive
wallarm_process_time_limit
-
Limiting the server reply waiting time in the NGINX directive
proxy_read_timeout
-
Limiting the maximum request size in the NGINX directive
client_max_body_size