持续集成09--Jenkins配置Sonar代码漏洞扫描工具

news2025/3/11 11:30:00

专栏内容

持续集成01--Git版本管理及基础应用实践_持续集成下的git分支-CSDN博客

持续集成02--Linux环境更新/安装Java新版本-CSDN博客

持续集成03--Jenkins的安装与配置-CSDN博客

持续集成04--Jenkins结合Gitee创建项目_jenkins集成gitee-CSDN博客

持续集成05--Gogs的安装与使用-CSDN博客

持续集成06--Jenkins构建常用触发器的使用_jekins 配置触发器-CSDN博客

持续集成07--Jenkins配置Allure测试报告_jenkins上 allure 报告配置-CSDN博客

持续集成08--Jenkins邮箱发送构建信息及测试报告_jenkins 邮件内容自定义-CSDN博客

前言

        在软件开发的高速迭代中,代码质量与安全性的保障成为了不可忽视的重要环节。为了确保代码的稳定性和安全性,持续集成(CI)流程中集成自动化代码漏洞扫描工具变得尤为关键。Jenkins,作为业界广泛应用的CI工具,其强大的扩展性为我们提供了集成各种插件的便利。而SonarQube,作为领先的代码质量管理平台,通过其全面的代码分析功能,帮助我们发现并修复代码中的潜在漏洞和不良实践。

        本文将详细阐述如何在Jenkins中配置SonarQube代码漏洞扫描工具,通过简洁明了的步骤,指导实现代码质量的自动化检测,从而提升软件的整体质量和安全性。

1、Sonar安装与配置

        1.1、SonarQube下载

                下载地址:www.sonarsource.com

        1.2、SonarQube安装

                1.2.1、解压文件

        将zip文件上传至服务器,通过命令解压文件

Unzip sonarqube-9.7.0.61563.zip

                1.2.2、创建普通用户

        使用root用户运行任何应用程序,都会带来潜在的安全风险。root用户拥有对系统的完全访问权限,因此任何漏洞或不当操作都可能对系统造成严重影响。
当使用root用户启动SonarQube时,它可能会创建或修改一些文件和目录,这些文件和目录的默认所有者将是root。这可能导致后续以非root用户身份运行时出现权限问题;SonarQube集成了Elasticsearch等组件,这些组件通常不建议以root用户运行,因为它们需要限制对系统资源的访问以防止潜在的安全问题。
        最佳安全实践之一是避免使用root用户运行应用程序。相反,应该使用具有适当权限的专用用户账户来运行应用程序。

        在Linux系统中,可以使用adduser或useradd命令创建一个新用户,例如sonar。

useradd sonar -p sonar

        执行后可以看到home目录下新增了用户sonar的文件夹

                1.2.3、普通用户授权

        将 sonarqube目录及其包含的所有文件和子目录的所有者更改为用户 sonar。进入到sonarqube文件夹上级目录,执行命令。

chown -R sonar sonarqube/

         执行之后,通过命令ll可以看到用户由root变成了sonar

        1.3、启动Sonar

        启动sonar前,先切换普通⽤户再运⾏

su sonar

 

        进入到sonarqube目录下linux环境启动文件所在目录,执行命令

# 进入到启动目录下
cd ./sonarqube/bin/linux-x86-64/
# 执行启动
./sonar.sh start

# 或者进入到sonarqube目录下直接执行
./bin/linux-x86-64/sonar.sh start

1.3、访问SonarQube

         1.3.1、登录SonarQube

        浏览器输入地址:http://ip:9000
        默认账号/密码:admin/admin

        1.3.2、重置密码

         填写密码后点击Update,进行登录。注意:新旧密码不能相同

1.4、SonarQube汉化

         1.4.1、下载汉化包

        SonarQube首页找到导航栏Administration--Marketplace--Plugins,输入框输入Chinese,出现汉化包,此时你会点击install,但是没用,不能安装;需要我们手动下载:点击搜索到的插件里面的“Homepage”进入汉化包的github,点击Latest version,点击.jar文件下载jar包

1.4.2、部署汉化包

        将下载的jar包放到我们安装的sonarqube路径下的插件文件夹下,我的路径是/usr/local/sonarqube/extensions/plugins;然后重启我们的sonarqube(./bin/linux-x86-64/sonar.sh restart);重新刷新sonarqube页面即可

1.5、添加Token令牌

        这一步主要是为了在Jenkins添加sonarqube的登录凭证;进入Sonarqube--账号--我的账号--通用令牌填写相关信息,然后点击生成

