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 # 静态代码检测
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录