写点什么

HummerRisk V1.0 开发手册 (微服务版)

作者:HummerCloud
  • 2023-04-21
    北京
  • 本文字数:4554 字

    阅读完需:约 15 分钟

HummerRisk 是开源的云原生安全平台,以非侵入的方式解决云原生环境的安全和治理问题。核心能力包括混合云的安全治理和容器云安全检测。

本文将介绍 HummerRisk 1.0 以后的开发准备工作。

v1.0.0 以后的版本,代码在 dev 分支。欢迎大家在 dev 开发分支提交 pr 。

项目结构

1. 系统模块


2. 系统需求

  • JDK >= 17 (推荐 17 版本)

  • Mysql >= 8.0 (推荐 8.0.32 版本)

  • Maven >= 3.6 (推荐 3.6.3 版本)

  • Node >= 16.1 (推荐 16.1.0 版本)

  • Redis >= 6.2 (推荐 6.2.10 版本)

  • nacos >= 2.2 (推荐 2.2.0 版本)

  • sentinel >= 1.6.0

3. 技术选型

1)系统环境

  • Java EE 17

  • Servlet 3.0

  • Apache Maven 3

2)主框架

  • Spring Boot 3.0.0

  • Spring Cloud 2022.0.1

  • Spring Framework 6.0.0

  • Spring Security 6.0.0

3)持久层

  • Apache MyBatis 3.5.x

  • Hibernate Validation 6.0.x

  • Alibaba Druid 1.2.x

4)视图层

  • Vue 2.6.x

  • Axios 0.21.0

  • Element 2.15.x

4. 系统端口

  • hmr-ui [80]

  • hmr-flyway [9000]

  • hmr-gateway [8080]

  • hmr-auth [9200]

  • hmr-system [9300, 9301, 8001]

  • hmr-cloud [9400, 9401, 8002]

  • hmr-k8s [9500, 9501, 8003]

  • hmr-monitor [9100]

  • hmr-mysql [3306]

  • hmr-nacos [8848, 9848]

  • hmr-redis [6379]

  • hmr-job [8084]


配置开发环境

1. 环境准备

后端

HummerRisk 后端使用了 Java 语言的 Spring Cloud 框架,并使用 Maven 作为项目管理工具。开发者需要先在开发环境中安装 JDK 17 及 Maven。

前端

HummerRisk 前端使用了 Vue.js 作为前端框架,ElementUI 作为 UI 框架,并使用 npm 或 yarn 作为包管理工具。开发者请先下载 Node.js 或 Yarn 作为运行环境,IDEA 用户建议安装 Vue.js 插件,便于开发。

安装 npm 或 yarn

进入网站https://nodejs.org/en/download

https://yarn.bootcss.com/docs/install, 选择相应的安装包进行安装即可。

相关组件

  • nacos: https://nacos.io/zh-cn/docs/quick-start.html

  • redis: https://redis.io/

  • xxl-job: HummerRisk/xxl-job

2. 初始化配置

数据库初始化

HummerRisk 使用 MySQL 数据库,推荐使用 MySQL 8.0 版本。同时 hummerrisk 对数据库部分配置项有要求,请参考下附的数据库配置,修改开发环境中的数据库配置文件

[mysqld]default-storage-engine=INNODBlower_case_table_names=1table_open_cache=128max_connections=2000max_connect_errors=6000innodb_file_per_table=1innodb_buffer_pool_size=1Gmax_allowed_packet=1Gslave_max_allowed_packet=1Gtransaction_isolation=READ-COMMITTEDinnodb_flush_method=O_DIRECTinnodb_lock_wait_timeout=1800innodb_flush_log_at_trx_commit=0sync_binlog=0sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTIONskip-name-resolve
复制代码


注意:Windows 系统数据库初始化配置应删除 innodb_flush_method 参数,请参考文章。

https://bugs.mysql.com/bug.php?id=40757

请参考文档中的建库语句创建 HummerRisk 使用的数据库,HummerRisk 服务启动时会自动在配置的库中创建所需的表结构及初始化数据。

CREATE DATABASE `hummer_config` /*!40100 DEFAULT CHARACTER SET utf8mb4 */CREATE DATABASE `hummer_risk` /*!40100 DEFAULT CHARACTER SET utf8mb4 */
复制代码

3. 配置参数

HummerRisk 本地开发需要各种配置,请参考下面配置参数。

提示: 请自行将 HMR_MYSQL_HOST 等配置参数设置为自己的 MySQL 地址,以下每一项参数都可以在项目的 bootstrap.yml 配置文件或者 nacos 配置数据里找到。



