gpt4 book ai didi

kubernetes - 基于特定IP的双向TLS

转载 作者:行者123 更新时间:2023-12-03 16:43:28 24 4
gpt4 key购买 nike

我正在尝试为双向 TLS 配置 nginx-ingress,但仅​​用于特定的远程地址。我尝试使用片段但没有成功:

nginx.ingress.kubernetes.io/configuration-snippet: |
if ($remote_addr = 104.214.x.x) {
auth-tls-verify-client: on;
auth-tls-secret: namespace/nginx-ca-secret;
auth-tls-verify-depth: 1;
auth-tls-pass-certificate-to-upstream: false;
}

auth-tls 注释在作为注释应用时起作用,但在代码段中它们不起作用。

知道如何配置它或可能是一种解决方法以使其工作吗?

最佳答案

mTLS 的工作基本上是通过要求客户端提供证书来限制对服务的访问。如果您公开一项服务,然后只要求具有特定 IP 地址的客户端出示证书,那么世界其他地方仍然可以在没有证书的情况下访问您的服务,这完全违背了 mTLS 的意义。

如果您想了解更多信息,here is a good article这解释了为什么 TLS 和 mTLS 存在以及它们之间的区别是什么。

有两种方法可以从中进行合理的设置:

  • 只需使用常规 TLS 而不是 mTLS
  • 让集群中的服务需要 mTLS 才能访问它,而不管 IP 地址如何

  • 如果选择选项 2,则需要将服务本身配置为使用 mTLS,然后配置 ingress 以将客户端证书传递给服务。这是 nginx 入口的示例配置,它将与需要 mTLS 的服务一起使用:
    apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
    name: mtls-sample
    annotations:
    nginx.ingress.kubernetes.io/backend-protocol: "https"
    nginx.ingress.kubernetes.io/auth-tls-pass-certificate-to-upstream: "true"
    spec:
    rules:
    - http:
    paths:
    - path: /hello
    backend:
    serviceName: mtls-svc
    servicePort: 443

    关于kubernetes - 基于特定IP的双向TLS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55690321/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com