HummerRisk 是开源的云原生安全平台,以非侵入的方式解决云原生环境的安全和治理问题。核心能力包括混合云的安全治理和容器云安全检测。
本文将介绍HummerRisk 1.0以后的开发准备工作。
v1.0.0 以后的版本,代码在 dev 分支。欢迎大家在 dev 开发分支提交 pr 。
1. 系统模块
2. 系统需求
3. 技术选型
1)系统环境
2)主框架
3)持久层
4)视图层
4. 系统端口
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, 选择相应的安装包进行安装即可。
相关组件
2. 初始化配置
数据库初始化
HummerRisk 使用 MySQL 数据库,推荐使用 MySQL 8.0 版本。同时 hummerrisk 对数据库部分配置项有要求,请参考下附的数据库配置,修改开发环境中的数据库配置文件
[mysqld]
default-storage-engine=INNODB
lower_case_table_names=1
table_open_cache=128
max_connections=2000
max_connect_errors=6000
innodb_file_per_table=1
innodb_buffer_pool_size=1G
max_allowed_packet=1G
slave_max_allowed_packet=1G
transaction_isolation=READ-COMMITTED
innodb_flush_method=O_DIRECT
innodb_lock_wait_timeout=1800
innodb_flush_log_at_trx_commit=0
sync_binlog=0
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
skip-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 方式运行
启动顺序
先启动本地组件
本地启动 mysql 8.0 (本地如果已经有 mysql 5.7,可以用 docker 启动 mysql 8.0)
docker pull mysql/mysql-server:latest
docker 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.git
cd nacos/
mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U
ls -al distribution/target/
// change the $version to your actual path
cd distribution/target/nacos-server-$version/nacos/bin
unzip nacos-server-$version.zip 或者 tar -xvf nacos-server-$version.tar.gz
// 修改数据库配置,连接本地 mysql
vim nacos/conf/application.properties
# 将如下配置进行修改
### Count of DB:
db.num=1
### Connect URL of DB:
spring.datasource.platform=mysql
db.url.0=jdbc:mysql://localhost:33060/hummer_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user=root
db.password=root
flyway.enabled=true
本地启动 redis
redis-server --port 6379
1) 创建项目
2) 启动 hummer-flyway 项目
1. 在启动配置中添加 Spring Boot 启动项,直接启动 Spring Boot 项目即可。
3) 启动 hummer-auth 项目
4) 启动 xxl-job
git clone [email protected]: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) 启动其他项目
6) 启动前端
进入 hummer-ui 目录,执行以下命令安装相关前端组件。
npm install
进入到 hummer-ui 目录,执行以下命令启动前端服务。
npm run serve
或者使用 yarn 启动
# 项目设置
yarn install
# 编译并最小化生产
yarn build
# 编译和热重装以进行开发
yarn serve
前端服务成功运行如下所示。
1) 准备运行环境
初始化目录:
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 源方式安装 Prowler
sudo apt update
sudo apt install python3 python3-pip jq git zip
pip install detect-secrets==1.0.3
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
git clone https://github.com/prowler-cloud/prowler
4) 安装 Trivy
$ sudo vim /etc/yum.repos.d/trivy.repo
[trivy]
name=Trivy repository
baseurl=https://aquasecurity.github.io/trivy-repo/rpm/releases/$releasever/$basearch/
gpgcheck=0
enabled=1
$ sudo yum -y update
$ sudo yum -y install trivy
源码中包含 Dockerfile 文件,建议将项目打包成镜像运行,进入 docker 目录,用户可以替换自己的 Dockerfile 研发版本。
内置示例数据以 flyway 的形式在 HummerRisk 启动时自动插入到了 MySQL 数据库中,在源码运行的情况下可自动初始化获取内置检测规则等数据;
HummerRisk 是开源的云原生安全平台,以非侵入的方式解决云原生的安全和治理问题。核心能力包括混合云的安全治理和K8S容器云安全检测。
GitHub 地址:https://github.com/HummerRisk/HummerRisk
Gitee 地址:https://gitee.com/hummercloud/HummerRisk