与 CI/CD 的集成| 学习笔记

简介: 快速学习与 CI/CD 的集成。

开发者学堂课程【容器安全与 Palo Alto Networks 解决方案 :与 CI/CD 的集成】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/628/detail/9877


与 CI/CD 的集成

 

目录:

一、使用 Twistlock Jenkins 插件将安全性嵌入构建过程

二、利用 twistcli 与更多的 CI tools 集成

三、直接从 Twistlock 控制查看构建结果

四、演示内容

 

一、使用 Twistlock Jenkins 插件将安全性嵌入构建过程

Twistlock Jenkins 插件直接集成到构建流水线中, 为每项工作提供可见性和控制性。

定义整个 CI / CD  流程的质量管控,并为漏洞和合规性设定细化阈值

在 Twistlock,CI/CD 的流水线进行集成。Twistlock 提供了一个 Jenkins,这是用的比较多一个软件。今天的插件,可以将安全性的去嵌入到构建的过程当中。

为每一项工作提供可见性和控制性。

同时,整个 CI/CD 的流程,可以进行监管。在整个流水线的过程中,会漏洞和合规性,可以分别去设定非常细的一些法制方便开发人员。在整个一个构件中,可以很快的能够知道问题在哪。同时,作为我们的 CQX,安全管理团队可以自动的把这个安全的功能集成到整个流水线的过程当中。

首先,在右边,是大致在里面可以看到的,会提供一个 vulnerablitiies trend,不同的颜色会代表不同的严重性。比如说是重度,中度还是轻度不同的一个趋势图。同时,在整个流水线的过程当中,我们会加入两步,一个是Twistlockscan 生存的镜像,有没有问题。同时,在 scan 完了后有个 publish,这个 publish,是把  scan 的这个结果,会推送到系统里面去。

publish 把这些数据推送到 Jenkins,所以在这个界面里面,就可以完整的看到这样一个 Twistlock 的结果。上面的结构,在演示中会有具体的说明。

image.png

 

二、利用 twistcli 与更多的 CI tools 集成

Twistcli 扫描主机,容器镜像, PAS Drops 和无服务功能是否存在漏洞和合规性问题

与 Jenkins 以外的常见 CI 工具集成,例如 CircleCI,Azure Devops,GitHub Actions 等

然后,就是利用 twistcli 可以和更多的 CI tools 进行集成。比如说常见的 CircleCI,Azure Devops,GitHub Actions等都可以通过 twistcli 这一个命令行工具进行集成。

通过 twistcli 这个命令行工具,去扫描一些简单的镜像的一些问题。其实也是一样的,它可以和其他的一些工具做一些集成。

 

三、直接从 Twistlock 控制查看构建结果

直接在中央控制台中查看 Jenkins 作业的状态和 twistcli 扫描

查看构建是通过还是失败以及漏洞信息,风险因素等

同时,在 Twistlock 的这个 council,它可以直接看到构建的一个结果。

在这个 Jenkins job 的这个 tag 里面,可以看到,这一个工作流这个判断,构建究竟是成功还是失败,然后在这整个构建的过程中有多少的 vulnerabilities 在这个镜像里面包括它的一些风险的因素都有非常详细的这样一个报告界面。

image.png

 

四、演示内容

与 Jenkins CI/CD 流水线紧密集成

合规性与漏洞的检查

image.png

怎么样和 Jenkins 来进行提成,同时在整个流水线的过程中,不断的检查合规性和存在的一些漏洞。

首先,在这个 K8S 里面,做的这样一个 Jenkins,然后,我有两个 namespace,一个是 prod,那也就是说production,就是、服务的这样一个 namespace,然后,因为是研发的这样一个系统,所以会有A、B2个版本。现在的话,在网站是这样一个大图,比如说是一个类似的新的方面,然后,在原来这个 production 的页面还是比较小的图片,希望把这个图做大,能够在这个 production 这个版本进行发布。

image.png

做了工作流,或者说我流水线,配置是这样的,首先,代码是在这个 github 上面的,做了一个联动,做了一个web,一旦在 github 上面做,肯定的话,会自动切割 Jenkins 流水线,然后,这里的流水线,首先,它会克隆,把克隆下来,然后做构建,做完构建了以后,会去和 Twistlock 生成。有两个地方,一个是 Complex policy 设为critical,也就是阀值,设为 critical。

如果有极严重的这个 conference 的问题,这个构件,流水线就会失败,然后这个 policy,是 vulnerability 这个漏洞。这里设为警告就是说,如果有漏洞的话,现在是让通过。如果设为其他的一些值,整个流水线构建,它就自动的失败。

在这个 scan 之后,会做了 Twistlock publish 的,Publish 的作用,一会把这个内容会更推送给 Jenkins。在 Jenkins 里面就可以看到这样一个结果。后面一个 face,会 pushlish。会做 deployed。deployed 的时候,它会给两个选择,一个是 push 到研发的界面还是,去部署到这个 production 的界面。选到研发的话,它就会部署到研发的界面,做一个选择。

代码如下:

if (userInput "dev") {

!/usr/bin/python

From http.server import BaseHTTPRequestHandler,HTTPServer

PORT_NUMBER =8080

class MyHandlerCBaseHTTPRequestHandler):

def do_GETCself):

