You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Istio AuthorizationPolicy配置疑问:如何排除SMTP端口25,仅管控Mailhog的HTTP端口80访问

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 08:43:08