为 Maven 项目运行静态分析
要启动文件的分析,必须生成将提交到云的 IRX 文件。HCL AppScan on Cloud Maven 插件用于自动扫描 Maven 中的 jar
、war
和 ear
项目。它将为具有“ jar”、“ war”和“ ear”封包类型的 Maven 项目生成 IRX 文件。它还可以将生成的 IRX 文件提交到 ASoC 服务以进行自动分析。如果要扫描 Maven 项目,请遵循以下指示信息来创建该文件。
关于此任务
过程
- 在命令提示符处,发出命令以将目录切换到包含 Maven 项目的位置(包含 pom.xml 文件的文件夹)。
-
设置
APPSCAN_OPTS
环境变量,以在运行扫描之前指定全局选项。使用APPSCAN_OPTS
设置扫描速度,启用密钥扫描,启用调试日志记录等。 -
发出以下某个命令:
- 要仅生成 IRX 文件,请发出:
该命令为构建中的所有mvn com.hcl.security:appscan-maven-plugin:prepare
jar
、war
和ear
项目生成一个 IRX 文件。缺省情况下,IRX 文件在根项目的目标目录中生成。您可以稍后将 IRX 文件提交到 ASoC。 - 要生成 IRX 文件并将其发送到 ASoC 服务以进行分析,请执行命令
该命令将生成 IRX 文件并将其提交到 ASoC 服务以进行分析。此任务需要使用应用程序标识 (mvn package com.hcl.security:appscan-maven-plugin:analyze
appId
)、API 密钥 (appscanKey
) 和 API 密钥 (appscanSecret
)。注: 如果 Maven 项目具有针对同一反应器构建中另一个项目的编译时依赖关系,则现有 Maven 错误可能导致命令失败。要解决此问题,请执行package
目标以及prepare
或analyze
目标。例如:
或者mvn package com.hcl.security:appscan-maven-plugin:prepare
mvn package com.hcl.security:appscan-maven-plugin:analyze
表 1. Maven 插件的可配置选项 选项 缺省值 描述 output
<root project>/target/<root project name>.irx
生成的 IRX 文件的名称和/或位置。如果所选路径不存在,则应用缺省路径 (<root project>/target/<root project name>.irx) appId
空值。对于
analyze
是必需的。云服务中的应用程序的标识。 appscanKey
空值。对于
analyze
是必需的。用于标识的用户的 API 密钥标识。 appscanSecret
空值。对于
analyze
是必需的。用户的 API 私有密钥以供认证。 namespaces
空值。 覆盖自动名称空间检测。设置为 ""
以禁用名称空间检测。提示: Command Line Utility 包含 Tomcat JSP 编译器。缺省情况下,在生成 IRX 文件期间会使用此 JSP 编译器。如果要为war
或ear
文件生成 IRX 文件,且希望使用其他 JSP 编译器,请发出带-DjspCompiler
选项的命令。例如:mvn com.hcl.security:appscan-maven-plugin:prepare -DjspCompiler=<jsp_compiler>
其中,
<jsp_compiler>
是要使用的 JSP 编译器的路径,用于指定服务器的根目录。提示: 缺省情况下,IRX 文件生成期间不扫描第三方代码。可通过遵循 管理第三方 Java 和 .NET 排除 中的指示信息来修改第三方代码排除设置。要包含第三方代码,请发出带有-DthirdParty
选项的命令。如果您是扫描中通常排除的第三方代码的开发人员,应使用该设置来包含第三方代码。
提示: 可通过以下两种方法之一缩短上述命令:- 将以下内容添加到 pom.xml 文件的
<plugins>
部分:
使用此方法,您可以编辑 pom.xml 文件,然后所有其他用户会自动获得更改。但是,必须指定版本号,因此当有较新的版本可用时,需要手动编辑和更新 pom.xml 文件。<plugin> <groupId>com.hcl.security</groupId> <artifactId>appscan-maven-plugin</artifactId> <version>1.0.10</version> </plugin>
- 将
groupId
(com.hcl.security
) 添加到 Maven settings.xml 中的插件组列表。例如,将以下内容添加到 ~/.m2/settings.xml 或 ${maven.home}/conf/settings.xml:
执行此编辑之后,您可以使用<pluginGroups> <pluginGroup>com.hcl.security</pluginGroup> </pluginGroups>
appscan
前缀执行prepare
目标。例如:mvn appscan:prepare
有关更多信息,请参阅配置 Maven 以搜索插件。
注: 要覆盖缺省名称空间行为,请使用-Dnamespaces="<semi-colon delimited list of namespaces to scan>"
命令行选项。缺省情况下,ASoC 检测给定项目的源文件的名称空间,并将扫描的类添加到允许列表,以仅包括存在于同一名称空间中的类。将该属性设置为空字符串 (""
) 将完全禁用白名单。注: 如果您想自行对插件进行修改,则可以在此处找到源代码。 - 要仅生成 IRX 文件,请发出:
使用 Maven 插件加密 appscanSecret
关于此任务
appscan-maven-plugin
加密 API 密钥。在此处查看在 Maven 中加密密码的提示和技巧。过程
-
运行以下命令以生成加密的主密码:
mvn -emp myMasterPassword
-
将输出复制到
~/.m2/settings-security.xml
,并将其放入<master>
标记的值中:<settingsSecurity> <master>{rsB56BJcqoEHZqEZ0R1VR4TIspmODx1Ln8/PVvsgaGw=}</master> </settingsSecurity>
注: 您可以将settings-security.xml
文件存储在其他位置。如果这样做,则必须在运行时使用选项-Dsettings.security=path/to/security-settings.xml
指定位置。 -
运行以下命令以生成加密的 API 密钥:
mvn -ep apiSecret
-
将命令的输出复制到
~/.m2/settings.xml
并放入<password>
标记的值中。<username>
标记应包含用户的 API 密钥的值:<settings> <servers> <server> <id>appscan</id> <username>MyapiKey</username> <password>{uMrbEOEf/VQHnc0W2X49Qab75j9LSTwiM3mg2LCrOzI=}</password> </server> </servers> ... </settings>
-
使用 Maven 插件执行
analyze
目标:mvn com.hcl.security:appscan-maven-plugin:analyze -DappId=X49Qab75j9LSTwiM3mg2LCrO
如果将settings-security.xml
文件置于非缺省位置,那么必须在运行时指定该位置:mvn com.hcl.security:appscan-maven-plugin:analyze -DappId=X49Qab75j9LSTwiM3mg2LCrO -Dsettings.security=path/to/security-settings.xml