2、Jenkins配置

         2.1、安装插件

        进入Manages Jenkins--Plugins,搜索SonarQube插件进行安装

        2.2、Tools配置

        进入Manages Jenkins--Tools,找到SonarQube Scanner安装,点击SonarQube Scanner安装下拉框,输入name、勾选install、选择版本(此处我选择的是默认版本6.1.0.4477),然后进行保存

        2.3、系统配置

                2.3.1、配置SonarQube servers

        Jenkins进入Manages Jenkins--System,找到SonarQube servers;勾选Environment ,填写name(自定义)、URL(SonarQube链接地址)、token(sonar凭证)

                2.3.2、添加凭证

        此处添加凭证类型选择text,Secret填写我们在sonarqube创建的令牌,填写描述,点击添加

        创建凭证之后记得回来在Server authentication token栏选择我们添加好的凭证,然后进行保存

     2.4、项目配置

        进入项目配置页,点击增加构建步骤,选择Execute SonarQube Scanner;

        然后找到Analysis properties栏填写执行命令,保存配置;

sonar.projectname=${JOB_NAME}

sonar.projectKey=${JOB_NAME}

sources=./

sonar.java.binaries=PytestApiFrame/

        其中“sources=./”表示当前项目工作路径,

        “sonar.java.binaries=PytestApiFrame/”表示需要sonar扫描的项目代码文件目录

 3、项目构建

        3.1、直接构建项目

        通过日志信息可以看到已经在安装sonar scanner文件

         3.2、查看扫描信息

         构建完成后在项目页面便可以看到sonar图标,点击查看扫描信息

        点击扫描结果,可以查看具体缺陷、漏洞详情,根据详情修复我们的代码。

总结

        通过本文的指引,基本了解如何在Jenkins中集成SonarQube代码漏洞扫描工具,并掌握了从插件安装、项目配置到扫描执行的完整流程。这一集成不仅简化了代码质量检测的流程,还提高了检测的效率和准确性。可以利用这一强大的工具,在持续集成的过程中及时发现并修复代码中的漏洞,为软件的稳定运行和安全性保驾护航。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1968918.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Ubuntu运行深度学习代码,代码随机epoch中断没有任何报错

深度学习运行代码直接中断 文章目录 深度学习运行代码直接中断问题描述设备信息问题补充解决思路问题发现及正确解决思路新问题出现最终问题:ubuntu系统,4090显卡安装英伟达驱动535.x外的驱动会导致开机无法进入桌面问题记录 问题描述 运行深度学习代码…

MySQL--表完整性约束

前言:本博客仅作记录学习使用,部分图片出自网络,如有侵犯您的权益,请联系删除 作用:用于保证数据的完整性和一致性 约束条件说明PRIMARY KEY (PK)该字段为该表的主键,可以唯一的标识记录,不可以…

【Python 逆向滑块】(实战三)逆向滑块,并实现用Python+Node.js 生成滑块、识别滑块、验证滑块、发送短信

逆向日期:2024.08.01 使用工具:Node.js 本章知识:逆向网易易盾【cb】参数 文章难度:中等(没耐心的请离开) 文章全程已做去敏处理!!! 【需要做的可联系我】 AES解密处理…

乐鑫ESP32-S3语音唤醒和命令词识别,XIAO ESP32 S3 Sense开发套件应用

在这个数字化飞速发展的时代,小型化、智能化已成为技术发展的趋势。ESP32-S3芯片在物联网和嵌入式机器学习领域的应用潜力,让我们对智能设备的未来充满了无限遐想。 OpenGlass项目中的Seeed Studio XIAO ESP32 S3 Sense开发套件,以其小巧的体…

【kali靶机之serial】--反序列化漏洞实操

kali靶机配置 【我图片里没有截图的默认配置即可】需要改的地方图片里面都有。 使用kali扫描网关的主机。 扫到一个开放了80端口HTTP协议的主机ip 访问80端口 会看到一个文本页面,翻译一下看是什么意思。。 F12查看cookie,是一个base64编码了的东西 使…

再获奖项,亚信安慧AntDB数据库被评为“2023-2024国产数据库创新赋能优秀产品”

日前,由工业和信息化部直属的中国电子信息产业发展研究院赛迪网、《数字经济》杂志主办的第二届数字驱动创新峰会(DDIS 2024)在京隆重举办,“2023-2024数字创新优秀成果案例” 征集结果同期正式发布。亚信安慧AntDB数据库凭借多年…

「9月·张家口」第二届机器视觉、图像处理与影像技术国际会议(MVIPIT 2024)

第二届机器视觉、图像处理与影像技术国际会议(MVIPIT 2024)将于2024年9月13日-15日在中国张家口召开。MVIPIT 2024聚焦机器视觉、图像处理与影像技术,旨在为专家、学者和研究人员提供一个国际平台,分享研究成果,讨论问题和挑战,探…

ARM架构中的Cache stashing介绍

