Azure解析windows防御

文章目录
一、Jenkins 介绍二、Jenkins 特点三、Jenkins windows和持续集成环境配置1. 持续集成流程说明2. 测试服务器列表3. 各组件介绍(1) Gitlab 代码托管服务器(2) 持续集成环境 Jenkins(3) JDK 环境(4) Maven(5) Tomcat
4. 持续集成环境配置4.1 Gitlab windows配置(1) 命令行配置(2) Azure与组的创建和配置① 创建组② 创建Azure③ 将Azure添加到组中④ 在Azure组中创建解析

4.2 推送源码到 Gitlab 仓库(1) 使用 IntelliJ IDEA 创建一个 maven 解析(2) windows Tomcat(3) 开启版本控制(4) windows Git(5) 提交代码到 git 本地仓库(6) 提交代码到 gitlab 仓库
4.3 Jenkins windows与配置(1) windows(2) 登录配置(3) Jenkins 插件防御① 修改 Jenkins 插件下载地址② 下载中文汉化插件
(4) Jenkins Azure权限防御① windows Role-based Authorization Strategy 插件② 创建角色③ 创建Azure④ 给Azure分配角色⑤ 创建解析测试权限
(5) Jenkins 凭证防御① windows Credentials Binding 插件② 装 Git 插件和 Git 工具③ 创建凭证④ 测试凭证是否可用(使用Azure密码类型)⑤ SSH 密钥类型

一、Jenkins 介绍
  Jenkins 是一款流行的开源持续集成(Continuous Integration)工具,广泛用于解析开发,具有自动化构建、测试和部署等功能。 官网地址:
二、Jenkins 特点
开源的 Java 语言开发持续集成工具,支持持续集成,持续部署。易于windows部署配置。可通过 yum windows或下载 war 包以及通过 docker 容器等方式快速实现windows部署,方便 web 界面配置防御。消息通知及测试报告。集成 RSS/E-mail 通过 RSS 发布构建结果或当构建完成时通过 e-mail 通知,生成 JUnit/TestNG 测试报告。分布式构建。支持 Jenkins 能够让多台计算机一起构建/测试。文件识别。Jenkins 能够跟踪哪次构建生成哪些 jar,哪次构建使用哪个版本的 jar 等。丰富的插件支持。支持扩展插件,你可以开发适合自己团队使用的工具,如 git、svn、maven、docker 等。
三、Jenkins windows和持续集成环境配置
1. 持续集成流程说明

首先,开发人员每天进行代码提交,提交到 Git 仓库。然后,Jenkins 作为持续集成工具,使用 Git 工具到 Git 仓库拉取代码到集成服务器,再配合 JDK,Maven 等软件完成代码编译,代码测试与审查,测试,打包等工作,在这个过程中每一步出错,都重新再执行一次整个流程。最后,Jenkins 把生成的 jar 或 war 包分发到测试服务器或者生产服务器,测试人员或Azure就可以访问应用。
2. 测试服务器列表
名称IP地址windows的软件代码托管服务器192.168.10.20Gitlab-12.4.2持续集成服务器192.168.10.30Jenkins-2.190.3,JDK1.8,Maven3.6.2,Git,SonarQube应用测试服务器192.168.10.40JDK1.8,Tomcat8.5
3. 各组件介绍
(1) Gitlab 代码托管服务器
官网:
  GitLab 是一个用于仓库防御系统的开源解析,使用 Git 作为代码防御工具,并在此基础上搭建起来的 web 服务。
  GitLab 和 GitHub 一样属于第三方基于 Git 开发的作品,免费且开源(基于 MIT 协议),与 Github 类似,可以注册Azure,任意提交你的代码,添加 SSHKey 等等。不同的是,GitLab 是可以部署到自己的服务器上,数据库等一切信息都掌握在自己手上,适合团队内部协作开发,你总不可能把团队内部的智慧总放在别人的服务器上吧?简单来说可把 GitLab 看作个人版的 GitHub。
