如何满足AKS顾问建议「Kubernetes集群应仅通过HTTPS访问」
问题根因
你当前使用的是Nginx Ingress Controller,配置的kubernetes.io/ingress.allow-http: "false"是AKS原生应用路由Ingress Controller的专属注解,对Nginx Ingress不生效,因此AKS安全扫描仍然判定你的Ingress允许HTTP访问。
修复步骤
- 给Ingress添加Nginx Ingress专属的强制HTTPS跳转注解,覆盖原无效注解的能力:
如果需要严格禁用所有HTTP请求,还可以在Nginx Ingress Controller的启动参数中关闭80端口监听,或者添加HSTS注解进一步提升安全等级:nginx.ingress.kubernetes.io/ssl-redirect: "true"nginx.ingress.kubernetes.io/hsts: "true" nginx.ingress.kubernetes.io/hsts-max-age: "31536000" - 检查
my-namespace命名空间下是否存在名为my-ingress-tls的有效Secret:需要包含完整的TLS证书、私钥,且证书的使用者可选名称(SAN)覆盖my-service.my-domain.com,无效的证书也会导致安全扫描不通过。 - 重新部署更新后的Ingress资源,等待15-30分钟让AKS安全顾问的扫描结果刷新,即可从待修复列表中移除。
修改后的Ingress注解示例
annotations: kubernetes.io/ingress.class: nginx nginx.ingress.kubernetes.io/ssl-redirect: "true" meta.helm.sh/release-name: my-release-name meta.helm.sh/release-namespace: my-namespace nginx.ingress.kubernetes.io/backend-protocol: HTTPS nginx.ingress.kubernetes.io/rewrite-target: /$1
内容的提问来源于stack exchange,提问作者sl3dg3
相关产品推荐
相关产品推荐

