使用 Azure 和容器配置扫描自动化
HCL®AppScan® 源代码 命令行界面 (CLI) 容器可从 HCL Harbor 和 HCL FlexNet Operations (FNO) 门户网站获得,可用于使用 Azure 自动执行静态分析扫描,而无需安装 AppScan® 源代码 的完整实例。
- 准备应用程序。
- 准备 Azure DevOps 管道环境。
- 从容器映像启动扫描。
先决条件
- Azure 环境,包括已安装 Docker 的一个 Linux 代理程序/主机。
这是旨在使用 CLI 容器运行静态分析扫描的系统。
-
AppScan® Source for Automation 的有效许可证和相关许可证服务器信息。
-
AppScan® 源代码 CLI 容器映像
从 HCL Port 或 HCL FNO 下载 AppScan® 源代码 CLI 容器映像。具有有效许可证时,您的 HCL 标识将授予对这些位置的访问权限。
-
AppScan® 源代码 CLI 脚本
在 Jenkins 管道中使用容器进行扫描需要脚本。
-
从容器访问 Azure 主机/代理程序上的内容:
必须从运行扫描的 Azure 主机访问要扫描的应用程序。
注: 在扫描实例化期间,卷映射(将容器主机上的路径映射到容器中的路径)用于此目的。
准备要扫描的应用程序
paf
/ppf
文件- 文件夹扫描
paf
/ppf
文件准备要扫描的应用程序- 在已安装 AppScan® 源代码 的 Linux 系统上使用 HCL®AppScan® Source for Analysis 客户机生成
paf
/ppf
文件。确保
paf
和ppf
文件位于要扫描的应用程序的根目录下。 - 确保可以从 Jenkins 主机/代理程序访问应用程序文件和
paf
/ppf
文件。例如,如果可以在 Jenkins 主机/代理程序上的根路径
/usr/user1/SampleApp
访问应用程序,则paf
/ppf
文件位于/usr/user1/SampleApp/SampleApp.paf
和/usr/user1/SampleApp/SampleApp.ppf
。 - 确定容器看到的卷的名称。 例如,将主机上的
/usr/user1
映射到容器中的cvol
。注: 在容器中运行 CLI 时指定卷映射。 - 创建 CLI 脚本。例如,
SampleApp.script
在 /usr/user1/SampleApp
中。对于此示例,脚本告知容器使用cvol
路径访问应用程序内容。列出的命令是与 AppScan® 源代码 CLI 配合使用的命令(扫描时不需要进行手动干预)。login … oa /cvol/SampleApp/SampleAll.ppf scan … logout
- 确保可以从 Jenkins 主机/代理程序访问应用程序文件。
例如,可以在 Jenkins 主机/代理程序上的路径/
usr/user1/SampleApp
访问该应用程序。 - 确定容器看到的卷的名称。例如,将主机上的
/usr/user1
映射到容器中的cvol
。注: 在容器中运行 CLI 时指定卷映射。 - 创建 CLI 脚本。例如,
/usr/user1/SampleApp
中的SampleApp.script
。login … oa /cvol/SampleApp/SampleAll.ppf scan … logout
准备 Azure DevOps 管道环境
- 使用来自 HCL FlexNet Operations 的容器映像,使用标准编辑器。
- 使用来自 HCL Port 的容器映像,使用标准编辑器。
- 使用来自 HCL Port 的容器映像,使用 YAML 配置文件。
- 从 HCL FlexNet Operations (FNO) 将 AppScan® 源代码 CLI 容器下载到 Azure VM。
- 使用
docker load
命令装入 CLI 容器映像。 - 在 Azure DevOps 组织内,使用标准编辑器创建一个新管道。单击使用标准编辑器。
- 选择要扫描的项目和存储 CLI 脚本的存储库和分支,然后单击继续。
- 选择 Azure Repos Git 作为源。
- 选择团队项目。
- 选择存储库。
- 选择配置有 AppScan® 源代码 CLI 容器的 Azure VM 所在的 Azure 代理程序池。
- 添加新的 Docker 任务以装入映像。包括以下规范:
- 任务版本:0
- 显示名称:指定名称或使用缺省值。
- 容器注册表类型:指定注册表类型或使用缺省值。
- Docker 注册表服务连接:指定连接或使用缺省值。
- 操作:运行 Docker 命令
- 命令:load -i /usr/user1/appscan-src-cli-10.2.0.tar.gz
- 添加新的 Docker 任务以使用以下规范运行映像:
- 任务版本:1
- 显示名称:指定名称或使用缺省值。
- 容器注册表类型:指定注册表类型或使用缺省值。
- Docker 注册表服务连接:指定连接或使用缺省值。
- 命令:运行
- 参数:--rm
- 映像名称:appscan/appscan-src-cli:10.2.0
- 卷:/usr/user1:/wa
- 环境变量:
- AS_INSTALL_MODE=standalone
- AS_LICENSE_TYPE=CLS
- AS_LICENSE_SERVER_ID=<许可证服务器标识>
- AS_LICENSE_SERVER=hclsoftware
- 容器命令:script /wa/cli.script
- 添加新的 Docker 任务以使用以下规范进行清除:
- 任务版本:0
- 显示名称:指定名称或使用缺省值。
- 容器注册表类型:指定注册表类型或使用缺省值。
- Docker 注册表服务连接:指定连接或使用缺省值。
- 操作:运行 Docker 命令
- 命令:rmi appscan/appscan-src-cli:10.2.0
- 创建一个包含环境变量的文件(例如
env.list
),这些环境变量必须在扫描期间提供给 CLI 容器。包括以下必需信息:-
AS_INSTALL_MODE=standalone
-
AS_LICENSE_TYPE=CLS
-
AS_LICENSE_SERVER_ID=<the license server ID>
可以在此处找到完整的参数列表。
-
- 在 Azure DevOps 组织内,使用标准编辑器创建一个新管道。单击使用标准编辑器。
- 选择要扫描的项目和存储 CLI 脚本的存储库和分支,然后单击继续。
- 选择 Azure Repos Git 作为源。
- 选择团队项目。
- 选择存储库。
- 选择配置有 AppScan® 源代码 CLI 容器的 Azure VM 所在的 Azure 代理程序池。
- 添加新的 Docker 任务以使用以下规范运行映像:
- 任务版本:2
- 显示名称:指定名称或使用缺省值。
- 容器注册表:指定注册表类型或使用缺省值。
- 操作:运行 Docker 命令
- 命令:运行
- 参数:--rm --env-file /usr/user1/env.list -v $(Agent.BuildDirectory)/s:/wa hclcr.io/appscan/appscan-src-cli:10.2.0 script /wa/cli.script
- 添加新的 Docker 任务以使用以下规范进行清除:
- 任务版本:0
- 显示名称:指定名称或使用缺省值。
- 容器注册表类型:指定注册表类型或使用缺省值。
- Docker 注册表服务连接:指定注册表类型或使用缺省值。
- 操作:运行 Docker 命令
- 命令:rmi appscan/appscan-src-cli:10.2.0
要使用来自 HCL Harbor 的容器映像和 YAML 准备 Azure DevOps 管道,请执行以下操作:
使用以下示例脚本作为指南,使用来自 HCL Harbor 的 AppScan Source CLI 容器运行静态分析扫描。
# Starter pipeline
# Start with a minimal pipeline that you can customize to build and deploy your code.
# Add steps that build, run tests, deploy, and more:
# https://aka.ms/yaml
trigger:
- main
pool:
name: Ubuntu-VM-pool
#vmImage: ubuntu-latest
#steps:
#- script: echo Hello, world!
# displayName: 'Run a one-line script'
steps:
- task: CmdLine@2
inputs:
script: |
- task: Docker@1
displayName: 'Run an image'
inputs:
containerregistrytype: 'Container Registry'
dockerRegistryEndpoint: 'MyConnection’
command: 'Run an image'
arguments: '--rm'
imageName: 'hclcr.io/appscan/appscan-src-cli:10.2.0 '
volumes: '$(Agent.WorkFolder)<path to downloaded source files>:/wa'
envVars: |
AS_INSTALL_MODE=standalone
AS_LICENSE_TYPE=CLS
AS_LICENSE_SERVER_ID=<specify the license server ID>
AS_LICENSE_SERVER=<specify the license server name>
containerCommand: 'script /wa/cli.script'
runInBackground: false
- task: Docker@0
displayName: Clean
inputs:
containerregistrytype: 'Container Registry'
dockerRegistryConnection: 'MyConnection'
action: 'Run a Docker command'
customCommand: ' rmi hclcr.io/appscan/appscan-src-cli:10.2.0'
使用容器映像启动静态分析扫描
要使用管道启动扫描,请执行以下操作:
- 在 Azure 中,确保 Azure 代理程序池中的 Azure VM 在线。
- 在“管道”页面中,选择要运行的管道。
- 选择运行管道以启动静态分析扫描。