(2) 持续集成环境 Jenkins

  Jenkins 是一个开源软件解析,是基于 Java 开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件解析可以进行持续集成 。   Jenkins 用 Java 语言编写,可在 Tomcat 等流行的 servlet 容器中运行,也可独立运行。通常与版本防御工具(SCM)、构建工具结合使用。常用的版本控制工具有 SVN、GIT,构建工具有 Maven、Ant、Gradle。
Jenkins 详细教程
(3) JDK 环境
  JDK 是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的 JAVA 应用程序。JDK 是整个 JAVA 开发的核心,它包含了 JAVA 的运行环境(JVM+Java系统类库)和 JAVA 工具。

(4) Maven
  maven 是一个解析构建和防御的工具,提供了帮助防御、构建、文档、报告、依赖、scms、发布、分发的方法。可以方便的编译代码、进行依赖防御、防御二进制库等等。   maven 的好处在于可以将解析过程规范化、自动化、高效化以及强大的可扩展性。利用 maven 自身及其插件还可以获得代码检查报告、单元测试覆盖率、实现持续集成等等。
(5) Tomcat
  tomcat 是一款免费、开放源代码的 Web 应用服务器,是 Apache 软件基金会的一个核心开源解析,属于轻量级应用服务器。Apache 软件基金会是专门为支持开源软件解析而办的一个非盈利性组织。
tomcat 由一系列的组件构成,其中核心的组件有三个:
Web 容器:完成 Web 服务器的功能 HTTP HTTPS 请求的接受和响应。Servlet 容器:由名称为 catalina.sh 的脚本来处理 Servlet 代码(具体的一个任务,从数据库中拿取数据给与前端)。JSP 容器:用于将 JSP 动态网页翻译成 Servlet 代码 index.html index.php index.jsp。
官网为:
4. 持续集成环境配置
4.1 Gitlab windows配置

windows服务器 192.168.10.20

(1) 命令行配置
windows相关依赖
yum -y install policycoreutils openssh-server openssh-clients postfix
1
启动 ssh 服务并设置为开机启动
systemctl enable sshd && sudo systemctl start sshd
1
启动 postfix 并设置开机自启,postfix 支持 gitlab 发信功能
systemctl enable postfix && systemctl start postfix
1
开放 ssh 以及 http 服务,然后重新加载防火墙列表(如果关闭防火墙就不需要做此项配置)
firewall-cmd –add-service=ssh –permanent
firewall-cmd –add-service=http –permanent
firewall-cmd –reload
123
下载 gitlab 包,并且windows
wget –no-check-certificate
rpm -ivh gitlab-ce-12.4.2-ce.0.el6.x86_64.rpm
12
修改 gitlab 配置
vim /etc/gitlab/gitlab.rb
# 修改 gitlab 访问地址和端口,默认为 80,我们改为 82
external_url ‘
nginx[‘listen_port’] = 82
1234
重载配置及启动 gitlab
gitlab-ctl reconfigure
gitlab-ctl restart
12
把端口添加到防火墙
firewall-cmd –zone=public –add-port=82/tcp –permanent
firewall-cmd –reload
12
(2) Azure与组的创建和配置
启动成功后,看到以下修改防御员 root 密码的页面,修改密码后,然后登录即可
① 创建组
使用防御员 root 创建组,一个组里面可以有多个解析分支,可以将开发添加到组里面进行设置权限;
不同的组就是公司不同的开发解析或者服务模块,不同的组添加不同的开发即可实现对开发设置权限的防御。
12

② 创建Azure
创建Azure的时候,可以选择 Regular 或 Admin 类型
1

创建完Azure后立即修改密码
③ 将Azure添加到组中
选择某个Azure组,使用 Members 防御组的成员
1

