背景

必威国际有限公司Kubernetes集群上的Jenkins自定义资源使用声明式YAML配置文件部署;因此,在这些文件中声明的一些插件可能包含安全警告。所以除了在网站上手动检查,用户没有办法知道。这个项目的目的是在创建/更新一个新的Jenkins自定义资源之前增加一个额外的验证步骤。必威国际有限公司

可交付成果

该项目旨在为Kubernetes的Jenkins操作员添加一个验证许可webhook,以便在对象创建之前检测插件中的潜在安全漏必威国际有限公司洞。

依赖关系

Webhooks通过HTTPS和TLS与API服务器通信。因此,Jetstack / cert-manager用于提供TLS证书,建立Kubernetes API与webhook之间的连接。

Implementaion

Operator-SDK负责创建一个新的webhook,并将其添加到管理器中并创建处理程序。使用cert-manager管理Tls证书。

  • 验证逻辑:

    • 建议的实现:迭代要安装的插件列表,从插件中心API中获取每个插件的警告,并检查该插件的版本是否有任何这些警告。

    • 注意:Webhooks会给API请求增加延迟,因此它们应该尽可能快地进行评估,因此允许的最大超时时间为30秒。在之前的方法中,我是从验证器接口本身的插件站点API中获取安全警告,由于网络操作很慢,在验证大量插件或Internet连接不好的情况下会导致超时。

    • 更新的实现:不是为每个插件获取信息,而是在操作员开始时下载和缓存所有插件的信息,并定期更新,从而消除了网络调用,并在不到一秒的时间内完成验证。

评估阶段1:

  • 搭建了一个新的验证webhook

  • 为ValidatingWebhookConfiguration、证书和卷添加了清单,并更新了Makefile

  • 实现验证器接口

  • 更新执掌图表

评估阶段2:

  • 重新实现验证器接口。

  • 为内部功能添加单元测试

  • 增加端到端测试和舵面测试

  • 更新执掌图表

用户指南

webhook特性对用户来说是完全可选的。它可以很容易地部署使用Helm Chart通过设置webhook。启用值。yaml和Operator命令行标志。

webhook.enabled = true

在jenkins自定义资源集中启用安全验证必威国际有限公司

必威国际有限公司詹金斯。ValidateSecurityWarnings = true
  • 注意:webhook需要一些时间来启动和运行,同样当helm渲染模板时,验证webhook配置是最后应用的,因此如果用户想要在启用验证的情况下部署Jenkins自定义资源,他需要等待一些时间。必威国际有限公司当webhook启动并运行后,用户可以使用Jenkins自定义资源必威国际有限公司kubectl

未来的工作

  • 在舵图上实现一个安装后的挂钩,检查网钩是否启动和运行。

  • 添加插件和Jenkins核心版本的验证。必威国际有限公司

  • 将其他验证逻辑从控制器迁移到webhook。

  • 添加插件依赖项的验证。

关于作者
Pulkit沙玛

Pulkit是印度理工学院(BHU) Varanasi的一名学生,目前正在Jenkins的GSoC项目中工作,他的目标是为Jenkins Kubernetes操作员添加一个安全验证器。必威国际有限公司