HummerRisk V1.0 開発マニュアル (マイクロサービス編)

HummerRisk は、クラウドネイティブ環境におけるセキュリティとガバナンスの問題に非侵入的に対処する、オープンソースのクラウドネイティブ セキュリティ プラットフォームです。コア機能には、ハイブリッド クラウド セキュリティ ガバナンスとコンテナ クラウド セキュリティ検出が含まれます。

この記事では、HummerRisk 1.0 以降の開発準備について紹介します。

v1.0.0 以降のバージョンの場合、コードは dev ブランチにあります。開発開発ブランチに PR を送信することは誰でも歓迎されます。

プロジェクト構造

1. システムモジュール

 

2. システム要件

  • JDK >= 17 (バージョン 17 を推奨)
  • Mysql >= 8.0 (バージョン 8.0.32 を推奨)
  • Maven >= 3.6 (バージョン 3.6.3 を推奨)
  • ノード >= 16.1 (バージョン 16.1.0 を推奨)
  • Redis >= 6.2 (バージョン 6.2.10 を推奨)
  • nacos >= 2.2 (バージョン 2.2.0 を推奨)
  • センチネル >= 1.6.0

3. 技術の選択

1) システム環境

  • Java EE17
  • サーブレット 3.0
  • Apache Maven 3

2) メインフレーム

  • スプリングブート 3.0.0
  • 春の雲 2022.0.1
  • Spring フレームワーク 6.0.0
  • Spring セキュリティ 6.0.0

3) 永続層

  • Apache MyBatis 3.5.x
  • Hibernate 検証 6.0.x
  • アリババドルイド 1.2.x

4) ビューレイヤー

  • Vue 2.6.x
  • アクシオス0.21.0
  • 要素 2.15.x

4. システムポート

  • hmr-ui [80]
  • HMR-フライウェイ [9000]
  • HMR-ゲートウェイ [8080]
  • HMR認証 [9200]
  • hmr システム [9300、9301、8001]
  • hmr-クラウド [9400、9401、8002]
  • hmr-k8s [9500、9501、8003]
  • hmr-モニター [9100]
  • hmr-mysql [3306]
  • hmr-ナコス [8848, 9848]
  • hmr-レディス [6379]
  • hmr-ジョブ [8084]

開発環境を構成する

1. 環境の準備

後部

HummerRisk のバックエンドは Java 言語 Spring Cloud フレームワークを使用し、プロジェクト管理ツールとして Maven を使用します。開発者は、まず開発環境に JDK 17 と Maven をインストールする必要があります。

フロントエンド

HummerRisk のフロントエンドは、フロントエンド フレームワークとして Vue.js、UI フレームワークとして ElementUI、パッケージ管理ツールとして npm または Yarn を使用します。開発者はまず動作環境として Node.js または Yarn をダウンロードする必要がありますが、IDEA ユーザーは開発を容易にするために Vue.js プラグインをインストールすることをお勧めします。

npmまたはyarnをインストールする

Web サイト https://nodejs.org/en/download にアクセスします

または https://yarn.bootcss.com/docs/install で、インストールする対応するインストール パッケージを選択します。

関連コンポーネント

  • ナコス: https://nacos.io/zh-cn/docs/quick-start.html
  • redis: https://redis.io/
  • xxl-ジョブ: ハマーリスク/xxl-ジョブ

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

注: innodb_flush_method パラメータは、Windows システム データベースの初期化設定で削除する必要があります。記事を参照してください。

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 を開始します (最初の初期化データのために 1 回開始し、後でフライウェイに変更がない場合はこのステップをスキップします)
  3. hummer-auth、hummer-gateway を開始します
  4. xxlジョブを開始します
  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 をローカルで起動します (shstartup.sh -m スタンドアロン)

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 ディレクトリで、mvn clean install を実行します。commonなどの基本的なパッケージをプロジェクトに詰め込みます。

 

2) ハマーフライウェイプロジェクトを開始する

1. Spring Boot スタートアップ項目をスタートアップ構成に追加し、Spring Boot プロジェクトを直接開始します。

2. 以下に示すように、バックエンド サービスが正常に実行されます。

 

3) hummer-auth プロジェクトを開始する

  1. Spring Boot スタートアップ項目をスタートアップ構成に追加し、Spring Boot プロジェクトを直接開始します。
  2. 以下に示すように、バックエンド サービスは正常に実行されます。

 

4) xxl-ジョブを開始します

  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

 

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 install
# 编译并最小化生产
yarn build
# 编译和热重装以进行开发
yarn serve

以下に示すように、フロントエンド サービスは正常に実行されます。

 

エンジン コンポーネントをローカルにインストールする

  • Cloud Custodian はクラウド プラットフォームの検出エンジンとして使用されます。詳細な関連操作については、オンライン ドキュメントを参照してください。
  • AWS 検出エンジンとして Prowler が使用されており、関連する詳細な操作については、オンライン ドキュメントを参照してください。
  • 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) カストディアンのインストール

$ 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) プラウラーをインストールする

#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 の起動時にフライウェイの形式で MySQL データベースに自動的に挿入され、ソース コードの実行時に組み込みの検出ルールなどのデータを取得するために自動的に初期化できます。

ハマーリスクについて

HummerRisk は、クラウドネイティブのセキュリティとガバナンスの問題を非侵入的な方法で解決する、オープンソースのクラウドネイティブ セキュリティ プラットフォームです。コア機能には、ハイブリッド クラウド セキュリティ ガバナンスと K8S コンテナ クラウド セキュリティ検出が含まれます。

GitHub アドレス: https://github.com/HummerRisk/HummerRisk

Gitee アドレス: https://gitee.com/hummercloud/HummerRisk

 

おすすめ

転載: blog.csdn.net/wolaisongfendi/article/details/130284683