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

news2024/12/25 1:15:49

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=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 方式运行

启动顺序

  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: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) 创建项目

  • 新建一个 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 源方式安装 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

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

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

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

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/442307.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

多通道振弦传感器无线采集仪 数字传感器起始通道分配

多通道振弦传感器无线采集仪 数字传感器起始通道分配 寄存器 DS_CHNUM(299)用于设置读取到的数字传感器数据从哪个通道开始占用,默认为 1。 单个数字传感器占用的通道数量与具体的传感器类型有关,例如:每个激光测距仪会占用 1 个通道&#xf…

Linux Shell 实现一键部署二进制go+caddy+filebrowser

filebrowser filebrowser 是一个使用go语言编写的软件,功能是可以通过浏览器对服务器上的文件进行管理。可以是修改文件,或者是添加删除文件,甚至可以分享文件,是一个很棒的文件管理器,你甚至可以当成一个网盘来使用。…

HCIE Datacom认证学什么内容

什么HCIE 什么是HCIE?HCIE的全称是Huawei Certified ICT Expert(华为认证ICT技术专家)。 华为认证是行业中最严谨的认证,含金量与行业认可度都较高。在众多的IT行业认证中,HCIE被誉为“网络界的博士”。 华为认证HCI…

深度学习 - 41.Word2vec、EGES 负采样实现 By Keras

目录 一.引言 二.实现思路 1.样本构建 2.Word2vec 架构 3.EGES 架构 4.基于 NEG 的 Word2vec 架构 三.Keras 实现 Word2vec 1.样本构建 2.模型构建 3.向量获取 四.keras 实现 EGES 1.样本构建 2.模型构建 3.Dot Layer 详解 3.1 init 方法 3.2 call 方法 3.3 完…

4月18号软件更新资讯合集

ModStartCMS v6.2.0,VIP 权益配置功能、界面 UI 优化升级 ModStart 是一个基于 Laravel 模块化极速开发框架。模块市场拥有丰富的功能应用,支持后台一键快速安装,让开发者能快的实现业务功能开发。 系统完全开源,基于 Apache 2.…

4月19号软件更新资讯合集....

JavaWeb 微服务前后端分离 EurekaEleVue 版 v1.5.0 发布 v1.5.0 更新如下: 1、解决 token 过期无法跳转至登录页的问题; 2、授权服务进行重构与优化; 一款 Java 语言基于 SpringCloud、SpringSecurity、OAuth2、Eureka、Vue、ElementUI、…

Docker实战笔记1-基础

转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/130181636 本文出自【赵彦军的博客】 文章目录 官网下载安装安装Docker 镜像镜像分层存储 容器常用命令docker infodocker imagesdocker versiondocker ps :查看容器docker ps -a查看容…

如何检查设置的IP是否有效?Storm proxies动态代理IP好用吗?

检查设置的IP是否有效可以通过以下几种方式: 发起网络请求:可以使用HTTP客户端库(例如Python的Requests库)或者命令行工具(例如curl)来发起网络请求,使用设置的IP作为代理IP,然后查看…

读SQL进阶教程笔记12_地址与三值逻辑

1. SQL和数据库都在极力提升数据在表现层的抽象度,以及对用户隐藏物理层的概念 2. 关系模型是为摆脱地址而生的 2.1. “地址”不仅包括指针操作的地址,还包括数组下标等 3. 一个优雅的数据结构胜过一百行杂耍般的代码 3.1. 精巧的数据结构搭配笨拙的…

数据结构入门——顺序表(保姆级教程,增,删,改,查)

1.什么是顺序表 1.顺序表:可动态增长的数组,要求数据是连续存储的 2.顺序表的定义: 静态顺序表:使用定长数组存储元素(缺点:小了不够用,大了还浪费) 动态顺序表:可根…

744. 寻找比目标字母大的最小字母

给你一个字符数组 letters,该数组按非递减顺序排序,以及一个字符 target。letters 里至少有两个不同的字符。 返回 letters 中大于 target 的最小的字符。如果不存在这样的字符,则返回 letters 的第一个字符。 示例 1: 输入: le…

3. VBA术语

在本章中,将介绍常用的Excel VBA术语。这些术语将在很多的模块中使用,因此理解其中的每一个术语都很重要。 3.1 模块 模块是编写代码的区域。如下图中,这是一个新的工作簿,因此没有任何模块。 要插入模块,请导航到插…

Cell--瘤内微生物将开辟新疗法

2023年4月13日,弗雷德哈钦森癌症中心的微生物学家Susan Bullman教授在《Cell》杂志发表了关于肿瘤内微生物群的评论。 微生物群是肿瘤微环境的一个组成部分 在患者的肿瘤内部,恶性细胞处在一个复杂的生态系统中,周围是正常细胞的网络&#xf…

socks5与http代理如何转化?stormproxies怎么解决?

Socks5和HTTP代理之间可以通过一些工具或软件进行转化,具体的方法如下: 使用ProxyCap:ProxyCap是一款常用的代理工具,可以将Socks5代理转化为HTTP代理。在ProxyCap中设置Socks5代理的服务器地址和端口,然后在本地设置H…

Java应用高性能的方法和思路

Java应用高性能的方法和思路 目录概述需求: 设计思路实现思路分析 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy,skip hardness,make a better result,wait for change,challenge …

软件测试基础概念

1.软件测试的生命周期 需求分析-》测试计划-》测试设计-》测试开发-》测试执行-》测试评估 需求分析:分析需求是否合理和正确 计划:确定软件由谁测试? 什么时候开始测试,什么时候结束测试 测试那些模块 测试设计和测试开发阶段:…

4.19~20(总结)

项目越到后面,推进越难,已经到了发送消息这里了,这个做完,基本上也就完成得七七八八了,后面只需要优化了,但是现在卡在这里就还是有点难搞。 首先,我的界面已经成这样了。 我的打算是这样可以搜…

C++基础知识-2

本期我们接着来讲C的基础知识,没有看过的朋友可以先看看上一期 (16条消息) C基础知识-----命名空间_KLZUQ的博客-CSDN博客 目录 4.缺省参数 5.函数重载 6.引用 7.内联函数 8.auto关键字(C11) 9. 基于范围的for循环(C11) 10.指针空值nul…

算法记录 | Day37 贪心算法

738.单调递增的数字 思路: 1.一旦出现strNum[i - 1] > strNum[i]的情况(非单调递增),首先想让strNum[i - 1]–,然后strNum[i]给为9,这样这个整数就是89,即小于98的最大的单调递增整数。 2…

初始VUE

目录 什么是vue vue的特点 前置js基础知识 vue2 安装vue devtools 搭建开发环境 Vue对象的el及data写法 el的处理 data的处理 特点 什么是js表达式,js代码(语句) vue脚手架(vue cli) 使用说明 具体步骤 …