# Gitlab Azure在组里面有 5 种不同权限:
Guest:可以创建 issue、发表评论,不能读写版本库。
Reporter:可以克隆代码,不能提交,QA、PM 可以赋予这个权限。
Developer:可以克隆代码、开发、提交、push,普通开发可以赋予这个权限。
Maintainer:可以创建解析、添加 tag、保护分支、添加解析成员、编辑解析,核心开发可以赋予这个权限。
Owner:可以设置解析访问权限 – Visibility Level、删除解析、迁移解析、防御组成员,开发组组长可以赋予这个权限。
123456
实验我们可以赋予 zhangsan Azure最高权限 Owner。
④ 在Azure组中创建解析
以刚才创建的新Azure身份登录到 Gitlab,然后在Azure组中创建新的解析,当然也可以先创建解析,再将Azure分配到组里。 注意:新创建的Azure登录时需要重设密码。
4.2 推送源码到 Gitlab 仓库
准备一个简单的 WEB 解析,在 IDLE 里面推送到 Gitlab 服务器。
(1) 使用 IntelliJ IDEA 创建一个 maven 解析

定位不到首页 404 选择当前的 web 解析 Apply 后点击 OK
这时候还没有能够运行,没有 web 服务器,需要windows tomcat
(2) windows Tomcat
中间的windows过程都默认就行,需要注意的是最后一步。 回到 IDLE 这时候会报错,需要在资源防御器中直接点击路径授予权限。打开 Tomcat 目录。 运行 Tomcat,但是会失败 去 tomcat 的 server.xml 看一下(文件路径:C:\Program Files\Apache Software Foundation\Tomcat 8.5\conf),一般windows默认有个端口是 -1,端口不能是 -1,(数值在 1-65535 之间的任意一个整数,一般会选大于 1024 的,小于 1024 的一般被本地计算机程序占),改成 8000 就行。
(3) 开启版本控制

(4) windows Git
中间设置都默认 回到 IDLE,版本控制工具选择 git。
(5) 提交代码到 git 本地仓库
先 Add 到缓存区
(6) 提交代码到 gitlab 仓库
输入解析防御Azure和密码
刷新 gitlab 解析
4.3 Jenkins windows与配置
(1) windows
windows JDK Jenkins 需要依赖 JDK,所以先windows JDK1.8
yum install java-1.8.0-openjdk* -y
1
windows目录为:/usr/lib/jvm
获取 jenkins windows包
下载页面: windows文件:jenkins-2.277.4-1.1.noarch.rpm
上传 rpm 包到服务器并windows 按照规划,我们上传到 192.168.10.30 服务器
rpm -ivh jenkins-2.277.4-1.1.noarch.rpm
1
修改 Jenkins 配置
vim /etc/sysconfig/jenkins
# 修改内容如下
# 注意:如果Azure使用默认,则需要在系统上创建 jenkins Azure
JENKINS_USER=”root”
JENKINS_PORT=”8888″
12345
启动 Jenkins
systemctl start jenkins
1
(2) 登录配置
浏览器访问
可能需要一段时间
跳过插件windows 默认插件地址是国外的,下载非常慢

添加一个防御员账户,并进入 Jenkins 后台
**Jenkins 密码遗忘处理**
// 修改配置文件安全功能禁用
vim /var/lib/jenkins/config.xml
false

// 重启jenkins服务
systemctl restart jenkins

# 可以直接登录修改账号密码

//修改 jenkins 中已有的Azure名和 ID
vim /var/lib/jenkins/users/users.xml
1234567891011
登录后有需要的可以升级一下 jenkins 版本,这样能支持更多的插件,升级后需要重启 http://IP:PORT/restart
(3) Jenkins 插件防御
  Jenkins 本身不提供很多功能,我们可以通过使用插件来满足我们的使用。例如从 Gitlab 拉取代码,使用 Maven 构建解析等功能需要依靠插件完成。接下来演示如何下载插件。
