Manual de desenvolvimento do HummerRisk V1.0 (edição de microsserviço)

O HummerRisk é uma plataforma de segurança nativa da nuvem de código aberto que aborda de forma não intrusiva questões de segurança e governança em ambientes nativos da nuvem. Os principais recursos incluem governança de segurança de nuvem híbrida e detecção de segurança de nuvem de contêiner.

Este artigo apresentará as preparações de desenvolvimento para o HummerRisk 1.0 e posteriores.

Para versões posteriores à v1.0.0, o código está na ramificação dev. Todos são bem-vindos a enviar pr no ramo de desenvolvimento dev.

estrutura do projeto

1. Módulo do sistema

 

2. Requisitos do sistema

  • JDK >= 17 (a versão 17 é recomendada)
  • Mysql >= 8.0 (a versão 8.0.32 é recomendada)
  • Maven >= 3.6 (a versão 3.6.3 é recomendada)
  • Nó >= 16.1 (a versão 16.1.0 é recomendada)
  • Redis >= 6.2 (a versão 6.2.10 é recomendada)
  • nacos >= 2.2 (recomenda-se a versão 2.2.0)
  • sentinela >= 1.6.0

3. Seleção de tecnologia

1) Ambiente do sistema

  • Java EE 17
  • Servlet 3.0
  • Apache Maven3

2) Estrutura principal

  • Spring Boot 3.0.0
  • Spring Cloud 2022.0.1
  • Spring Framework 6.0.0
  • Spring Security 6.0.0

3) Camada de persistência

  • Apache MyBatis 3.5.x
  • Validação de hibernação 6.0.x
  • Alibaba Druida 1.2.x

4) Visualizar camada

  • Vue 2.6.x
  • Axios 0.21.0
  • Elemento 2.15.x

4. Portas do sistema

  • hmr-ui [80]
  • hmr-flyway [9000]
  • gateway hmr [8080]
  • hmr-auth [9200]
  • sistema hmr [9300, 9301, 8001]
  • hmr-nuvem [9400, 9401, 8002]
  • hmr-k8s [9500, 9501, 8003]
  • monitor hmr [9100]
  • hmr-mysql [3306]
  • hmr-nacos [8848, 9848]
  • hmr-redis [6379]
  • hmr-job [8084]

Configurar o ambiente de desenvolvimento

1. Preparação do ambiente

extremidade traseira

O back-end do HummerRisk utiliza a linguagem Java Spring Cloud framework e utiliza o Maven como ferramenta de gerenciamento de projetos. Os desenvolvedores precisam primeiro instalar o JDK 17 e o Maven no ambiente de desenvolvimento.

front-end

O front-end do HummerRisk usa Vue.js como framework front-end, ElementUI como framework UI e npm ou yarn como ferramenta de gerenciamento de pacotes. Os desenvolvedores devem primeiro baixar Node.js ou Yarn como ambiente operacional. Recomenda-se que os usuários do IDEA instalem o plug-in Vue.js para facilitar o desenvolvimento.

Instale o npm ou o fio

Entre no site https://nodejs.org/en/download

Ou https://yarn.bootcss.com/docs/install, selecione o pacote de instalação correspondente para instalar.

componentes relacionados

  • nacos: https://nacos.io/zh-cn/docs/quick-start.html
  • redis: https://redis.io/
  • xxl-job: HummerRisk/xxl-job

2. Configuração inicial

inicialização do banco de dados

HummerRisk usa banco de dados MySQL, a versão MySQL 8.0 é recomendada. Ao mesmo tempo, o hummerrisk possui requisitos para alguns itens de configuração do banco de dados. Consulte a configuração do banco de dados anexada abaixo para modificar o arquivo de configuração do banco de dados no ambiente de desenvolvimento.

