【问题标题】:Adding basic auth to kubernetes deployment将基本身份验证添加到 Kubernetes 部署
【发布时间】:2019-10-07 21:44:33
【问题描述】:

谁能解释一下将基本身份验证添加到在 Google Cloud (GCP) 上运行 web 应用的 kubernetes 集群部署的最佳方法

我们正在使用:

kubectl expose deployment testSanbox --type=LoadBalancer --port 80 --target-port 80

我们不需要任何花哨的东西,因为这只是一个开发沙盒,但我们不希望任何人能够接触到它。 它可以是单个用户/通行证组合,也可以使用我们通过 IAM 管理的 Google 凭据。

很抱歉,您可能已经注意到我对 kubernetes 或 GCP 的经验并不丰富。

谢谢

【问题讨论】:

    标签: authentication kubernetes google-cloud-platform


    【解决方案1】:

    如果您正在寻找 HTTP 基本身份验证,您可以使用 NGINX 和 Ingress。这是设置说明authentication-ingress-nginxingress-auth

    但在安全的上下文中,http 身份验证是不够好的安全身份验证方法。问题是,除非在整个数据周期中严格执行该过程以确保 SSL 的安全性,否则身份验证是在不安全的线路上以开放的方式传输的。这很容易引发中间人攻击,用户可以简单地捕获登录数据并通过附加到恶意数据包的仿制 HTTP 标头进行身份验证。

    这里是kubernetes官方文档中关于授权authorization-kubernetes的概述。

    如果您寻找更好的解决方案,请使用 API 密钥、OAuth 提供程序,例如 Google、Auth0 等。developers.google.com/identity/protocols/OAuth2WebServer 和 developers.google.com/identity/protocols/OAuth2UserAgent 身份验证和授权有很多选项。 以下是对上述术语的解释:api-authentication.

    在 GCP 上使用 Auth 对用户进行身份验证的方法:authentication-gcp-app

    如果有帮助请告诉我。

    【讨论】:

      【解决方案2】:

      我会将您的 TCP 负载平衡器更改为 HTTP 负载平衡器。这意味着您可以将其公开为 NodePort,而不是公开为 LoadBalancer 类型的服务。然后,您将创建 Ingress 资源来访问该服务。

      对于身份验证,您可以使用IAP (Identity Aware Proxy),这是一个 GCP 产品,您可以很容易地将其连接到 HTTP 负载均衡器。

      完成后,您将拥有典型的 Google 身份验证页面(类似于 gmail),您的用户将使用其 GCP 凭据进行身份验证。

      【讨论】:

        【解决方案3】:

        您部署了一个 pod testSandbox 并将其暴露给 LoadBalancer。您的应用 testSandbox 应该处理它收到的请求的身份验证。除非您使用 API 网关并处理进入集群的所有请求的身份验证。

        【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-08-29
        • 1970-01-01
        • 2011-06-10
        • 1970-01-01
        • 2018-01-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多