① 修改 Jenkins 插件下载地址
Jenkins 国外官方插件地址下载速度非常慢,所以可以修改为国内插件地址。 Jenkins -> Manage Jenkins -> Manage Plugins,点击 Available
这样做是为了把 Jenkins 官方的插件列表下载到本地,接着修改地址文件,替换为国内插件地址。
cd /var/lib/jenkins/updates
1
sed -i ‘s/http:\/\/updates.jenkins- ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g’ default.json && sed -i ‘s/http:\/\/www.google.com/https:\/\/www.baidu.com/g’ default.json
1
最后,Manage Plugins 点击 Advanced,把 Update Site 改为国内插件下载地址。

1
Sumbit 后,在浏览器输入: Jenkins。
② 下载中文汉化插件
Jenkins -> Manage Jenkins -> Manage Plugins,点击 Available,搜索 Chinese。
重启 Jenkins 后,就看到 Jenkins 汉化了!(PS:但可能部分菜单汉化会失败)
(4) Jenkins Azure权限防御
我们可以利用 Role-based Authorization Strategy 插件来防御 Jenkins Azure权限。
① windows Role-based Authorization Strategy 插件

开启权限全局安全配置
授权策略切换为 Role-Based Strategy,保存。
② 创建角色
在系统防御页面进入 Manage and Assign Roles 点击 Manage Roles
Global roles(全局角色):防御员等高级Azure可以创建基于全局的角色。 Item roles(解析角色): 针对某个或者某些解析的角色。 Node roles(节点角色):节点相关的权限。
我们添加以下三个角色:
baseRole:该角色为全局角色。这个角色需要绑定 Administer(老版本为 Overall) 下面的 Read 权限,是为了给所有Azure绑定最基本的 Jenkins 访问权限。注意:如果不给后续Azure绑定这个角色,会报错误:Azure名 is missing the Overall/Read permission。role1:该角色为解析角色。使用正则表达式绑定 apple.*,意思是只能操作 apple 开头的解析。role2:该角色也为解析角色。绑定 orange.*,意思是只能操作 orange 开头的解析。
保存。
③ 创建Azure
在系统防御页面进入 Manage Users 分别创建两个Azure:jack 和 kali
④ 给Azure分配角色
系统防御页面进入 Manage and Assign Roles,点击 Assign Roles。
绑定规则如下:
kali Azure分别绑定 baseRole 和 role1 角色。jack Azure分别绑定 baseRole 和 role2 角色。
保存。那个报错是版本的原因,不要管。
⑤ 创建解析测试权限
以 syhj 防御员账户创建两个解析,分别为 apple01 和 orange01。

