Kubernetes Envoy Gateway
- English
- 日本語
Next-Gen WAF エージェントは、拡張可能な外部処理サービスとして Envoy Gateway と統合します。これにより、ゲートウェイのリクエストおよびレスポンス処理パイプライン内でリアルタイムのトラフィック検査とセキュリティの保護が可能になります。
前提条件
ワークスペース用のエージェントキーをコピーしてください。デプロイの設定を行う際に必要になります。
Next-Gen WAF Service 拡張機能の仕組み
Envoy Gateway API は Gateway API 拡張機能のセットを使用しており、これにより Envoy プロキシを利用できます。EnvoyExtensionPolicy という CRD を使って外部処理を設定することができます。
GRPC 外部処理サービス
このセクションでは、Envoy Gateway のサンプルアプリ向けに Next-Gen WAF エージェントをデプロイします。
Envoy Gateway の前提条件に関する手順に従って、Gateway API CRD、Envoy Gateway、およびサンプルアプリをインストールしてください。
外部処理サービスとして使用される Next-Gen WAF エージェント用の Kubernetes デプロイを作成します。
注 :
readinessProbeと SIGSCI_ENVOY_GRPC_ADDRESS のポートは一致している必要があります。---apiVersion: apps/v1kind: Deploymentmetadata:name: ngwaf-agentspec:replicas: 2selector:matchLabels:app: ngwaf-agenttemplate:metadata:labels:app: ngwaf-agentspec:containers:- name: ngwaf-agent-containerimage: signalsciences/sigsci-agent:latestimagePullPolicy: Neverports:- containerPort: 9999env:- name: SIGSCI_ACCESSKEYIDvalueFrom:secretKeyRef:name: ngwaf-agent-keyskey: your-access-key-id- name: SIGSCI_SECRETACCESSKEYvalueFrom:secretKeyRef:name: ngwaf-agent-keyskey: your-secret-access-key- name: SIGSCI_ENVOY_EXTPROC_ENABLEDvalue: "true"- name: SIGSCI_ENVOY_GRPC_ADDRESSvalue: "0.0.0.0:9999"- name: SIGSCI_SERVER_FLAVORvalue: "envoy-gateway"readinessProbe:grpc:port: 9999---apiVersion: v1kind: Servicemetadata:name: ngwaf-agentspec:selector:app: ngwaf-agentports:- protocol: TCPport: 9999targetPort: 9999エージェントのシークレット認証情報を作成します。
kubectl create secret generic ngwaf-agent-keys \--from-literal=your-access-key-id=YOUR_ACCESS_KEY_ID \--from-literal=your-secret-access-key=YOUR_SECRET_ACCESS_KEY/mywaf パス上のトラフィックをバックエンドサービスにルーティングするための新しい HTTPRoute リソースを作成します。さらに、Next-Gen WAF エージェントが検査するデータ量を制限するために、リクエストバッファ制限を設定します。
---apiVersion: gateway.envoyproxy.io/v1alpha1kind: BackendTrafficPolicymetadata:name: request-buffer-limitspec:targetRefs:- group: gateway.networking.k8s.iokind: HTTPRoutename: mywafrequestBuffer: # Maximum request body buffered and sent to the ngwaf-agentlimit: 1Mi # Supports SI units (e.g., 4Ki, 1Mi)---apiVersion: gateway.networking.k8s.io/v1kind: HTTPRoutemetadata:name: mywafspec:parentRefs:- name: eghostnames:- "www.example.com"rules:- matches:- path:type: PathPrefixvalue: /mywafbackendRefs:- name: backendport: 3000外部処理サービスを設定するために、新しい EnvoyExtensionPolicy リソースを作成します。この EnvoyExtensionPolicy は、前のステップで作成された HTTPRoute
mywafを対象としています。処理のために、ポート 9999 で GRPC 外部処理サービスngwaf-agentを呼び出します。注:
processingMode構造体は、外部プロセッサに送信する内容を定義するために使用されます。リクエストに関しては、Next-Gen WAF エージェントはバッファリングされたメッセージボディのみをサポートします。このモードでは、メッセージ本文をメモリにバッファリングし、本文全体を一度に送信します。ボディが設定済みバッファ制限を超えると、制限を超えるリクエストは HTTP「413 Payload Too Large」で失敗します。
---apiVersion: gateway.envoyproxy.io/v1alpha1kind: EnvoyExtensionPolicymetadata:name: ngwaf-agent-policyspec:targetRefs:- group: gateway.networking.k8s.iokind: HTTPRoutename: mywafextProc:- backendRefs:- name: ngwaf-agentport: 9999processingMode:request:body: Bufferedattributes:- connection.tls_version- request.host- request.path- request.scheme- source.addressresponse: {}failOpen: truemessageTimeout: 250ms作成した HTTPRoute を介してバックエンドサービスにリクエストを送信し、設定をテストします。以下はリクエストとレスポンスのサンプルです。
ngwaf-agent がリクエストにシグナルを追加したことが確認できるはずです。
curl -v -H "Host: www.example.com" -H "Content-Type: text/plain" "http://${GATEWAY_HOST}/mywaf?cmd.exe=../../../etc/passwd" -d "{\"payload\": \"traversal\"}"* Trying 172.19.0.3:80...* Connected to 172.19.0.3 (172.19.0.3) port 80> POST /mywaf?cmd.exe=../../../etc/passwd HTTP/1.1> Host: www.example.com> User-Agent: curl/8.5.0> Accept: */*> Content-Type: text/plain> Content-Length: 24>< HTTP/1.1 200 OK< content-type: application/json< x-content-type-options: nosniff< date: Thu, 14 May 2026 06:14:35 GMT< content-length: 632< x-sigsci-tags: TRAVERSAL,SUSPECTED-BAD-BOT< x-sigsci-request-id: 6a05684b826b7576ad8e98ab<{"path": "/mywaf?cmd.exe=../../../etc/passwd","host": "www.example.com","method": "POST","proto": "HTTP/1.1","headers": {"Accept": "*/*","Content-Length": "24","Content-Type": "text/plain","Host": "www.example.com","User-Agent": "curl/8.5.0","X-Sigsci-Request-Id": "6a05684deadbeef76ad8e98ab","X-Sigsci-Tags": "TRAVERSAL,SUSPECTED-BAD-BOT"},"body": "{\"payload\": \"traversal\"}","clientIP": "172.19.0.1","timestamp": "2026-05-14T06:14:35Z"}
デバッグログ記録
トラブルシューティングのために、詳細なログ記録を有効にしてください。
以下の環境変数を追加してください。
env:- name: SIGSCI_DEBUG_LOG_VERBOSITYvalue: "3" # Enables ext_proc debug logs処理の詳細についてはエージェントのログを確認してください。
kubectl logs -l app=ngwaf-agent -f