[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

Nota: O parâmetro innodb_flush_method deve ser excluído na configuração de inicialização do banco de dados do sistema Windows, consulte o artigo.

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

Consulte a instrução de criação do banco de dados no documento para criar o banco de dados usado pelo HummerRisk. Quando o serviço HummerRisk iniciar, ele criará automaticamente a estrutura de tabela necessária e inicializará os dados na biblioteca configurada.

CREATE DATABASE `hummer_config` /*!40100 DEFAULT CHARACTER SET utf8mb4 */
CREATE DATABASE `hummer_risk` /*!40100 DEFAULT CHARACTER SET utf8mb4 */

3. Parâmetros de configuração

O desenvolvimento local do HummerRisk requer várias configurações, consulte os parâmetros de configuração abaixo.

Dicas: Defina os parâmetros de configuração como HMR_MYSQL_HOST para seu próprio endereço MySQL. Cada um dos parâmetros a seguir pode ser encontrado no arquivo de configuração bootstrap.yml do projeto ou nos dados de configuração nacos.

Conforme mostrado na figura, o hummer-flyway copia várias informações de configuração para as variáveis ​​de ambiente para iniciar o IDEA. (Princípio: Hummer-flyway precisa inicializar dados nacos porque o projeto é iniciado pela primeira vez. Após a inicialização, desde que o projeto hummer-flyway não atualize o flyway sql, ele não precisa mais ser iniciado)

# 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 e outros projetos são mostrados na figura. Copie várias informações de configuração para as variáveis ​​de ambiente para iniciar o 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

execução de código

Executar no modo IDEA

sequencia de inicialização

  1. Iniciar mysql, nacos, redis
  2. Inicie o hummer-flyway (comece uma vez para os primeiros dados de inicialização e pule esta etapa se não houver alteração no flyway posteriormente)
  3. Iniciar hummer-auth, hummer-gateway
  4. iniciar xxl-job
  5. Iniciar hummer-cloud, hummer-k8s, hummer-system, hummer-ui, hummer-monitor (monitoramento, desenvolvimento local não pode ser iniciado)

Inicie o componente local primeiro

Inicie o mysql 8.0 localmente (se você já possui o mysql 5.7 localmente, pode usar o docker para iniciar o 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

Iniciar nacos localmente (sh startup.sh -m autônomo)

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

Iniciar redis localmente

redis-server --port 6379

1) Crie um projeto

  • Crie um novo projeto git e insira o endereço git do projeto principal: [email protected]:HummerRisk/HummerRisk.git.
  • Configure o maven e importe o pom.xml.
  • O JDK 17 é usado localmente e o tool.jar é necessário para empacotar imagens, mas não para desenvolvimento local, então comente este parágrafo.

 

  • No diretório HummerRisk, execute mvn clean install. Empacote pacotes básicos como os comuns no projeto.

 

2) Inicie o projeto da hidrovia do hummer

1. Adicione o item de inicialização Spring Boot na configuração de inicialização e inicie o projeto Spring Boot diretamente.

2. O serviço de back-end é executado com êxito, conforme mostrado abaixo.

 

3) Inicie o projeto hummer-auth

  1. Adicione o item de inicialização Spring Boot na configuração de inicialização e inicie o projeto Spring Boot diretamente.
  2. O serviço de back-end é executado com êxito, conforme mostrado abaixo.

 

4) Iniciar xxl-job

  1. Iniciar xxl-job localmente (tarefa cronometrada, para detecção, iniciar antes de iniciar outros microsserviços do hummerrisk)
  2. Crie um novo projeto git e insira o endereço git do projeto principal: [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) Iniciar outros projetos

  1. Adicione o item de inicialização Spring Boot na configuração de inicialização e inicie o projeto Spring Boot diretamente.
  2. Iniciar hummer-gateway, hummer-cloud, hummer-k8s, hummer-system, hummer-monitor (monitoramento, desenvolvimento local não pode ser iniciado)
  3. O serviço é executado com sucesso, conforme mostrado abaixo.

 

6) Inicie o front-end

Entre no diretório hummer-ui e execute os seguintes comandos para instalar os componentes front-end relacionados.

npm install

Vá para o diretório hummer-ui e execute o seguinte comando para iniciar o serviço front-end.

npm run serve

Ou use fios para começar

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

O serviço de front-end é executado com êxito, conforme mostrado abaixo.

 

Instale os componentes do motor localmente

  • Cloud Custodian é usado como um mecanismo de detecção de plataforma de nuvem. Para operações relacionadas detalhadas, consulte a documentação on-line
  • O Prowler é usado como o mecanismo de detecção da AWS. Para operações relacionadas detalhadas, consulte a documentação on-line
  • O Trivy é usado como um mecanismo de detecção nativo da nuvem. Para operações detalhadas, consulte a documentação on-line

1) Prepare o ambiente operacional

Inicializar diretório:

  • mkdir -p /opt/hummerrisk/conf
  • mkdir -p /opt/hummerrisk/image
  • mkdir -p /opt/hummerrisk/arquivo
  • mkdir -p /opt/hummerrisk/trivy
  • mkdir -p /opt/hummerrisk/logs

2) Instalar o Custodiante

$ 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) Instale o 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) Instale o 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

Embalagem de imagem (recomendado)

O código-fonte contém o arquivo Dockerfile. É recomendável empacotar o projeto em uma imagem espelhada e executá-lo, entrar no diretório docker e os usuários podem substituir sua própria versão de desenvolvimento do Dockerfile.

 

outras considerações

Os dados de amostra integrados são inseridos automaticamente no banco de dados MySQL na forma de um flyway quando o HummerRisk é iniciado e podem ser inicializados automaticamente para obter dados como regras de detecção integradas quando o código-fonte está em execução;

Sobre HummerRisk

O HummerRisk é uma plataforma de segurança nativa da nuvem de código aberto que resolve problemas de segurança e governança nativa da nuvem de maneira não intrusiva. Os principais recursos incluem governança de segurança de nuvem híbrida e detecção de segurança de nuvem de contêiner K8S.

Endereço do GitHub: https://github.com/HummerRisk/HummerRisk

Endereço Gitee: https://gitee.com/hummercloud/HummerRisk

 

Acho que você gosta

Origin blog.csdn.net/wolaisongfendi/article/details/130284683
Recomendado
Clasificación