如何修复AKS Nginx Ingress镜像的安全漏洞告警问题
Nginx Ingress镜像Azure Defender漏洞告警修复方案
执行helm repo update仅会同步Helm仓库的最新索引文件,不会自动替换集群中正在运行的工作负载镜像,也不会更新你私有ACR中缓存的旧版漏洞镜像,这是操作后告警仍存在的核心原因,按以下步骤排查修复即可:
- 先提取Azure Defender告警中标注的存在CVE漏洞的Nginx Ingress镜像完整版本号,和集群当前实际运行的Ingress实例使用的镜像做版本比对,确认线上是否仍在运行漏洞版本,查询命令:
kubectl get pods -n <你的ingress-nginx部署命名空间> -l app.kubernetes.io/name=ingress-nginx -o jsonpath='{range .items[*]}{.spec.containers[*].image}{"\n"}{end}' - 检查你本地Helm配置的ingress-nginx仓库源:如果是直接对接官方仓库,确认官方最新chart对应的镜像版本已经修复了告警里提到的CVE;如果你的chart和镜像都缓存在私有ACR中,需要先将官方修复CVE后的最新chart、对应镜像推送到自己的ACR,仅执行repo update不会自动同步ACR内的镜像版本。
- 确认版本无误后执行Helm升级操作,替换线上运行的所有Ingress相关工作负载,命令参考:
helm upgrade ingress-nginx <你的repo源/ingress-nginx> -n <ingress-nginx部署命名空间> --version <修复对应CVE的chart版本号> --set controller.image.registry=<你的ACR登录域名> - 升级完成后等待所有旧版本Pod被完全销毁、新版本Pod就绪运行,再到ACR仓库中删除之前留存的存在漏洞的旧镜像版本,避免旧镜像残留被Azure Defender持续扫描触发告警。
若以上操作完成后告警仍未消除,需要排查集群内是否存在其他独立部署的Nginx Ingress实例(比如测试环境部署、DaemonSet方式部署的Ingress、其他命名空间下的零散Ingress工作负载),或者节点本地缓存的旧镜像被Defender扫描识别。
内容的提问来源于stack exchange,提问作者megha
相关产品推荐
相关产品推荐