hummer-flyway 如图所示,将各种配置信息拷贝到启动 IDEA 的环境变量中。(原理:因为首次启动项目,hummer-flyway 需要初始化 nacos 的数据,初始化之后 hummer-flyway 项目只要没有更新 flyway sql,就不再需要启动了)

# hummer-flyway 本地开发的各种配置HMR_NACOS_SERVER_ADDR=127.0.0.1;HMR_REDIS_HOST=127.0.0.1;HMR_REDIS_PORT=6379;HMR_REDIS_PASSWORD=;HMR_MYSQL_HOST=127.0.0.1;HMR_MYSQL_PORT=33060;HMR_MYSQL_DB_NACOS=hummer_config;HMR_MYSQL_DB=hummer_risk;HMR_MYSQL_USER=root;HMR_MYSQL_PASSWORD=root;HMR_XXL_JOB_ADDR=127.0.0.1
复制代码




hummer-auth、hummer-gateway、hummer-cloud、hummer-k8s、hummer-system、hummer-monitor 等项目如图所示,将各种配置信息拷贝到启动 IDEA 的环境变量中。

# hummer-auth、hummer-gateway、hummer-cloud、hummer-k8s、hummer-system、hummer-monitor 本地开发的各种配置HMR_NACOS_SERVER_ADDR=127.0.0.1;HMR_REDIS_HOST=127.0.0.1;HMR_REDIS_PORT=6379;HMR_REDIS_PASSWORD=;HMR_MYSQL_HOST=127.0.0.1;HMR_MYSQL_PORT=33060;HMR_MYSQL_DB=hummer_risk;HMR_MYSQL_USER=root;HMR_MYSQL_PASSWORD=root;HMR_XXL_JOB_ADDR=127.0.0.1;HMR_XXL_SYSTEM_ADDR=127.0.0.1;HMR_XXL_CLOUD_ADDR=127.0.0.1;HMR_XXL_K8S_ADDR=127.0.0.1
复制代码


代码运行

IDEA 方式运行

启动顺序

  1. 启动 mysql、nacos、redis

  2. 启动 hummer-flyway (第一次初始化数据启动一次,后面 flyway 无变化时,跳过此步骤)

  3. 启动 hummer-auth、hummer-gateway

  4. 启动 xxl-job

  5. 启动 hummer-cloud、hummer-k8s、hummer-system、hummer-ui、hummer-monitor(监控,本地开发可以不启动)

先启动本地组件

本地启动 mysql 8.0 (本地如果已经有 mysql 5.7,可以用 docker 启动 mysql 8.0)

docker pull mysql/mysql-server:latestdocker run -itd --name mysql -p 33060:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql/mysql-server
复制代码

本地启动 nacos (sh startup.sh -m standalone)

git clone https://github.com/alibaba/nacos.gitcd nacos/mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U  ls -al distribution/target/

// change the $version to your actual pathcd distribution/target/nacos-server-$version/nacos/binunzip nacos-server-$version.zip 或者 tar -xvf nacos-server-$version.tar.gz// 修改数据库配置,连接本地 mysqlvim nacos/conf/application.properties

# 将如下配置进行修改

### Count of DB:db.num=1

### Connect URL of DB:spring.datasource.platform=mysqldb.url.0=jdbc:mysql://localhost:33060/hummer_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTCdb.user=rootdb.password=root

flyway.enabled=true
复制代码


本地启动 redis

redis-server --port 6379
复制代码

1) 创建项目

  • 新建一个 git 项目 输入主工程 git 地址: git@github.com:HummerRisk/HummerRisk.git。

  • 配置 maven 并引入 pom.xml。

  • 本地采用 jdk 17,打包镜像需要 tool.jar,但是本地开发不需要,所以注释这一段。


  • 在 HummerRisk 目录下,执行 mvn clean install。将 common 等基础包打到项目里。


2) 启动 hummer-flyway 项目

1. 在启动配置中添加 Spring Boot 启动项,直接启动 Spring Boot 项目即可。

2. 后端服务成功运行如下所示。


3) 启动 hummer-auth 项目

  1. 在启动配置中添加 Spring Boot 启动项,直接启动 Spring Boot 项目即可。

  2. 后端服务成功运行如下所示。


4) 启动 xxl-job

  1. 本地启动 xxl-job(定时任务,执行检测用,在启动 hummerrisk 其他微服务之前启动)

  2. 新建一个 git 项目 输入主工程 git 地址: git@github.com:HummerRisk/xxl-job.git。

git clone git@github.com:HummerRisk/xxl-job.git

