如何保护对外暴露的 Kubernetes 服务

  • 时间:
  • 浏览:1
  • 来源:大发彩神app—大发彩神8苹果版

而且,创建一一个多基于上边 htpasswd 文件的 Secret 对象:

替加在你此人 须要使用的域名,而且在回调 URL 加在在/oauth2/callback,点击注册后,记录下应用删改页面Client IDClient Secret的值。而且还须要生成一一个多 cookie 密钥,当然可能性当当当我们 歌词 系统中安装了 python 环境还须要直接生成,这么的话用 Docker 容器运行当然也行:

更新完成后,现在当当当我们 歌词 去访问当当当我们 歌词 的 Jenkins 服务还须要就看须要输入用户名和密码的提示信息了:

首先当当当我们 歌词 须要为当当当我们 歌词 的应用加在自动的 HTTPS,还须要参考当当当我们 歌词 前面的文章使用 Let's Encrypt 实现 Kubernetes Ingress 自动化 HTTPS。

除了上边的 Basic Auth 认证办法以为,当当当我们 歌词 还还须要通过 Github、Google 等提供的 OAuth 服务来进行身份验证。当当当我们 歌词 还须要通过名为OAuth2 Proxy的工具来代理请求,它通过提供一一个多内部管理身份验证的反向代理来实现,使用起来也相对简单。

而且部署OAuth2 Proxy应用,这里当当当我们 歌词 直接使用 Helm 来复杂化安装:

同样当当当我们 歌词 这里还是使用一一个多 Jenkins 服务,当当当我们 歌词 也还须要使用任意的一一个多服务来验证,当然最好是这么身份验证功能的,比如这么安装 x-pack 的 Kibana。

而且更新上边的资源对象:

而且 当当当我们 歌词 须要在 Kubernetes 中暴露这俩这么任何安全验证机制的服务,比如这么安装 xpack 的 Kibana,这么开启登录认证的 Jenkins 服务这类的,当当当我们 歌词 也想通过域名来进行访问,比较域名比较方便,更主要的是对于 Kubernetes 上边的服务,通过 Ingress 暴露一一个多服务太方便了,而且还还须要通过 cert-manager 来自动的完成HTTPS化。很多很多很多很多有就非常有必要对哪几种服务进行这俩安全验证了。

首先,当当当我们 歌词 须要创建用于存储用户名和密码的htpasswd文件:

当当当我们 歌词 在 Jenkins 的核心 Ingress 对象中配置服务认证的 url:https://$host/oauth2/auth,而且通过创建一一个多同域的 Ingress 对象将oauth2路径代理到OAuth2 proxy应用去处置认证服务:

而且登录 Github,在https://github.com/settings/applications/new加在一一个多新的OAuth应用多线程池池 :

对于 GitHub,当当当我们 歌词 还须要通过github-orggithub-team来限制访问,一般设置email-doamin="*",当当当我们 歌词 还须要通过OAuth2 Proxy的示例文档来查看更改 GitHub Provider 的配置。

当当当我们 歌词 在前面升级 Dashboard 的文章中就给当当当我们 歌词 提到过一种办法来为当当当我们 歌词 的服务加在 Basic Auth 认证:haproxy/nginx 和 traefik/nginx-ingress。

而且按照上边的思路重新创建 Jenkins 的一一个多 Ingress 对象:

当然除了使用 GitHub 之外,还还须要使用这俩的 OAuth 认证服务,比如 Google,当当当我们 歌词 还须要根据须要自行去加在即可。

要实现内部管理服务来进行认证的关键点在于 nginx-ingress-controller 在 annotations 中为当当当我们 歌词 提供了auth-urlauth-signin一一个多注解来允许配置内部管理身份验证的入口。

当当当我们 歌词 这里通过cert-manager来自动为服务加在 HTTPS ,加在了kubernetes.io/tls-acme=true你这俩注解,而且当当当我们 歌词 在浏览器中打开当当当我们 歌词 的 Jenkins 服务,正常就会跳转到 GitHub 登录页面了:

使用 haproxy/nginx 的办法非常简单,而且直接加在 basic auth 认证,而且将请求转发到上边的服务;而 traefik/nginx-ingress 都直接提供了 basic auth 的支持,当当当我们 歌词 这里使用 nginx-ingress 来为 Jenkins 服务加在一一个多 basic auth 的认证服务。

而且认证通并且 就还须要跳转到当当当我们 歌词 的 Jenkins 服务了:

上边你这俩个 annotation 须要 nginx-ingress-controller 在 v0.9.0 版本或以上。

最后,当当当我们 歌词 须要在 Ingress 对象中加在auth-type:basicauth-jenkins-basic-auth一一个多 annotations:(ingress.yaml)