天天看點

HummerRisk V1.0 開發手冊(微服務版)

作者:HummerCloud

HummerRisk 是開源的雲原生安全平台,以非侵入的方式解決雲原生環境的安全和治理問題。核心能力包括混合雲的安全治理和容器雲安全檢測。

本文将介紹HummerRisk 1.0以後的開發準備工作。

v1.0.0 以後的版本,代碼在 dev 分支。歡迎大家在 dev 開發分支送出 pr 。

項目結構

1. 系統子產品

HummerRisk V1.0 開發手冊(微服務版)

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 配置資料裡找到。

HummerRisk V1.0 開發手冊(微服務版)
HummerRisk V1.0 開發手冊(微服務版)

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           
HummerRisk V1.0 開發手冊(微服務版)
HummerRisk V1.0 開發手冊(微服務版)

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 位址: [email protected]:HummerRisk/HummerRisk.git。
  • 配置 maven 并引入 pom.xml。
  • 本地采用 jdk 17,打包鏡像需要 tool.jar,但是本地開發不需要,是以注釋這一段。
HummerRisk V1.0 開發手冊(微服務版)
  • 在 HummerRisk 目錄下,執行 mvn clean install。将 common 等基礎包打到項目裡。
HummerRisk V1.0 開發手冊(微服務版)

2) 啟動 hummer-flyway 項目

1. 在啟動配置中添加 Spring Boot 啟動項,直接啟動 Spring Boot 項目即可。

2. 後端服務成功運作如下所示。

HummerRisk V1.0 開發手冊(微服務版)

3) 啟動 hummer-auth 項目

  1. 在啟動配置中添加 Spring Boot 啟動項,直接啟動 Spring Boot 項目即可。
  2. 後端服務成功運作如下所示。
HummerRisk V1.0 開發手冊(微服務版)

4) 啟動 xxl-job

  1. 本地啟動 xxl-job(定時任務,執行檢測用,在啟動 hummerrisk 其他微服務之前啟動)
  2. 建立一個 git 項目 輸入主工程 git 位址: [email protected]:HummerRisk/xxl-job.git。
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           
HummerRisk V1.0 開發手冊(微服務版)

5) 啟動其他項目

  1. 在啟動配置中添加 Spring Boot 啟動項,直接啟動 Spring Boot 項目即可。
  2. 啟動 hummer-gateway、hummer-cloud、hummer-k8s、hummer-system、hummer-monitor(監控,本地開發可以不啟動)
  3. 服務成功運作如下所示。
HummerRisk V1.0 開發手冊(微服務版)

6) 啟動前端

進入 hummer-ui 目錄,執行以下指令安裝相關前端元件。

npm install           

進入到 hummer-ui 目錄,執行以下指令啟動前端服務。

npm run serve           

或者使用 yarn 啟動

# 項目設定
yarn install
# 編譯并最小化生産
yarn build
# 編譯和熱重裝以進行開發
yarn serve           

前端服務成功運作如下所示。

HummerRisk V1.0 開發手冊(微服務版)

本地安裝引擎元件

  • 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 研發版本。

HummerRisk V1.0 開發手冊(微服務版)

其他注意事項

内置示例資料以 flyway 的形式在 HummerRisk 啟動時自動插入到了 MySQL 資料庫中,在源碼運作的情況下可自動初始化擷取内置檢測規則等資料;

關于 HummerRisk

HummerRisk 是開源的雲原生安全平台,以非侵入的方式解決雲原生的安全和治理問題。核心能力包括混合雲的安全治理和K8S容器雲安全檢測。

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

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

HummerRisk V1.0 開發手冊(微服務版)

繼續閱讀