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

Istio Ingress Gateway同时支持证书与AAD认证流量的配置咨询

Istio Ingress Gateway 双认证模式配置方案

核心实现思路

Istio默认的强制双向TLS认证会在TLS握手阶段直接拒绝无客户端证书的连接,无法满足双认证共存的需求。我们可以采用可选客户端证书校验+分层授权判断的方案实现需求:先将网关TLS校验改为非强制模式,允许无证书的请求完成TLS握手,再通过授权策略对两类合法请求做放行判断,其余请求直接拒绝。

具体配置调整步骤

  • 调整Gateway资源的TLS配置,将原有MUTUAL模式修改为OPTIONAL_MUTUAL模式。该模式下网关会尝试请求客户端证书并做校验,但不会直接拒绝未携带证书的连接,配置示例如下:
apiVersion: networking.istio.io/v1beta1
kind: Gateway
metadata:
  name: your-ingress-gateway
  namespace: istio-ingress
spec:
  selector:
    istio: ingressgateway
  servers:
  - port:
      number: 443
      name: https
      protocol: HTTPS
    hosts:
    - "your.domain.com"
    tls:
      mode: OPTIONAL_MUTUAL
      credentialName: gateway-tls-secret # 存储服务端证书、CA根证书的Secret
  • 配置网关层面的AuthorizationPolicy,实现双条件放行:只要请求满足「携带有效客户端证书」或「携带Authorization请求头」任意一种条件就允许通行,配置示例如下:
apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
  name: gateway-dual-auth-policy
  namespace: istio-ingress
spec:
  selector:
    matchLabels:
      istio: ingressgateway
  action: ALLOW
  rules:
  # 放行带有效客户端证书的请求
  - from:
    - source:
        requestPrincipals: ["*"]
  # 放行带Authorization头的请求
  - when:
    - key: request.headers[Authorization]
      values: ["*"]
  • 保留原有VirtualService中的HTTP路由规则,两类请求都会被网关正常解密,基于查询参数的路由逻辑不受影响,携带Authorization头的请求会原样透传到后端服务,由服务自行完成AAD认证校验。

注意事项

  • 如果需要对两类请求做差异化路由,可以在VirtualService中添加基于request.auth.principal属性或Authorization头的匹配规则,实现更细粒度的流量调度。
  • 需确保网关关联的Secret中CA根证书配置正确,避免合法客户端证书被判定为无效,导致mTLS类请求校验失败。
  • 若要禁止同时携带客户端证书和Authorization头的请求,只需在AuthorizationPolicy中新增优先级更高的DENY规则即可。

内容的提问来源于stack exchange,提问作者Jim

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 05:06:04