kubernetes - Istio Envoy 代理转发客户端证书信息

标签 kubernetes istio envoyproxy

我们有一个带有 Istio 1.0(带有 Envoy 代理)和其他一些东西的 Kubernetes 集群。 我们使用 Istio 的网关来验证客户端证书。我们希望将客户证书的主题传递给内部服务。

Here在 Envoy 的文档中,我找到了以下配置选项:forward_client_cert,它允许在 header x-forwarded-client-cert 中的其他信息中传递主题,尽管我找不到在 Istio 中启用它的方法。

有人尝试过做类似的事情并成功吗?或者 Istio 不支持这一点?

最佳答案

这是一个迟到的答案,但 1.1.0 release 支持转发客户端证书详细信息。这是 https 网关的默认行为,但是,您需要全局启用双向 TLS 才能使其正常工作。为此,请应用以下 MeshPolicy 对象:

apiVersion: "authentication.istio.io/v1alpha1"
kind: "MeshPolicy"
metadata:
  name: "default"
spec:
  peers:
  - mtls: {}

应用此功能后,对 ingress 的 https 调用会将 X-Forwarded-Client-Cert header 转发到服务器。

但是请记住,一旦启用全局 mtls,集群内的服务到服务调用也必须使用 tls。这可以通过为每个服务创建一个 DestinationRule 来完成,并将模式设置为 ISTIO_MUTUAL(如果您想使用自己的客户端证书,则为 MUTUAL)而不是由 Citadel 生成的那些):

apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: myApp
  namespace: default
spec:
  host: myApp
  trafficPolicy:
    tls:
      mode: ISTIO_MUTUAL

关于kubernetes - Istio Envoy 代理转发客户端证书信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52005423/

相关文章:

kubernetes - 如何使用 helm 提供程序覆盖 terraform 中的默认图表值?

envoyproxy - Envoy 是否支持 TCP 代理?

在 gRPC 服务前使用 Envoy 代理时出现 SSL 错误 ERR_CERT_AUTHORITY_INVALID

kubernetes - 使用istio设置服务指标的指南

docker - 使用 http post 进行 active 探测

python - Kubernetes 客户端 python API 错误 401 - 未经授权

kubernetes - 无法使用谷歌云在 Rancher 上的 kubernetes 上的 Pod 之间进行通信?

amazon-web-services - 我可以为由 Istio 配置的经典 AWS ELB 定义子域吗?

kubernetes - Istio 分布式跟踪与 Jaeger 不工作

ssl - GKE - 如何通过 L7 负载均衡器提供 HTTPS?