如果要在DevSecOps中包含Acunetix ,则需要将其与CI / CD系统集成。Acunetix具有针对最受欢迎的CI / CD系统Jenkins的现成集成。但是,您可以使用Acunetix REST API将扫描仪与任何CI / CD系统集成。在本文中,我们将向您展示如何将Acunetix与CircleCI CI / CD平台集成。

在此分步示例中,我们将使用在Node.JS上运行的简单Web应用程序。我们将将此应用程序与GitHub和CircleCI集成。

步骤1.准备您的Acunetix目标信息 登录到您的Acunetix安装。 为您的Web应用程序创建目标。在此示例中,可通过以下URL使用我们的Web应用程序:http : //testwebapp.acunetixexample.com : 8080。 输入您的Web应用程序的URL 输入您的Web应用程序的描述 点击保存按钮 您将被带到“目标设置”页面,现在可以从URL检索目标ID。 转到您的个人资料页面,然后单击“复制”按钮以检索您的API密钥。 第2步。准备您的GitHub存储库 登录到您的GitHub帐户-在此示例中,帐户名称为acunetix-test,帐户电子邮件地址为webmaster@acunetixexample.com。 在“存储库”页面上,单击“新建”按钮。 创建新的存储库: 输入存储库名称-在此示例中,存储库名称将为testwebapp 输入存储库的描述 启用添加自述文件复选框以初始化存储库 单击创建存储库按钮 步骤3.准备您的本地环境 在此示例中,本地环境将是Ubuntu 20.04.1桌面安装程序,但是对于大多数Linux或MacOS安装程序,它应该是相同的。用适合您环境的步骤替换特定于平台的步骤就足够了。以下所有步骤将在您的本地环境计算机上执行。

安装先决条件 更新和升级您的环境: sudo apt update && sudo apt upgrade -y 安装git与您的GitHub存储库进行交互: sudo apt install git -y 安装Node.JS和npm: sudo apt install npm -y 编写本地源代码 查看您的GitHub存储库: cd ~ git clone https://github.com/acunetix-test/testwebapp.git (substitute "acunetix-test" with your GitHub account name) 在本地代码存储库中初始化npm: cd ~/testwebapp npm init -y 使用基本文件夹中的app.js文件创建基本的Web应用程序: nano ~/testwebapp/app.js 将以下行添加到您的app.js文件中: const http = require('http'); http.createServer(function (req, res) { res.write(''); res.write('Welcome to the Test Web Application!'+'
'); res.write('===================================='+'
'); res.write(''); res.end(); }).listen(80, '0.0.0.0'); 将CircleCI工作流配置文件添加到您的源代码中 创建配置文件: mkdir ~/testwebapp/.circleci nano ~/testwebapp/.circleci/config.yml 将以下行添加到您的config.yml文件中: version: 2.1

jobs: pull-and-build: docker: – image: arvindr226/alpine-ssh steps: – checkout – run: ssh -oStrictHostKeyChecking=no -v $USERNAME@$HOSTNAME "./deploy.sh"

workflows: version: 2 build-project: jobs: – pull-and-build: filters: branches: only: – main 将更改提交到GitHub存储库 转到正确的目录: cd ~/testwebapp 设置您的GitHub凭据和远程存储库(用您的GitHub帐户电子邮件地址代替): git config user.email "webmaster@acunetixexample.com" 提交代码更改: cd ~/testwebapp git add . git commit -m "first code commit" git push 步骤4.准备部署环境 在此示例中,部署环境将是在云平台上运行的Ubuntu 18.04 LTS服务器。因此,您的部署环境的主机名将与目标的主机名相同(在此示例中:testwebapp.acunetixexample.com)。

