コンテンツにスキップ

Kong Ingress Controller向けWallarmコネクタ

Kong Ingress Controllerが管理するAPIを保護するために、WallarmはKubernetes環境へシームレスに統合できるコネクタを提供します。Wallarmフィルタリングノードをデプロイし、カスタムLuaプラグインでKongに接続すると、受信トラフィックがリアルタイムで解析され、サービスに到達する前にWallarmが悪意のあるリクエストを軽減できます。

Kong Ingress Controller向けWallarmコネクタがサポートするモードはインラインのみです。

Wallarmプラグインを使用したKong

ユースケース

このソリューションは、Kong API Gatewayを実行するKong Ingress Controllerが管理するAPIの保護に推奨される構成です。

制限事項

このセットアップでは、Wallarmの詳細な調整はWallarm ConsoleのUI経由でのみ可能です。ファイルベースの設定を必要とする一部のWallarm機能は本実装ではサポートされません。例:

要件

デプロイを進める前に、次の要件を満たしていることを確認してください。

  • Kong Ingress Controllerがデプロイされ、KubernetesクラスターでAPIトラフィックを管理していること

  • Helm v3パッケージマネージャー

  • https://us1.api.wallarm.com(US Wallarm Cloud)またはhttps://api.wallarm.com(EU Wallarm Cloud)へのアクセス

  • Wallarm Helmチャートを追加するためのhttps://charts.wallarm.comへのアクセス

  • Docker Hub上のWallarmリポジトリhttps://hub.docker.com/r/wallarmへのアクセス

  • 攻撃検知ルールの更新をダウンロードし、さらに許可リスト、拒否リスト、グレーリストに登録した国・地域・データセンターの正確な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
    
  • US CloudまたはEU CloudのWallarm ConsoleへのAdministratorアクセス

  • Nodeインスタンスのドメインには信頼できるSSL/TLS証明書が必要です。自己署名証明書はサポートされていません。

デプロイ

Kong Ingress Controllerが管理するAPIを保護するには、次の手順に従ってください。

  1. WallarmフィルタリングノードをKubernetesクラスターにデプロイします。

  2. Kong Ingress ControllerからWallarmフィルタリングノードへ受信トラフィックをルーティングして解析させるため、Wallarm Luaプラグインを入手してデプロイします。

1. Wallarm Native Nodeをデプロイする

WallarmノードをKubernetesクラスター内の独立したサービスとしてデプロイするには、手順に従ってください。

2. Wallarm Luaプラグインを入手してデプロイする

  1. Kong Ingress Controller用のWallarm Luaプラグインのコードを入手するため、support@wallarm.comへご連絡ください。

  2. プラグインコードでConfigMapを作成します:

    kubectl apply -f wallarm-kong-lua.yaml -n <KONG_NS>
    

    <KONG_NS>はKong Ingress ControllerがデプロイされているNamespaceです。

  3. Wallarm Luaプラグインを読み込むように、Kong Ingress Controllerのvalues.yamlを更新します:

    gateway:
      plugins:
        configMaps:
        - name: kong-lua
          pluginName: kong-lua
    
  4. Kong Ingress Controllerを更新します:

    helm upgrade --install <KONG_RELEASE_NAME> kong/ingress -n <KONG_NS> --values values.yaml
    
  5. KongClusterPluginリソースを作成し、WallarmノードのServiceアドレスを指定して、Wallarm Luaプラグインを有効化します:

    echo '
    apiVersion: configuration.konghq.com/v1
    kind: KongClusterPlugin
    metadata:
      name: kong-lua
      annotations:
        kubernetes.io/ingress.class: kong
    config:
      wallarm_node_address: "http://native-processing.wallarm-node.svc.cluster.local:5000"
    plugin: kong-lua
    ' | kubectl apply -f -
    

    wallarm-nodeはWallarmノードのServiceがデプロイされているNamespaceです。

  6. 対象サービスでプラグインを有効化するため、IngressまたはGateway APIのルートに次のアノテーションを追加します:

    konghq.com/plugins: kong-lua
    kubernetes.io/ingress.class: kong
    

テスト

デプロイしたコネクタの動作をテストするには、次の手順に従ってください。

  1. WallarmのPodが起動していることを確認します:

    kubectl -n wallarm-node get pods
    

    wallarm-nodeはWallarmノードのServiceがデプロイされているNamespaceです。

    各Podのステータスは「STATUS: Running」または「READY: N/N」になっている必要があります。例:

    NAME                                READY   STATUS    RESTARTS   AGE
    native-aggregation-5fb5d5444b-6c8n8   3/3     Running   0          51m
    native-processing-7c487bbdc6-4j6mz    3/3     Running   0          51m
    
  2. Kong GatewayのIPを取得します(通常はLoadBalancer Serviceとして構成されています):

    export PROXY_IP=$(kubectl get svc --namespace <KONG_NS> <KONG_RELEASE_NAME>-gateway-proxy -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
    
  3. テスト用パストラバーサル攻撃のリクエストをバランサーへ送信します:

    curl -H "Host: kong-lua-test.wallarm" $PROXY_IP/etc/passwd
    

    デフォルトではノードは監視モードで動作しているため、Wallarmノードは攻撃をブロックせず、記録します。

  4. Wallarm Console → US CloudまたはEU CloudAttacksセクションを開き、攻撃が一覧に表示されていることを確認します。

    インターフェースのAttacks

Wallarm Luaプラグインのアップグレード

デプロイ済みのWallarm Luaプラグインを新しいバージョンにアップグレードするには:

  1. Kong Ingress Controller用の最新のWallarm Luaプラグインコードを入手するため、support@wallarm.comへご連絡ください。

  2. プラグインコードでConfigMapを更新します:

    kubectl apply -f wallarm-kong-lua.yaml -n <KONG_NS>
    

    <KONG_NS>はKong Ingress ControllerがデプロイされているNamespaceです。

プラグインのアップグレードでは、特にメジャーバージョン更新時に、Wallarmノードのアップグレードが必要になる場合があります。リリース情報とアップグレード手順は、Wallarm Native Nodeの変更履歴を参照してください。将来のアップグレードを容易にし、非推奨による問題を避けるため、ノードを定期的に更新することを推奨します。