出身背景

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

可交付成果

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

依赖关系

Webhook通过HTTPS与API服务器通信并使用TLS。因此Jetstack/cert经理用于提供TLS证书并在Kubernetes API和webhook之间建立连接。

实施

Operator SDK负责创建一个新的webhook,并将其附加到管理器和创建处理程序。Tls证书使用证书管理器进行管理。

  • 验证逻辑:

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

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

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

评价阶段1:

  • 搭建了一个新的验证webhook

  • 添加了用于验证WebHookConfiguration、证书和卷的清单,以及更新的Makefile

  • 实现了验证器接口

  • 最新舵图

评价阶段2:

  • 重新实现了验证程序接口。

  • 增加了内部函数的单元测试

  • 增加了e2e测试和舵测试

  • 最新舵图

用户指南

webhook功能对于用户来说是完全可选的。通过在values.yaml和操作员命令行标志中设置webhook.enabled,可以使用Helm图表轻松部署它。

webhook.enabled=true

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

必威国际有限公司jenkins.ValidateSecurityWarnings=true
  • 注意:webhook需要一些时间才能启动和运行,而且当helm呈现模板时,验证webhook配置将最后应用,因此如果用户希望在启用验证的情况下部署Jenkins自定义资源,他需要等待一段时间。webhook启动并运行后,用户可以使用必威国际有限公司掌舵库贝特尔

今后的工作

  • 在helm图表中实现安装后钩子,检查webhook是否已启动并运行。

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

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

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

关于作者
精神科医师夏玛

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