ingress注解是kubernetes中为单个ingress资源精准启用waf防护的核心机制,主流支持者为ingress-nginx(modsecurity+owasp crs)和nginx app protect(crd策略绑定),通过注解实现按域名/路径启用、规则微调与响应动作控制。

在 Kubernetes 中,Ingress 注解(Annotations)是为单个 Ingress 资源注入特定行为的最轻量、最灵活方式。针对 WAF 级别的动态防御参数配置,核心不在于“全局开关”,而在于**按域名/路径精准启用、微调规则集与响应动作**——这正是注解设计的初衷。
支持 WAF 注解的 Ingress Controller 类型
并非所有 Ingress Controller 都原生支持 WAF 注解。目前主流且稳定支持的是:
- ingress-nginx(官方维护版):通过 ModSecurity + OWASP CRS 实现开源 WAF 能力,注解粒度细、文档清晰
- NGINX App Protect(商业版):基于 F5 技术,注解用于绑定策略(Policy)、日志配置等,但策略本身需独立 CRD 定义
- 其他如 Traefik、HAProxy Ingress 对 WAF 的原生注解支持有限,通常需配合 sidecar 或外部 WAF 网关
ingress-nginx 中常用 WAF 相关注解详解
以下注解直接作用于 Ingress 资源 metadata.annotations 字段,无需修改全局 ConfigMap:
-
启用基础防护:
nginx.ingress.kubernetes.io/enable-modsecurity: "true"—— 启用 ModSecurity 引擎 -
加载默认规则集:
nginx.ingress.kubernetes.io/enable-owasp-core-rules: "true"—— 自动挂载 OWASP CRS v3.x 规则 -
自定义规则片段(内联):
nginx.ingress.kubernetes.io/modsecurity-snippet: |<br> SecRule ARGS "@rx (?i)union.*select" "id:101,deny,status:403,msg:'SQL Injection Attempt'"
—— 可插入单条或少量定制规则,适合临时加固 -
调整拦截动作:
nginx.ingress.kubernetes.io/modsecurity-rule-engine: "On"(可选值:On / Off / DetectionOnly)—— “DetectionOnly” 即监控模式,不阻断流量,推荐上线初期使用 -
排除特定路径:
nginx.ingress.kubernetes.io/whitelist-source-range: "10.0.0.0/8,192.168.0.0/16"—— 对可信网段跳过 WAF 检查(注意:此非 WAF 内置白名单,而是 nginx 层访问控制)
NGINX App Protect 的注解式策略绑定
它不直接在注解里写规则,而是通过注解将 Ingress 关联到已部署的 WAF 策略资源(CRD)。关键注解如下:
-
绑定安全策略:
nginx.org/waf-policy: "default/my-waf-policy"—— 指向一个WafPolicy类型的 CR 资源 -
启用日志输出:
nginx.org/waf-security-log-enable: "true"—— 配合WafLogConfCR 使用 -
指定日志目标:
nginx.org/waf-security-log-destination: "syslog:server=192.168.10.50:514"—— 支持 syslog 或 fluentd 地址
策略内容(如 SQLi/XSS 规则开关、异常检测阈值、自定义签名)需在 WafPolicy YAML 中定义,实现“配置与策略分离”,更利于审计与复用。
调试与验证要点
配置生效后,需验证是否真正加载并起效:
- 检查 Ingress Controller Pod 日志,搜索
modsecurity或app-protect关键字,确认策略加载无报错 - 执行测试攻击(如
curl -v "http://myapp.example.com/?id=1%27%20OR%201=1--"),观察返回状态码是否为 403,并检查响应头中是否有X-MODSEC-Info或X-App-Protect-Status - 查看 WAF 安全日志(ModSecurity audit log 或 App Protect syslog),确认攻击事件被记录且字段完整
- 若使用
DetectionOnly模式,确保业务不受影响,同时日志中能捕获疑似攻击流量











