为 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:preparejar、war和ear项目生成一个 IRX 文件。缺省情况下,IRX 文件在根项目的目标目录中生成。您可以稍后将 IRX 文件提交到 ASoC。 - 要生成 IRX 文件并将其发送到 ASoC 服务以进行分析,请执行命令
该命令将生成 IRX 文件并将其提交到 ASoC 服务以进行分析。此任务需要使用应用程序标识 (mvn package com.hcl.security:appscan-maven-plugin:analyzeappId)、API 密钥 (appscanKey) 和 API 密钥 (appscanSecret)。注: 如果 Maven 项目具有针对同一反应器构建中另一个项目的编译时依赖关系,则现有 Maven 错误可能导致命令失败。要解决此问题,请执行package目标以及prepare或analyze目标。例如:
或者mvn package com.hcl.security:appscan-maven-plugin:preparemvn 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