"""Handler for GET requests"". self.send_response(200)

self.send_headerC'Content-type','image/png")

self.end_headersO

with open('logo2.png','rb' as f:

self.wfile.write(f.readO)

try:

serverHTTPServerCC"",PORT_NUMBER),MyHandler) print('Started httpserver on port',port NUMBER)

首先,有这样一些文件。去 vim 一个文件。现在用的是 logo,这样一个图片,现在把它改一个名字。

代码的改动,就会同步。然后做一个新的构件。这里的话,只是做这样一个功能演示,具体怎么来安装或者怎么来部署,在网站上面有非常详细的一些部署。

刚才写的 comment,包括可以去看一些详细的一些信息。

然后,现在选的话,是获取到这个 production 这一个界面,部署完成,刷新一下。

image.png 

现在这个 production 完全是一样的。可以看一下具体的流水线的一个 ouput。可以看到在这里面,会有非常详细的 report。没错,所构建的镜像里面。有多少的问题包括他的一个等级。都会有非常详细的这样一个报告。这个镜像里面,因为这里设的策略是 Morning,所以,这里没有一些详细的一个策略去阻止。

image.png

在BT的菜单里面,可以更详细的,去看到这样一个统计。这里有一个非常具体的一个列表。就说研发人员,或者说开发人员。可以到界面里面看到信息,包括这样一些根据 high, Normal 进行分类。同时,在安全管理员,在这个黑色的界面,同样可以看到一个构件。最新的口径的是21,看一下这个地址是多少,这是21,那在这里,可以看到这个构建究竟是成功还是失败了,打勾说明这个构建试成功了。那打叉,就是比如说不符合要求。整个流水线的构建失败。点进去也可以看到的结果是 pass。

流水线配置里面都已经有了。然后,Complain 还包括详细的这些信息,也都是在里面可以看。现在需要在 Jenkins 里面,把这个流水性的值,需要改动一下。整个流水线的构建,希望是失败。

同样的话,可以也可以通过修改里面的文件。

它整个一个 scan 的结果,第一个是失败。它的 confidence,符合的要求是通过了。

可以看到,其实和 Jenkins 的集成是非常的紧密。只需要在 pipeline 里面把加两步,一个是 scan 和一个是 publish,这两个步骤,得到完美的一个继承。

相关文章
|
2天前
|
Devops jenkins 测试技术
DevOps实践:持续集成与持续部署(CI/CD)的实现之路
【9月更文挑战第33天】在软件开发的海洋中,DevOps是一艘能够加速航行、提升航程质量的巨轮。本文将作为你的航海图,指引你理解并实现DevOps文化中的核心环节——持续集成(CI)与持续部署(CD)。我们将从基础概念出发,逐步深入到实际操作,带你领略代码到部署的全过程。准备好扬帆起航,让我们共同探索如何通过自动化工具和流程优化,让软件交付变得既高效又可靠。
|
8天前
|
Kubernetes Go 持续交付
一个基于Go程序的持续集成/持续部署(CI/CD)
本教程通过一个简单的Go程序示例,展示了如何使用GitHub Actions实现从代码提交到Kubernetes部署的CI/CD流程。首先创建并版本控制Go项目,接着编写Dockerfile构建镜像,再配置CI/CD流程自动化构建、推送Docker镜像及部署应用。此流程基于GitHub仓库,适用于快速迭代开发。
25 3
|
8天前
|
Kubernetes 持续交付 Go
创建一个基于Go程序的持续集成/持续部署(CI/CD)流水线
创建一个基于Go程序的持续集成/持续部署(CI/CD)流水线
|
24天前
|
监控 Devops 测试技术
DevOps实践: 持续集成和持续部署(CI/CD)的入门指南
【9月更文挑战第10天】在快速迭代的软件开发世界中,DevOps已经成为加速产品交付、提升软件质量和团队协作的关键策略。本文将深入浅出地介绍DevOps的核心组成部分——持续集成(Continuous Integration, CI)与持续部署(Continuous Deployment, CD)的基本概念、实施步骤以及它们如何革新传统的软件开发流程。你将学习到如何通过自动化工具简化开发流程,并理解为什么CI/CD是现代软件开发不可或缺的一环。
|
3月前
|
监控 druid Java
spring boot 集成配置阿里 Druid监控配置
spring boot 集成配置阿里 Druid监控配置
192 6
|
3月前
|
Java 关系型数据库 MySQL
如何实现Springboot+camunda+mysql的集成
【7月更文挑战第2天】集成Spring Boot、Camunda和MySQL的简要步骤: 1. 初始化Spring Boot项目,添加Camunda和MySQL驱动依赖。 2. 配置`application.properties`,包括数据库URL、用户名和密码。 3. 设置Camunda引擎属性,指定数据源。 4. 引入流程定义文件(如`.bpmn`)。 5. 创建服务处理流程操作,创建控制器接收请求。 6. Camunda自动在数据库创建表结构。 7. 启动应用,测试流程启动,如通过服务和控制器开始流程实例。 示例代码包括服务类启动流程实例及控制器接口。实际集成需按业务需求调整。
217 4
|
3月前
|
消息中间件 Java 测试技术
【RocketMQ系列八】SpringBoot集成RocketMQ-实现普通消息和事务消息
【RocketMQ系列八】SpringBoot集成RocketMQ-实现普通消息和事务消息
175 1
|
4月前
|
消息中间件 Java Kafka
springboot集成kafka
springboot集成kafka
125 2
|
4月前
|
监控 前端开发 Java
五分钟后,你将学会在SpringBoot项目中如何集成CAT调用链
五分钟后,你将学会在SpringBoot项目中如何集成CAT调用链
|
3月前
|
消息中间件 Java Kafka
Spring Boot与Apache Kafka Streams的集成
Spring Boot与Apache Kafka Streams的集成
下一篇
无影云桌面