快速链接: . 👉👉👉 ARMv8/ARMv9架构入门到精通-[目录] 👈👈👈 付费专栏-付费课程 【购买须知】:个人博客笔记导读目录(全部) Reliability, Availability, and I/O coherent Requesting Node (RN-I)I/O coherent Requesting Node with DVM support (RN-D)Fully c…

【C#工具类】Excel接口(一)

目录 需求描述 具体需求分析 学习交流(Bug待解决) Debug代码(写代码的过程,逐渐完善的过程) 参考资料 扩展阅读 需求描述 用C#生成两个函数 1. 盲读Excel (Excel文件名) 读取所有单元格的数据,并输…

什么是IO多路复用?其原理和用途是什么?

什么是IO? IO:Input/Output,即数据的读取(接收)/写入(发送)操作,针对不同的数据存储媒介,大致可以分为网络 IO 和磁盘 IO 两种。在 Linux 系统中,为了保证系…

计算机毕业设计Hadoop+Hive专利分析可视化 面向专利的大数据管理系统 专利爬虫 专利数据分析 大数据毕业设计 Spark

《Hadoop专利大数据分析可视化系统》开题报告 一、选题背景与意义 随着信息技术的飞速发展,全球数据量呈现爆炸式增长,特别是在专利领域,数据的积累和更新速度更是惊人。专利数据不仅包含了技术创新的详细信息,还反映了行业的发…

Java数据结构(五)——栈和队列

文章目录 栈和队列栈基本概念栈的模拟实现集合框架中的栈栈的创建栈的方法栈的遍历 栈的应用及相关练习括号匹配逆波兰表达式求值出栈入栈次序匹配最小栈 几个含"栈"概念的区分 队列基本概念队列的模拟实现循环队列双端队列集合框架中的队列队列的创建队列的方法队列…

嵌入式day16

结构体与共用体 概述 通常结构体名第一个字符大写 } ; 分号不能省略 类型名与变量名的关系 :抽象与具体的关系 . :结构体成员运算符 先有类型,再有定义 Student 可省略 使用者只能用全局变量s1,s2 全部初始化&am…

Redis缓存常见问题

Redis 缓存的穿透、雪崩、击穿是三种常见的问题,它们各自的表现和应对策略有所不同。以下是这三者的区别: 1. 缓存穿透(Cache Penetration) 现象: 缓存穿透是指客户端请求的数据在缓存中不存在,同时在数据库中也不存…

【avue+vue2+elementui】删除、rules、页面跳转和其他问题

一、删除 API/*** 删除.* @param {*} data * @returns 返参*/ export const deleteOrder = (data) => {return request({url: /api/Order/deleteOrder,method: post,data}) }HTML左菜单<template slot="menuLeft"><el-button size="small" typ…

余弦函数的希尔伯特变换过程推导

做例2.11.1的第一个公式&#xff0c;我懒得手写了&#xff0c;直接画图了。 我曾经百度了coswt的傅里叶变换的公式&#xff0c;发现百度的公式和我换元的不一样&#xff0c;我还以为我错了&#xff0c;大致考虑了傅里叶变换的过程之后&#xff0c;我确定&#xff0c;百度的余弦…

搭建日志系统ELK(二)

搭建日志系统ELK(二) 架构设计 在搭建以ELK为核心的日志系统时&#xff0c;Logstash作为日志采集的核心组件&#xff0c;负责将各个服务的日志数据采集、清洗、过滤。然而缺点也很明显&#xff1a; 占用较多的服务器资源。配置复杂&#xff0c;学习曲线陡峭。处理大数据量时…

通过阿里云OOS“快速设置”快速配置多地域运维任务

1. 介绍 什么是系统运维管理OOS? 系统运维管理OOS&#xff08;CloudOps Orchestration Service&#xff09;是阿里云提供的一项云上自动化运维服务&#xff0c;旨在帮助用户实现运维任务的自动化管理和执行。通过OOS&#xff0c;用户可以设计模板来详细定义执行任务的内容、…

软件开发人员如何有效提问

引子&#xff1a;小张的困惑 小张是一名刚入职的大数据开发工程师&#xff0c;满怀热情地加入了一个处理城市交通数据的项目。然而&#xff0c;面对复杂的数据流和繁琐的ETL过程&#xff0c;他很快就遇到了瓶颈。每次在团队会议上&#xff0c;他都不知道该如何准确地表达自己的…

通过Java实现插入排序(直接插入,希尔)与选择排序(直接选择,堆排)

目录 &#xff08;一&#xff09;插入排序 1.直接插入排序 &#xff08;1&#xff09;核心思想&#xff1a; &#xff08;2&#xff09;代码实现&#xff08;以从小到大排序为例&#xff09;&#xff1a; &#xff08;3&#xff09;代码分析&#xff1a; 2.希尔排序&#xff08…