freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

sonarqube使用指北(一)- 基于docker的安装部署
2024-05-15 10:53:46

一、前言

最近出于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,版本过高会存在兼容性问题。
图片.png

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
图片.png
初次登录会要求你更改密码建议,更换一个复杂度高的密码,因为平台会涉及公司代码信息,如果泄漏会导致严重数据泄露,安全措施必须要做好。
到这里sonarqube就已经被成功安装了,下一次会具体介绍如何完成一次简单的本地扫描。

有问题欢迎随时交流~

# 数据安全 # 代码安全 # SonarQube # 静态代码检测
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录