为CircleCI创建用户以连接到部署环境 以root用户登录到您的部署环境。 创建一个不使用密码登录的用户: useradd -m -d /home/circleuser -s /bin/bash circleuser 为circleuser用户创建一个不带密码的SSH密钥: ssh-keygen -m PEM -t rsa -f ~/.ssh/circleuser 将新创建的公钥添加到/home/circleuser/.ssh/authorized_keys: mkdir -p /home/circleuser/.ssh printf "\n" >> /home/circleuser/.ssh/authorized_keys cat ~/.ssh/circleuser.pub >> /home/circleuser/.ssh/authorized_keys chown -R circleuser:circleuser /home/circleuser 显示私钥的内容: cat ~/.ssh/circleuser 复制私钥的内容–您将使用它来允许CircleCI登录到您的部署环境。 创建一组SSH密钥供用户在GitHub中进行身份验证 以circleuser用户身份登录到您的部署环境。 创建不带密码的新SSH密钥: ssh-keygen -t rsa 在控制台中显示公钥,并将其复制以供以后使用: cat ~/.ssh/id_rsa.pub 登录到GitHub帐户并导航到应用程序的存储库。 单击设置选项卡。 在边栏中选择部署密钥。 单击添加部署键按钮。 添加新密钥: 将“标题”字段设置为LogFromDeployEnvironment(或任何其他易于记忆的名称) 将您先前复制的公共密钥的内容粘贴到“密钥”字段中 点击添加键按钮 为SSH和HTTP配置防火墙访问 允许通过防火墙的SSH和HTTP通信:

登录到您的部署环境并运行以下命令: sudo ufw allow OpenSSH sudo ufw allow 80 sudo ufw enable 设置项目 以circleuser用户身份登录到您的部署环境。 克隆项目源代码(根据需要替换为格式:git@github.com:your_user_name / your_application_name.git): git clone git@github.com:acunetix-test/testwebapp.git 暂时移至testwebapp文件夹并安装依赖项: cd testwebapp npm install cd ~ 暂时将您的特权提升为root用户并安装pm2,以允许将Node应用程序作为后台进程运行: su npm install -g pm2 Exit 使用pm2启动您的Node应用程序以注册该过程: pm2 start ~/testwebapp/app.js 创建一个deploy.sh文件: nano ~/deploy.sh 将以下行添加到您的deploy.sh文件中: #!/bin/bash

cd ~/testwebapp

git pull origin main

npm install export PATH=~/.npm-global/bin:$PATH source ~/.profile

pm2 restart ~/testwebapp/app.js 步骤5.将CircleCI配置为与GitHub集成 设置CircleCI项目 登录您的CircleCI帐户。 转到项目列表,然后单击要使用的项目的“设置项目”按钮-在此示例中,您的项目名为testwebapp。 单击“使用现有配置”按钮(您已经在存储库中创建了config.yml文件)。 单击开始构建按钮(这将使用您存储库中的config.yml)。这将立即触发第一个构建并将您发送到管道页面。此初始构建将失败,因为您需要执行一些其他步骤。 配置SSH密钥以使CircleCI连接到部署环境 在应用程序的管道页面上,单击“项目设置”按钮。 单击“ SSH密钥”菜单项。 单击添加SSH密钥按钮。 输入您的部署环境的主机名(在此示例中:testwebapp.acunetixexample.com)。 输入从部署环境复制的私钥。 单击添加SSH密钥按钮。 配置环境变量 在应用程序的管道页面上,单击“项目设置”按钮。 单击环境变量菜单项。 单击添加环境变量按钮。 为您先前在部署环境中创建的circleuser用户添加环境变量: 将名称字段设置为USERNAME 将值字段设置为circleuser 单击添加环境变量按钮 为您的部署环境的IP地址或主机名添加一个环境变量。在此示例中,主机名是testwebapp.acunetixexample.com: 将名称字段设置为HOSTNAME 将值字段设置为testwebapp.acunetixexample.com 单击添加环境变量按钮 步骤6.测试管道工作流程 检查一切是否正常的主要测试是简单地对源代码进行更改,提交更改,并将更改推送到GitHub。这将显示在您的CircleCI管道页面中:

步骤7.与Acunetix集成 最后,您需要在部署环境中编辑deploy.sh文件,以添加说明以在每次构建后触发对Web应用程序目标的Acunetix扫描。

