为 Gradle 项目运行静态分析
要启动文件的分析,必须生成将提交到云的 IRX 文件。HCL AppScan 360° Gradle 插件用于自动扫描 Gradle 中的 Java 和 Java Web 项目。它为应用了“java”插件和/或“war”插件的 Gradle 项目生成 IRX 文件。它还可以将生成的 IRX 文件提交到 AppScan 360° 服务以进行自动分析。有关应用插件以及确定最新插件版本的信息,请参阅 Gradle 插件。
过程
要为 Gradle 项目生成 IRX 文件:
- 在命令提示符处,发出命令以将目录切换到包含您的 Gradle 项目的位置。
-
设置
APPSCAN_OPTS
环境变量,以在运行扫描之前指定全局选项。使用APPSCAN_OPTS
设置扫描速度,启用密钥扫描,启用调试日志记录等。 -
发出以下某个命令:
- 要仅生成 IRX 文件,请发出
appscan-prepare
。该命令为构建中的所有 Java 和 War 项目生成一个 IRX 文件。缺省情况下,IRX 文件在根项目的构建目录中生成。您可以稍后将 IRX 文件提交到 ASoC。
- 要生成 IRX 文件并将其发送到 AppScan 360° 服务以进行分析,请发出
appscan-analyze
该命令将生成 IRX 文件并将其提交到 AppScan 360° 服务以进行分析。此任务需要 API 密钥、密码和应用程序标识。
可配置选项
可以使用
-Doption=value
语法通过命令行上的 JVM 参数或通过构建脚本中的appscanSettings
块来设置以下选项。表 1. Gradle 插件的可配置选项 选项 缺省值 描述 irxName
根项目的名称 。 生成的 .irx 文件的名称。 irxDir
根项目的构建目录。 生成的 .irx 文件的位置。 appId
空值。对于 appscan-analyze
是必需的AppScan 360° 服务中应用程序的标识。 appscanKey
空值。对于 appscan-analyze
是必需的用户的 API 密钥以供认证。 appscanSecret
空值。对于 appscan-analyze
是必需的用户的 API 私有密钥以供认证。 namespaces
空值。 覆盖自动名称空间检测。设置为 ""
以禁用名称空间检测。示例 1:在命令行中指定选项:gradle appscan-prepare -DirxName=MyApp
示例 2:在构建脚本中指定选项:appscanSettings { irxName="MyApp" irxDir="/myApplication/sample" }
注: appscan密钥和 appscan密码选项可以在用户的 Gradle.properties 文件中指定。这避免了在构建脚本或命令行中指定认证信息的需要。例如,将以下行添加到 ~/.gradle/gradle.properties 文件(如果文件不存在,则创建该文件):appscanKey="2358cd02-3fs3-322c-62c9-b5cc63c61f2a"
appscanSecret="qU939siTXgF7csk3jSig+Vza7ilWLu/Uy/ReWye5E/c="
注: 要覆盖缺省名称空间行为,请使用-Dnamespaces="<semi-colon delimited list of namespaces to scan>"
命令行选项。缺省情况下,AppScan 360° 检测给定项目的源文件的名称空间,并将扫描的类添加到允许列表,以仅包括存在于同一名称空间中的类。将该属性设置为空字符串 (""
) 将完全禁用白名单。注: 如果您想自行对插件进行修改,则可以在此处找到源代码。 - 要仅生成 IRX 文件,请发出
使用 Gradle 插件加密 appscanSecret
关于此任务
appscan-gradle-plugin
。注: 最新版本的凭证插件需要 Gradle 5.0 或更高版本。有关插件的其他信息,请参阅
gradle-credentials-plugin
。过程
-
将凭证插件与
appscan-gradle-plugin
一起应用到您的项目中:plugins { id 'nu.studer.credentials' version '2.1' id ' com.hcl.security.appscan' version '1.0.2' }
-
运行以下命令以加密 API 密钥:
缺省情况下,加密值将存储在gradle addCredentials --key appscanSecret --value Yq9M+iFHyhRU2eEx+XobXwhX9xoW4hEXWz2fJDI8I=1
~/.gradle/ gradle.encrypted.properites
中并从中检索。使用credentialsLocation
属性指定其他位置。gradle addCredentials --key appscanSecret --value Yq9M+iFHyhRU2eEx+XobXwhX9xoW4hEXWz2fJDI8I=1 -PcredentialsLocation=/some/directory
-
使用构建脚本中的
appscanSettings
块设置appscanKey
值和加密的appscanSecret
值:
您也可以在这里设置 AppScan 360°appscanSettings { appscanKey=22iFHyhRU2eEx+XobXwhX9xoW4hEXWz2fJDI8I=1 appscanSecret=credentials.appscanSecret appId=95e69f47-9547-4378-ab93-f5d48ada52cc1 }
appId
。 -
运行
appscan-analyze
:gradle appscan-analyze
如果未在构建脚本中指定appId
,请在运行时在命令行上设置它:
如果在加密gradle appscan-analyze -DappId=95e69f47-9547-4378-ab93-f5d48ada52cc1
appscanSecret
值时使用了credentialsLocation
属性,请在运行时也指定该属性:gradle appscan-analyze -PcredentialsLocation=/some/directory