sonarqube使用指北(一)- 基于docker的安装部署

2024-06-03 357 0

一、前言

最近出于SDL的安全需求,打算部署一个静态代码扫描工具,出于通用性和可靠性的考虑,选择sonarqube来执行静态代码扫描。
SonarQube 是一个用于进行代码质量管理的开源平台,它提供了代码静态分析、代码检查、代码覆盖率等功能。下面是 SonarQube 的一些优缺点:
优点:

  • 全面的代码质量管理: 提供了全面的代码质量管理功能,包括代码静态分析、代码规范检查、代码重复检测、单元测试覆盖率等。

  • 支持多种变成语言。

  • 易于集成: SonarQube 可以与持续集成工具(如 Jenkins、GitLab CI)以及代码版本控制系统(如 Git、SVN)进行集成,使得代码质量分析可以自动化执行。

  • 详细的报告和指标: SonarQube 提供了详细的报告和指标,包括代码质量、安全漏洞、技术债务等方面的数据。

  • 活跃的社区支持: SonarQube用户基数大, 有一个活跃的社区,提供了丰富的文档、教程和插件。

缺点:

  • 资源消耗较大: 进行代码质量分析需要消耗一定的系统资源,尤其是对大型项目和复杂代码库来说,可能会占用较多的内存和处理器资源。

  • 配置复杂: SonarQube 的配置比较复杂,需要对各种规则和插件进行合理的配置,以适应项目的需求和团队的开发规范。

  • 部分功能需要付费: SonarQube 的企业版提供了一些高级功能和支持服务,但需要付费购买。如果只需要一些基础实现还是足够了。

二、安装部署

由于docker部署的方便性,本文也会采用docker部署的方式来进行。
下文中的操作都是基于centos7来执行的。

2.1 基础系统配置

主机:4核8g
注:如果代码项目不大的话可以使用4g内存,程序的性能瓶颈主要出现在内存上,如果内存不够会导致扫描异常结束,提示在执行扫描时提示java占用内存不足。
docker:Docker Engine - Community -25.0.3
注:使用docker安装需要使用docker compose ,请确保自己安装的docker版本包含compose组件。
在centos7的环境下,直接使用yum安装的docker版本过低,可能会导致安装异常。需要自己指定源安装,相关教程在此不多提及。
虚拟内存:vm.max_map_count=262144

vim /etc/sysctl.conf # 手动设置最大虚拟内存
vm.max_map_count=262144   #在最下方添加该配置并保存退出

注:如果未配置该项的话,会导致docker安装时报错:max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144] ,原因就是默认的虚拟内存过小,通常只有65530

2.2 docker配置+安装

2.2.1 拉取相关镜像

docker pull postgres:12
docker pull sonarqube:lts-community   #最稳定的社区版

注:这里的postgres需要指定安装版本为12,默认拉取镜像为15,版本过高会存在兼容性问题。
sonarqube使用指北(一)- 基于docker的安装部署插图

2.2.2 创建数据卷

mkdir -p /data/docker/sonarqube/{postgresql,postgresql_data,sonarqube_extensions,sonarqube_logs,sonarqube_data}
chmod 777 -R /data/sonarqube/

注:如果这里没有chmod权限会导致docker启动时提示权限不足。

sonarqube 容器报错java.lang.IllegalStateException: Unable to access 'path.data' (/opt/sonarqube/data/es7)

您也可以使用
docker volume create sonarqube_extensions 来直接创建卷

2.2.3 创建docker-compose-sonarqube.yml 作为启动文件

version: "3"
services:
  sonarqube:
    image: sonarqube:lts-community
    restart: always
    container_name: sonarqube
    depends_on:
      - postgresdb
    environment:
      TZ: Asia/Shanghai
      SONAR_JDBC_URL: jdbc:postgresql://postgresdb:5432/sonar
      SONAR_JDBC_USERNAME: sonar
      SONAR_JDBC_PASSWORD: sonar
    volumes:
      - /data/docker/sonarqube/sonarqube_data:/opt/sonarqube/data
      - /data/docker/sonarqube/sonarqube_extensions:/opt/sonarqube/extensions
      - /data/docker/sonarqube/sonarqube_logs:/var/log/sonarqube/logs
      - /etc/localtime:/etc/localtime:ro
    ports:
      - 9000:9000
  postgresdb:
    image: postgres:12
    restart: always
    container_name: postgres
    ports:
      - 5432:5432
    environment:
      TZ: Asia/Shanghai
      POSTGRES_USER: sonar
      POSTGRES_PASSWORD: sonar
      POSTGRES_DB: sonar
    volumes:
      - /data/docker/sonarqube/postgresql:/var/lib/postgresql
      - /data/docker/sonarqube/postgresql_data:/var/lib/postgresql/data
      - /etc/localtime:/etc/localtime:ro

如果在上一步中直接使用了docker 卷 这里的配置可以写成:

volumes:
      -sonarqube_data:/opt/sonarqube/data
      -sonarqube_extensions:/opt/sonarqube/extensions
      -sonarqube_logs:/var/log/sonarqube/logs

其他几个卷可以类推,在此就不一一列举了。如果提示权限问题,可以考虑上面的手动创建卷的方式。

2.2.4 正式部署

在相关配置都正常完成的前提下,我们在yml目录下执行

docker compose up -d   #低版本docker 请使用docker-compose up -d

成功启动后,访问 url:9000 即可。
默认账号密码 admin/admin
sonarqube使用指北(一)- 基于docker的安装部署插图1
初次登录会要求你更改密码建议,更换一个复杂度高的密码,因为平台会涉及公司代码信息,如果泄漏会导致严重数据泄露,安全措施必须要做好。
到这里sonarqube就已经被成功安装了,下一次会具体介绍如何完成一次简单的本地扫描。

有问题欢迎随时交流~


4A评测 - 免责申明

本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。

不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。

本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!

程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。

侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)

相关文章

苹果试图保护你的隐私,OpenAI可能做不到
Shuffle:一款完全自动化的安全栈增强平台
如何使用CODASM编码Payload并降低熵值
SessionExec:一款针对会话安全的安全命令测试工具
Arkime:一款大规模数据包捕获和索引数据库系统
从蓝队流量角度分析Shiro-550反序列化漏洞

发布评论