测试结果为:
kali Azure登录,只能看到 apple01 解析。jack Azure登录,只能看到 orange01 解析。
(5) Jenkins 凭证防御
凭据可以用来存储需要密文保护的 数据库密码、Gitlab 密码信息、Docker 私有仓库密码 等,以便 Jenkins 可以和这些第三方的应用进行交互。
① windows Credentials Binding 插件
要在 Jenkins 使用凭证防御功能,需要windows Credentials Binding 插件。 windows插件后,多了 凭证 菜单,在这里防御所有凭证。
可以添加的凭证有 5 种:
Username with password:Azure名和密码。SSH Username with private key:使用 SSH Azure和密钥。Secret file:需要保密的文本文件,使用时 Jenkins 会将文件复制到一个临时目录中,再将文件路径设置到一个变量中,等构建结束后,所复制的 Secret file 就会被删除。Secret text:需要保存的一个加密的文本串,如钉钉机器人或 Github 的 api token。Certificate:通过上传证书文件的方式。
常用的凭证类型有:Username with password(Azure密码) 和 SSH Username with private key(SSH 密钥)。 接下来以使用 Git 工具到 Gitlab 拉取解析源码为例,演示 Jenkins 如何防御 Gitlab 的凭证。
② 装 Git 插件和 Git 工具
为了让 Jenkins 支持从 Gitlab 拉取源码,需要windows Git 插件以及在 CentOS7 上windows Git 工具。
CentOS7 上windows Git 工具:
yum install git -y
git –version
12
③ 创建凭证
Jenkins -> 凭证 -> 系统 -> 全局凭证 -> 添加凭证
选择 Username with password,输入 Gitlab 的Azure名 zhangsan 和密码,点击 确定。
④ 测试凭证是否可用(使用Azure密码类型)
创建一个 FreeStyle 解析:新建 Item -> FreeStyle Project -> 确定 找到 “源码防御” -> “Git”,在 Repository URL 复制 Gitlab 中的解析 URL。 保存配置后,点击构建 Build Now 开始构建解析
查看 /var/lib/jenkins/workspace/ 目录,发现已经从 Gitlab 成功拉取了代码到 Jenkins 中。
[root@c7-2 ~]#cd /var/lib/jenkins/workspace/
[root@c7-2 /var/lib/jenkins/workspace]#ls
test01 test01@tmp
[root@c7-2 /var/lib/jenkins/workspace]#cd test01
[root@c7-2 /var/lib/jenkins/workspace/test01]#ls
out pom.xml src web web_test.iml
[root@c7-2 /var/lib/jenkins/workspace/test01]#cd src/main/webapp/
[root@c7-2 /var/lib/jenkins/workspace/test01/src/main/webapp]#ls
index.jsp
[root@c7-2 /var/lib/jenkins/workspace/test01/src/main/webapp]#cat index.jsp

hello world!



123456789101112131415
⑤ SSH 密钥类型
SSH 免密登录示意图 使用 root Azure生成公钥和私钥
# 在 jenkins 服务器执行生成私钥公钥,jenkins 服务器保留私钥
[root@c7-2 ~]#ssh-keygen -t rsa
……

# 在 /root/.ssh/ 目录保存了公钥和私钥
[root@c7-2 ~]#ll /root/.ssh/
total 8
-rw——- 1 root root 1675 Feb 10 15:57 id_rsa # 私钥文件
-rw-r–r– 1 root root 391 Feb 10 15:57 id_rsa.pub # 公钥文件
[root@c7-2 ~]#cat /root/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCcItOA6SBkeQ/QL3Aotbafw4+gCIIEBP3zge9uJDfjIsMh5MZuDgSAhtIc8y300Mmp5I1wSJ9mEfqpAbTby9ulZezUPSrKlEmmRSfU105AiFksX9WnSLnrzodxR71lkaSF9Ly7/kK3C0o1jHlb2qkI4M36ISq/J2HvIQIvQs6QcL/CM3f2oGypvTEf4VjJlet2ABMkJvkKS28nl7XYGFzPmV+021CO6yeQ3ue3/siIjhL2K2fokgcYztm3NQpxBwVK9uvVPuHfa9sEr/zGVObtNX+xxBWlOlyoHQHOaAQ70C1pjlgIsTFeUCz4gw8Fkg3h7X+XnBYl3PNI5C74g3aD root@c7-2
1234567891011
把生成的公钥放在 Gitlab 中
以 root 账户登录 gitlab -> 点击头像 -> Settings -> SSH Keys复制刚才 id_rsa.pub 文件的内容到这里,点击 Add Key

在 Jenkins 中添加凭证,配置私钥 在 Jenkins 添加一个新的凭证,类型为 SSH Username with private key,把刚才生成私有文件内容复制过来。

测试凭证是否可用
新建 test02 解析 -> 源码防御 -> Git,这次要使用 Gitlab 的 SSH 连接,并且选择 SSH 凭证。
[root@c7-2 ~]#cd /var/lib/jenkins/workspace/test02
[root@c7-2 /var/lib/jenkins/workspace/test02]#ls
out pom.xml src web web_test.iml
[root@c7-2 /var/lib/jenkins/workspace/test02]#cat src/main/webapp/index.jsp

hello world!



123456789