コンテンツにスキップ

マルチテナントノードのデプロイと設定

マルチテナントノードは、複数の独立した企業のインフラまたは分離された環境を同時に保護します。

マルチテナントノードのデプロイオプション

ご利用のインフラおよび対応したい課題に基づいて、マルチテナントノードのデプロイ方法を選択します。

  • 以下のように、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レコードを設定します。
    • 各ノードは自テナントのアドレスに正当なリクエストをプロキシします。

マルチテナントノードの特性

マルチテナントノードは次の特徴を持ちます。

  • 通常のフィルタリングノードと同じプラットフォームに、同じ手順でインストールできますが、以下は除きます。

    • MuleSoft MuleおよびFlex Gatewayのコネクタ
    • Amazon CloudFrontコネクタ
    • Cloudflareコネクタ
    • Broadcom Layer7 API Gatewayコネクタ
    • Fastlyコネクタ
    • Kong API Gatewayコネクタ
    • Istioコネクタ
  • テクニカルテナントまたはテナントレベルにインストールできます。テナントにWallarm Consoleへのアクセスを提供する場合は、フィルタリングノードを該当するテナントレベルにインストールする必要があります。

  • 通常のフィルタリングノードと同じ手順で設定できます。

  • ディレクティブwallarm_partner_client_uuidは、テナントごとにトラフィックを分割するために使用します。

  • ディレクティブwallarm_applicationは、アプリケーションごとに設定を分割するために使用します。

デプロイ要件

マルチテナントノードのデプロイに関する推奨事項

  • テナントにWallarm Consoleへのアクセスが必要な場合は、適切なテナントアカウント内にフィルタリングノードを作成します。

  • テナントのNGINX設定ファイル経由でフィルタリングノードを設定します。

マルチテナントノードをデプロイする手順

  1. Wallarm Console → Nodesで、Create nodeをクリックし、Wallarm nodeを選択します。

    既存のWallarmノードをマルチテナントモードに切り替える

    既存のWallarmノードをマルチテナントモードに切り替える場合は、Nodesセクションの該当ノードのメニューからMake it multi-tenantオプションを使用します。

    切り替えと確認が完了したら、4番目の手順に進みます。

  2. Multi-tenant nodeオプションを選択します。

    マルチテナントノードの作成

  3. ノード名を設定し、Createをクリックします。

  4. フィルタリングノードのトークンをコピーします。

  5. フィルタリングノードのデプロイ形態に応じて、該当する手順を実行します。

  6. 各テナントの一意識別子を使用してテナント間でトラフィックを分割します。

    テナントのNGINX設定ファイルを開き、ディレクティブwallarm_partner_client_uuidを使用してテナント間でトラフィックを分割します。以下の例を参照してください。

    各Ingressリソースに対してテナントUUIDを設定するには、Ingressのアノテーション nginx.ingress.kubernetes.io/wallarm-partner-client-uuidを使用します。1つのリソースは1つのテナントに対応します。

    kubectl annotate --overwrite ingress <YOUR_INGRESS_NAME> -n <YOUR_INGRESS_NAMESPACE> nginx.ingress.kubernetes.io/wallarm-partner-client-uuid=VALUE
    
    1. NGINX設定ファイルを開き、ディレクティブwallarm_partner_client_uuidを使用してテナント間でトラフィックを分割します。以下の例を参照してください。
    2. Dockerコンテナを設定ファイルをマウントして実行します。
    1. NGINX設定ファイルを開き、ディレクティブwallarm_partner_client_uuidを使用してテナント間でトラフィックを分割します。
    2. 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:8080wallarm_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へプロキシされます。
  7. 必要に応じて、ディレクティブ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: