SeeCode Audit Community Edition 帮助文档

概述

SeeCode Audit 是一套代码审计管理系统,该系统需要结合 seecode-scanner 工具一起使用。 SeeCode Audit 是使用 Python3 + Django2 + MySQL + Redis/Memcached + Redis/RabbitMQ 技术搭建。

SeeCode Audit 其最早的思路来源于 《代码自动化审计系统的建设(上)》《代码自动化审计系统的建设(下)》 文章,经过不断的打磨优化最后开发出 SeeCode Audit 系统,并进行开源。


1. 功能特点

1.1 认证与授权

  • 支持 SSO、Django authentication 等认证方式
  • 支持基于 Django 框架的 RBAC 访问控制
  • 支持基于 JWT Token 的 API 接口认证方式

1.2 项目与应用管理

  • 支持线上(GitLab)项目信息同步与管理
  • 支持项目时间轴历史记录与查看
  • 支持项目应用创建,可为同一个项目不同分支创建不同应用
  • 支持对应用的大小、开发语言、代码行数、依赖组件、组件版本的分析
  • 支持依赖组件按照条件导出功能
  • 支持对应用健康风险:危险、警告、安全的半定量评估
  • 支持离线 ZIP 包项目扫描
  • 支持扫描任务的 API 触发与手动触发方式

1.3 自定义扫描模板

  • 支持扫描模板的高度自定义,同一个引擎可包含不同的扫描策略(规则、插件)
  • 支持扫描引擎参数自定义
  • 支持扫描引擎执行超时设定
  • 支持扫描模板的版本控制

1.4 灵活的扫描规则与插件

  • 支持基于目录、文件、内容、组件等方式的自定义规则
  • 支持基于正则表达式的内容检测方式
  • 支持代码风格、坏味道、漏洞等不同类型设定
  • 支持 Python 插件形式的检测方式
  • 支持对扫描策略(规则、插件)的风险评分
  • 支持扫描策略(规则、插件)的版本控制
  • 支持项目依赖组件对已知漏洞识别能力

1.5 漏洞风险管理

  • 支持对漏洞的生命周期管理
  • 支持漏洞处理流程记录(历史操作记录)
  • 支持漏洞文件提交作者、邮箱地址的分析
  • 支持漏洞代码片段截取功能
  • 支持漏洞位置行的高亮显示功能
  • 支持漏洞关键信息的取证功能

1.6 扫描节点监控管理

  • 支持扫描节点的状态监控
  • 支持软件升级包在线打包、版本发布
  • 支持软件升级包的历史记录自动生成与历史记录查看
  • 使用 RSA 非对称加密方式,对节点间传输内容进行加密

1.7 扫描引擎特点

  • 完成 65% 的代码单元测试覆盖率,保证程序代码健壮
  • 完成 SonarScanner、RuleScanner、PluginScanner 引擎的功能测试,来保证程序正常运行
  • 提供命令行接口,并可通过命令行接口对线上项目、本地项目进行扫描
  • 支持软件升级包的自动升级与规则热加载
  • 支持扫描任务失败时的日志回传功能
  • 支持命令行下工具自检
  • 支持 Docker 部署

2. 系统设计

_images/img1.png

2.1 存储层

存储服务主要用于对扫描任务的日志、扫描结果、离线项目 zip 包、加密升级包进行存储,其形式可为 FTP、AWS 或其他云存储服务(由于测试环境有限目前只支持 FTP)。

2.2 Audit 服务端

Audit 服务端是 UI 前台系统,用于管理 SeeCode Audit 中的整体功能,其中包括 API 接口服务、项目管理、任务管理、引擎管理、节点管理、系统管理等功能。

2.3 中间件层

在生产环境下可使用 Memcached 做为缓存,使用 RabbitMQ 做为消息队列;测试与开发环境可以使用 Redis 代替以上服务。

2.4 Scan 扫描端

使用 seecode-scanner 作为扫描节点,并可水平扩展,详细参考请查看:https://seecode-scanner.readthedocs.io/en/latest/


3. 部署说明

3.1 开发/测试环境

  • Python3 + Django2
  • 数据库:MySQL
  • 中间件:Redis、FTP

Note

搭建系统前请确保 MySQL、Redis、FTP 等服务已安装并启动。

依赖安装

$ # 使用 virtualenv
$ virtualenv . && source bin/activate
$ pip isntall -r requirements/dev.txt
$ # 安装 seecode-scanner
$ pip install https://github.com/seecode-audit/seecode-scanner/archive/1.0.0.zip

系统搭建

$ # 下载 seecode-audit 代码
$ git clone git@github.com:seecode-audit/seecode-audit.git

创建 seecode_db_ce 数据库, 执行 extras/db/seecode_db_ce_struct.sql、 extras/db/seecode_db_ce_data.sql 脚本:

$ create database seecode_db_ce default character set utf8mb4 collate utf8mb4_unicode_ci;

启动服务

运行 Web 服务,成功后访问 http://127.0.0.1:8080, 账号/密码 root/1qaz!QAZ

$ make runserver

启动 GitLab 同步服务:

$ celery -A seecode.celeryctl.celery_app beat -l info -Q gitlab

3.2 生产环境部署

  • Python3 + Django2 + CentOS 7
  • 数据库:MySQL 集群
  • 中间件:Memcached、RabbitMQ、FTP/AWS/其他云存储

Note

搭建系统前请确保 Nginx、MySQL、Memcached、RabbitMQ、FTP 等服务已安装并启动。

依赖安装

创建 seecode 账号

$ sudo useradd -m -s /bin/bash seecode && passwd seecode

切换 seecode 账号,开始搭建系统

$ # 创建部署目录
$ sudo mkdir -p /usr/local/seecode && cd /usr/local/seecode
$ # 设置部署目录权限
$ sudo chown seecode:seecode /usr/local/seecode
$ # 拉取线上代码
$ git clone git@github.com:seecode-audit/seecode-audit.git && cd seecode-audit
$ # 安装依赖
$ pip isntall -r requirements/prod.txt
$ # 安装 seecode-scanner
$ pip install https://github.com/seecode-audit/seecode-scanner/archive/1.0.0.zip

配置系统

添加 nginx 配置

$ sudo cp extras/conf/nginx.conf /etc/nginx/conf.d/seecode.conf

添加 supervisord 配置

$ sudo cp extras/conf/supervisord.conf /etc/supervisord.conf

添加 seecode 配置

$ sudo cp extras/conf/seecode.yml /etc/seecode.yml

修改 RSA 的公钥与私钥:

$ vim seecode/libs/core/rsaencrypt.py

初始化系统

创建 seecode_db_ce 数据库, 执行 extras/db/seecode_db_ce_struct.sql、 extras/db/seecode_db_ce_data.sql 脚本:

$ create database seecode_db_ce default character set utf8mb4 collate utf8mb4_unicode_ci;

登陆系统,配置 GitLab、配置 SonarQube。

运行系统

$ supervisord -c /etc/supervisord.conf >/dev/null 2>&1 &