マルチテナントノードのデプロイおよび設定¶
multi-tenantノードは、複数の独立した企業インフラまたは分離された環境を同時に保護します。
マルチテナントノードのデプロイオプション¶
インフラおよび解決する問題に基づき、マルチテナントノードのデプロイオプションを選択してください。
-
以下のように、全クライアントまたは隔離環境のトラフィックをフィルタリングするために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ノードは、Envoyインストールの場合、テナントの一意の識別子(
wallarm_partner_client_uuid
または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ノードをデプロイします:
- 各テナント(Tenant 1、Tenant 2)のトラフィックをフィルタリングする複数のWallarmノード。
- ドメイン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コネクタ
- Amazon CloudFrontコネクタ
- Cloudflareコネクタ
- Broadcom Layer7 API Gatewayコネクタ
- Fastlyコネクタ
- Kong API Gatewayコネクタ
- Istioコネクタ
-
technical tenantまたはtenantレベルにインストールできます。テナントにWallarm Consoleへのアクセスを提供する場合、そのフィルタリングノードは該当するテナントレベルにインストールする必要があります。
-
通常のフィルタリングノードと同じ手順で設定が可能です。
-
ディレクティブ
wallarm_partner_client_uuid
は、テナント毎にトラフィックを分割するために使用されます。 -
ディレクティブ
wallarm_application
は、アプリケーション毎に設定を分割するために使用されます。
デプロイ要件¶
-
ユーザーがtechnical tenant accountに追加された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のannotationで
nginx.ingress.kubernetes.io/wallarm-partner-client-uuid
を使用します。1つのリソースは1つのテナントに関連しています:- NGINX設定ファイルを開き、
wallarm_partner_client_uuid
ディレクティブを使用して各テナント間のトラフィックを分割します。以下の例をご確認ください。 - Dockerコンテナを実行します設定ファイルのマウント.
envoy.yaml
設定ファイルを開き、partner_client_uuid
パラメーターを使用して各テナント間のトラフィックを分割します。- Dockerコンテナを実行します準備済み
envoy.yaml
のマウント.
- NGINX設定ファイルを開き、
wallarm_partner_client_uuid
ディレクティブを使用して各テナント間のトラフィックを分割します。 - NGINX設定ファイルをWallarmサイドカーコンテナにマウントします。
以下は、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:
-
[Configuration of the filtration mode][waf-mode-instr]
-
[Logging Wallarm node variables][logging-instr]
-
[Using the balancer of the proxy server behind the filtering node][proxy-balancer-instr]
-
[Limiting the single request processing time in the directive
wallarm_process_time_limit
][process-time-limit-instr] -
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
-
[Configuring dynamic DNS resolution in NGINX][dynamic-dns-resolution-nginx]