Istio AuthorizationPolicy配置疑问:如何排除SMTP端口25,仅管控Mailhog的HTTP端口80访问
我明白你的困扰了——你希望Mailhog的SMTP端口25能被集群内应用自由访问,只对HTTP端口80做JWT权限验证,但当前配置却把25端口也拦截了。问题出在你第二个规则没有明确指定目标端口,导致它会匹配所有端口(包括25),而SMTP请求无法满足JWT的groups条件,最终被拒绝。
咱们来调整一下AuthorizationPolicy的配置,把两个规则的作用范围明确分开:
apiVersion: security.istio.io/v1 kind: AuthorizationPolicy metadata: labels: argocd.argoproj.io/instance: ephemeral-devops name: oauth-mailhog-jwt namespace: devops spec: action: ALLOW rules: # 允许所有访问SMTP端口25的请求,无需权限验证 - to: - operation: ports: - "25" # 仅允许拥有指定groups的用户访问HTTP端口80 - to: - operation: ports: - "80" paths: - /* when: - key: request.auth.claims[groups] values: - devops - devs selector: matchLabels: app: mailhog
调整的核心点:
- 给第二个规则加上
ports: ["80"],明确它只作用于HTTP端口,不会影响SMTP端口25 - 第一个规则保持不变,专门放行所有25端口的请求
这样修改后,集群内应用访问SMTP端口25时,只会匹配第一条规则,直接被允许;而访问HTTP端口80时,会匹配第二条规则,只有携带符合要求的JWT claims的请求才能通过。你可以再用telnet mailhog-service 25测试一下,应该就能正常连接了。
备注:内容来源于stack exchange,提问作者user3069488
相关产品推荐
相关产品推荐