以circleuser用户身份登录到您的部署环境。 编辑deploy.sh文件: nano ~/deploy.sh 在您的deploy.sh文件中添加一条卷曲线以触​​发扫描;最终文件应如下所示: #!/bin/bash

cd ~/testwebapp

git pull origin main

export PATH=~/.npm-global/bin:$PATH source ~/.profile

pm2 restart ~/testwebapp/app.js

curl -k -i --request POST --url "https://online.acunetix.com/api/v1/scans" --header "X-Auth: [API KEY]" --header "content-type: application/json" --data '{"profile_id":"11111111-1111-1111-1111-111111111111","schedule":{"disable":false,"start_date":null,"time_sensitive":false},"user_authorized_to_scan":"yes","target_id":"[Target ID]"}' 替换3个突出显示的字段: 要设置正确的X-Auth值,请将[API KEY]文本替换为您在第一部分中检索到的API密钥。 该建议值PROFILE_ID是11111111-1111-1111-1111-111111111111 -这个默认值是一个全扫描。如果希望指定其他扫描配置文件,则可以设置以下值之一: 对于Acunetix的在线版本: 全面扫描:11111111-1111-1111-1111-111111111111 高风险漏洞:11111111-1111-1111-1111-111111111112 SQL注入漏洞:11111111-1111-1111-1111-111111111113 弱密码:11111111-1111-1111-1111-111111111115 跨站点脚本漏洞:11111111-1111-1111-1111-111111111116 仅抓取:11111111-1111-1111-1111-111111111117 恶意软件扫描:11111111-1111-1111-1111-111111111120 完整的网络和网络扫描:11111111-1111-1111-1111-21111111111111 网络扫描:11111111-1111-1111-1111-211111111112 网络扫描(安全检查):11111111-1111-1111-1111-211111111113 网络扫描快速:11111111-1111-1111-1111-211111111114 对于本地版本的Acunetix: 全面扫描:11111111-1111-1111-1111-111111111111 高风险:11111111-1111-1111-1111-111111111112 SQL注入漏洞:11111111-1111-1111-1111-111111111113 弱密码:11111111-1111-1111-1111-111111111115 跨站点脚本漏洞:11111111-1111-1111-1111-111111111116 仅抓取:11111111-1111-1111-1111-111111111117 高/中风险:11111111-1111-1111-1111-111111111119 恶意软件扫描:11111111-1111-1111-1111-111111111120 您也可以使用可能已创建的任何自定义扫描配置文件的扫描配置文件ID。您可以使用Acunetix REST API以编程方式检索自定义扫描配置文件的扫描配置文件ID,也可以导航到自定义扫描配置文件并检查URL: 要设置正确的target_id值,请将[Target ID]文本替换为您在第一部分中检索到的目标ID。 现在,将来所有的提交都会触发对Acunetix的扫描请求:
————————————————
版权声明:本文为CSDN博主「kevin20182019」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/kevin20182019/article/details/117119435

