コンテンツにスキップ

Kong Ingress Controller用Wallarmコネクタ

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

Kong Ingress Controller用Wallarmコネクタはin-lineモードのみサポートします:

Kong with Wallarm plugin

ユースケース

サポートされているすべてのWallarmのデプロイメントオプションの中で、このソリューションはKong API Gatewayを実行しているKong Ingress Controllerによって管理されるAPIを保護するために推奨します。

制限事項

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

要件

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

  • KubernetesクラスターにKong Ingress Controllerがデプロイされ、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アドレスにアクセス可能であること

    34.96.64.17
    34.110.183.149
    35.235.66.155
    34.102.90.100
    34.94.156.115
    35.235.115.105
    
    34.160.38.183
    34.144.227.90
    34.90.110.226
    
  • Administratorアクセスがあり、US CloudまたはEU CloudのWallarm Consoleにアクセス可能であること

デプロイメント

Kong Ingress Controllerによって管理されるAPIを保護するために、以下の手順に従ってください:

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

  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. Kong Ingress Controller用のvalues.yamlファイルを更新し、Wallarm Luaプラグインのロードを設定してください:

    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ノードサービスのアドレスを指定することで、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ノードサービスがデプロイされているnamespaceです。

  6. 選択したサービスに対してプラグインを有効にするため、IngressまたはGateway APIルートに以下の注釈を追加してください:

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

テスト

デプロイされたコネクタの機能をテストするため、以下の手順に従ってください:

  1. Wallarmポッドが正常に稼働していることを確認してください:

    kubectl -n wallarm-node get pods
    

    wallarm-nodeはWallarmノードサービスがデプロイされているnamespaceです。

    各ポッドのステータスは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サービスとして構成されます):

    export PROXY_IP=$(kubectl get svc --namespace <KONG_NS> <KONG_RELEASE_NAME>-gateway-proxy -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
    
  3. テスト用のPath Traversal攻撃を使用して、ロードバランサーにリクエストを送信してください:

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

    ノードはデフォルトでmonitoring modeで動作するため、Wallarmノードは攻撃をブロックするのではなく登録します。

  4. Wallarm Consoleの→ Attacks セクションをUS CloudまたはEU Cloudで開き、攻撃がリストに表示されていることを確認してください。

    Attacks in the interface

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

デプロイされたWallarm Luaプラグインをnewer versionにアップグレードするには:

  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 changelogを参照してください。非推奨を回避し、将来のアップグレードを簡素化するために、定期的なノードの更新を推奨します。