Istio Ingress向けWallarmコネクタ¶
Wallarmは、Istioで管理されているAPIを保護し、アウトオブバンド (OOB)によりトラフィック解析を行うコネクタを提供します。WallarmノードをIstioのEnvoyプロキシと併設で展開することにより、コネクタは受信トラフィックをミラーリングし、非同期で解析用に送信すると同時に、トラフィックが中断なく流れ続けることを可能にします。
本統合は、Envoyプロキシ内に展開されたLuaプラグインに依存し、トラフィックのミラーリングおよびWallarmノードとの通信を処理します。
ユースケース¶
このソリューションは、リアルタイムのトラフィック解析が不要であり、非同期解析で十分な場合に推奨します。
サポートされているWallarmの展開オプションの中で、Kubernetes上でEnvoyプロキシを使用して実行されているIstio管理APIを保護するための最適な選択肢です。
制限事項¶
このセットアップでは、Wallarmの詳細な設定をWallarm Console UI経由でのみ行うことが可能です。ファイルベースの設定を必要とする一部のWallarm機能は、本実装ではサポートされません。例えば:
要件¶
デプロイを進める前に、次の要件を満たしていることをご確認ください。
-
Kubernetesクラスター内でAPIトラフィックを管理するEnvoyプロキシを搭載したIstio
-
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アドレスへのアクセス(攻撃検出ルールの更新ダウンロードおよびallowlisted, denylisted, or graylistedな国、地域、またはデータセンターの正確なIPの取得のため)
デプロイ¶
IstioおよびEnvoyプロキシで管理されているAPIを保護するため、以下の手順に従ってください。
-
Kubernetesクラスター内にWallarmフィルタリングノードサービスを展開します。
-
Istio内のEnvoyプロキシを設定し、トラフィックをミラーリングしてWallarmノードにアウトオブバンド解析用として送信します。
1. Wallarm Nativeノードの展開¶
Kubernetesクラスター内にWallarmノードを別サービスとして展開するには、手順に従ってください。
2. Envoyを設定してWallarmノードへトラフィックをミラーリング¶
-
support@wallarm.comに連絡して、Istio用のWallarm Luaプラグインコードを入手してください。サポートチームから提供されたファイル名は、以下の手順で使用します。
-
Luaスクリプトを使用して、WallarmノードへトラフィックをミラーリングするためのEnvoyフィルターおよびクラスタ構成を適用します:
-
Istio Ingressコントローラの名前空間内にWallarmコネクタとそのLua依存性をマウントするためのConfigMapを作成します:
-
ConfigMapをマウントするため、Istio Ingress Gatewayのデプロイメントを更新します。Istioの管理方法(Helm、IstioOperator、またはカスタムデプロイメント)に応じて、適切に変更を適用してください。
たとえば、IstioがIstioOperatorを使用してインストールされている場合は、
IstioOperator
リソースを更新することでConfigMapをマウントできます:apiVersion: install.istio.io/v1alpha1 kind: IstioOperator spec: components: ingressGateways: - name: istio-ingressgateway enabled: true k8s: volumes: - name: lua-mpack configMap: name: lua-msgpack-lib - name: lua-rrasync configMap: name: rr-async-packed volumeMounts: - name: lua-mpack mountPath: /usr/local/share/lua/5.1/msgpack container: istio-proxy - name: lua-rrasync mountPath: /usr/local/share/lua/5.1/rrasync container: istio-proxy
テスト¶
展開されたコネクタの機能をテストするには、以下の手順に従ってください。
-
Wallarmポッドが正常に稼働していることをご確認ください:
wallarm-node
はWallarmノードサービスが展開されている名前空間です。各ポッドの状態はSTATUS: RunningまたはREADY: N/Nである必要があります。例:
-
Istio Gatewayに対してテスト用のパストラバーサル攻撃リクエストを送信します:
-
Wallarm ConsoleのAttacksセクションをUS CloudまたはEU Cloudで開き、攻撃が一覧に表示されていることをご確認ください。
コネクタはアウトオブバンドモードで動作し、悪意のあるリクエストをブロックしないため、Wallarmノードは攻撃をブロックせず登録するのみです。
-
必要に応じて、別のコンソールウィンドウでWallarmログを監視してください:
Wallarm Luaプラグインのアップグレード¶
展開されたWallarm Luaプラグインを新しいバージョンにアップグレードするには:
-
support@wallarm.comに連絡して、Istio Ingress用の更新されたWallarm Luaプラグインコードを入手してください。
-
Step 2に記載されている手順に従い、更新されたプラグインを展開してください。
プラグインのアップグレードは、特にメジャーバージョンの更新の場合、Wallarmノードのアップグレードが必要になることがあります。リリースの更新やアップグレード手順については、Wallarm Native Nodeの変更履歴を参照してください。非推奨を回避し、将来のアップグレードを簡素化するために、定期的なノードの更新を推奨します。