将Acunetix与CircleCI集成的更多相关文章

  1. Acunetix与WAF集成:Acunetix和F5 BigIP ASM

    该的Acunetix API让您有机会来实现任务自动化,从而提高效率-尤其是当你可以用加速您的工作流程的其他组件的功能整合.在此示例中,我们将在上一篇文章的基础上,向您展示如何在Bash脚本中使用Ac ...

  2. docusaurus 生成的website 通过circleci部署gh-pages

    docusaurus 是facebook 开源的一款文档脚手架工具,可以快速的进行文档生成,基于markdown 同时已经内置了gh-pages 发布的命令,对于ci 工具,我们只需要简单的配置就可以 ...

  3. 使用 circleci 自动部署 vuepress 到 github

    概述 今天我想把博客什么的搬到 github 的 vuepress 上面.但是每次提交 md 文件需要手动打包然后再提交到 github 的 gh-pages,非常麻烦.所以我去研究了一下用 circ ...

  4. CircleCI 与持续集成

    CircleCI 入门 最近在完成老师的作业:使用 CircleCI 进行持续集成,现将过程书写下来,与大家一起学习进步. A. What is CircleCI? 1. 什么是持续集成 持续集成(C ...

  5. 使用 CircleCI 2.0 进行持续集成/持续部署

    使用 CircleCI 2.0 进行持续集成/持续部署 - 简书https://www.jianshu.com/p/36af6af74dfc Signup - CircleCIhttps://circ ...

  6. WAF集成:Acunetix和FortiWeb

    Acunetix API使您有机会自动化任务以提高效率,尤其是在您可以加速与工作流其他组件的集成功能时.在此示例中,我们将在上一篇文章的基础上,向您展示如何在Bash脚本中使用Acunetix API ...

  7. fir.im weekly - 「 持续集成 」实践教程合集

    我们常看到许多团队和开发者分享他们的持续集成实践经验,本期 fir.im Weekly 收集了 iOS,Android,PHP ,NodeJS 等项目搭建持续集成的实践,以及一些国内外公司的内部持续集 ...

  8. 基于 CODING 的 Spring Boot 持续集成项目

    本文作者:CODING 用户 - 廖石荣 持续集成的概念 持续集成(Continuous integration,简称 CI)是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少 ...

  9. 使用 CODING 进行 Hexo 项目的持续集成

    本文作者:CODING 用户 - 廖石荣 关于持续集成的概念 持续集成指的是,频繁地(一天多次)将代码集成到主干. 持续集成的过程 如图所示: CI 过程:代码编写 -> 源代码库(GitHub ...

随机推荐

  1. Python爬虫-Scrapy框架的工作原理

    Scrapy框架工作原理 Scrapy框架架构图 Scrapy框架主要由六大组件组成,分别为: ​ 调度器(Scheduler),下载器(Downler),爬虫(Spiders),中间件(Middwa ...

  2. Python中PyQuery库的使用

    pyquery库是jQuery的Python实现,可以用于解析HTML网页内容,我个人写过的一些抓取网页数据的脚本就是用它来解析html获取数据的. 它的官方文档地址是:http://packages ...

  3. JDBC使用详解

    第1章:JDBC概述 1.1 数据的持久化 持久化(persistence):把数据保存到可掉电式存储设备中以供之后使用.大多数情况下,特别是企业级应用,数据持久化意味着将内存中的数据保存到硬盘上加以 ...

  4. vue 安装sass5.0版本遇到的问题

    cnpm install node-sass@4.9.2 --save-dev cnpm install sass-loader@7.3.1 --save-dev cnpm install style ...

  5. 如何使用 IoC

    创建Maven工程,pom.xml添加依赖 <?xml version="1.0" encoding="UTF-8"?> <project x ...

  6. wangEditor 轻量级富文本框编辑器使用方法

    首先第一步先去wangEditor官网下载所需要的脚本文件! http://www.wangeditor.com/ 接下来先在你的项目的HTML标签里加上这样一段标签: 1 <body> ...

  7. .NET Core Web API使用HttpClient提交文件的二进制流(multipart/form-data内容类型)

    需求背景: 在需要通过服务端请求传递文件二进制文件流数据到相关的服务端保存时,如对接第三方接口很多情况下都会提供一个上传文件的接口,但是当你直接通过前端Ajax的方式将文件流上传到对方提供的接口的时候 ...

  8. TVM性能评估分析(六)

    TVM性能评估分析(六) Figure 1.  The workflow of development PC, compile, deploy to the device, test, then mo ...

  9. Jittor 的Op, Var算子

    Jittor 的Op, Var算子 要使用jittor训练模型,需要了解两个主要概念: Var:Jittor的基本数据类型 Operations:Jittor的算子与numpy类似 首先,开始使用Va ...

  10. 自动调试用于移动GPU的卷积网络

    自动调试用于移动GPU的卷积网络 对特定设备进行自动调试对于获得最佳性能至关重要.这是有关如何调试整个卷积网络的说明文档. TVM中Mobile GPU的算子实现以模板形式编写.模板具有许多可调旋钮( ...