# 配置参数放到环境变量HMR_NACOS_SERVER_ADDR=127.0.0.1;HMR_REDIS_HOST=127.0.0.1;HMR_REDIS_PORT=6379;HMR_REDIS_PASSWORD=;HMR_MYSQL_HOST=127.0.0.1;HMR_MYSQL_PORT=33060;HMR_MYSQL_DB=hummer_risk;HMR_MYSQL_USER=root;HMR_MYSQL_PASSWORD=root;HMR_XXL_JOB_ADDR=127.0.0.1;HMR_XXL_SYSYTEM_ADDR=127.0.0.1;HMR_XXL_CLOUD_ADDR=127.0.0.1;HMR_XXL_K8S_ADDR=127.0.0.1

# IDEA 启动 xxl-job 项目 XxlJobAdminApplication
复制代码



5) 启动其他项目

  1. 在启动配置中添加 Spring Boot 启动项,直接启动 Spring Boot 项目即可。

  2. 启动 hummer-gateway、hummer-cloud、hummer-k8s、hummer-system、hummer-monitor(监控,本地开发可以不启动)

  3. 服务成功运行如下所示。


6) 启动前端

进入 hummer-ui 目录,执行以下命令安装相关前端组件。

npm install
复制代码

进入到 hummer-ui 目录,执行以下命令启动前端服务。

npm run serve
复制代码

或者使用 yarn 启动

# 项目设置yarn install# 编译并最小化生产yarn build# 编译和热重装以进行开发yarn serve
复制代码

前端服务成功运行如下所示。


本地安装引擎组件

  • Cloud Custodian 作为云平台检测引擎,详细的相关操作,请参考 在线文档

  • Prowler 作为 AWS 检测引擎,详细的相关操作,请参考 在线文档

  • Trivy 作为云原生检测引擎 ,详细的相关操作,请参考 在线文档


1) 准备运行环境

初始化目录:

  • mkdir -p /opt/hummerrisk/conf

  • mkdir -p /opt/hummerrisk/image

  • mkdir -p /opt/hummerrisk/file

  • mkdir -p /opt/hummerrisk/trivy

  • mkdir -p /opt/hummerrisk/logs

2) 安装 Custodian

$ python3 -m venv custodian$ source custodian/bin/activate(custodian) $ pip install c7n# c7n 为必装, tools 下面使用哪个安装哪个(custodian) $ pip install -e tools/c7n_aliyun(custodian) $ pip install -e tools/c7n_huawei(custodian) $ pip install -e tools/c7n_tencent(custodian) $ pip install -e tools/c7n_baidu(custodian) $ pip install -e tools/c7n_azure(custodian) $ pip install -e tools/c7n_gcp(custodian) $ pip install -e tools/c7n_jdcloud(custodian) $ pip install -e tools/c7n_kube(custodian) $ pip install -e tools/c7n_openstack(custodian) $ pip install -e tools/c7n_qingcloud(custodian) $ pip install -e tools/c7n_ucloud(custodian) $ pip install -e tools/c7n_volc(custodian) $ pip install -e tools/c7n_vsphere(custodian) $ pip install -e tools/c7n_qiniu(custodian) $ pip install -e tools/c7n_ksyun……
复制代码

3) 安装 Prowler

#apt 源方式安装 Prowlersudo apt updatesudo apt install python3 python3-pip jq git zippip install detect-secrets==1.0.3curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"unzip awscliv2.zipsudo ./aws/installgit clone https://github.com/prowler-cloud/prowler
复制代码

4) 安装 Trivy

$ sudo vim /etc/yum.repos.d/trivy.repo[trivy]name=Trivy repositorybaseurl=https://aquasecurity.github.io/trivy-repo/rpm/releases/$releasever/$basearch/gpgcheck=0enabled=1$ sudo yum -y update$ sudo yum -y install trivy
复制代码

镜像打包(推荐)

源码中包含 Dockerfile 文件,建议将项目打包成镜像运行,进入 docker 目录,用户可以替换自己的 Dockerfile 研发版本。


其他注意事项

内置示例数据以 flyway 的形式在 HummerRisk 启动时自动插入到了 MySQL 数据库中,在源码运行的情况下可自动初始化获取内置检测规则等数据;

关于 HummerRisk

HummerRisk 是开源的云原生安全平台,以非侵入的方式解决云原生的安全和治理问题。核心能力包括混合云的安全治理和 K8S 容器云安全检测。

GitHub 地址:https://github.com/HummerRisk/HummerRisk

Gitee 地址:https://gitee.com/hummercloud/HummerRisk


发布于: 刚刚阅读数: 6
用户头像

HummerCloud

关注

还未添加个人签名 2022-09-07 加入

还未添加个人简介

评论

发布
暂无评论
HummerRisk V1.0 开发手册(微服务版)_开源_HummerCloud_InfoQ写作社区