容器化扫描故障诊断

AppScan 360° 中的扫描故障诊断与 AppScan on Cloud 中的略有不同。按照此处的指导在 AppScan 360° 中进行扫描问题故障诊断。

容器化扫描故障诊断首先由用户执行,如果未找到解决方案,则上报给管理员。用于故障诊断的常规路径如下:
  1. 用户查看错误消息。
  2. 用户查看常见错误案例。
  3. 如果问题仍然存在,用户将下载扫描日志并上报给管理员。
  4. 管理员调查用户提供的信息。
  5. 如果问题仍然存在,管理员将上报给 HCL 支持人员。

用户:请复审错误消息

转至失败的扫描的扫描页面。执行以下任一项操作:
  • 选择应用程序 > (应用程序) > 查看所有扫描 > (扫描名称),或者
  • 选择扫描 > (扫描名称)
查看扫描页面上显示的错误消息。常见错误案例如下所述。

用户:查看常见错误案例

最常见的错误包括:

开源

Error: Scan failed. Your subscription does not allow for Open Source scans. Please contact your sales representative for information regarding activating “Open Source” scanning. If you need further assistance, please reach out to our Technical Support team

您尝试了扫描开源文件。 AppScan 360° 不支持开源扫描。

如果您上载了 ZIP 文件进行扫描,请查看 ZIP 文件的内容。

  • 如果 ZIP 仅包含开源文件,请上载包含非开源文件的 ZIP 文件,然后重试扫描。
  • 如果 ZIP 文件包含 appscan-config.xml 配置文件,请查看文件中列出的属性。 AppScan 360° 不支持 openSourceOnly 属性。如果列出了 openSourceOnly="true",请删除此属性并重试扫描。
    注:此处查看 appscan-config.xml 支持的属性。
如果您上载了 IRX:
  1. 重新运行 appscan prepare,确认目标文件不是开源文件,并且未使用 openSourceOnly 参数。
    注:此处查看 appscan prepare 支持的参数。
  2. 如果问题仍然存在, 请下载扫描日志并上报给管理员

无 IPVA/IRX 损坏

Error: We are unable to complete the scan successfully. The scan failed since the IRX was not created properly. It could possibly be due to an incorrect configuration or missing dependencies. If you need additional assistance, please reach out to our Technical Support team.

在扫描的 IRX 生成步骤期间出现问题。

如果您上载了 IRX:

  • 如果您有权访问从中运行 appscan prepare 的位置,请检查在该过程中创建的 logs.zip 文件中是否存在错误。
  • SAClientUtil/logs/client.log 文件中查找错误。
  • 要进行更深入的 IRX 调查,请上报给管理员

如果您上载了 ZIP,请下载扫描日志并上报给管理员

未知错误

Error. An unknown error occurred.

存在几种可能性。下载扫描日志并上报给扫描管理员以进行进一步调查。

用户:下载扫描日志并上报给管理员

要下载扫描日志:
  1. 在扫描页面(应用程序 > 应用程序 > 查看所有扫描 > (扫描名称)扫描 > (扫描名称))中,复制扫描详细信息下列出的执行标识
  2. 在扫描页面的右上角,选择管理扫描 > 下载日志

    AppScan 360° 将 ZIP 文件下载到本地系统。记下下载的位置。

  3. 解压缩 ZIP 文件的内容。
  4. 打开 service.log 文件。

    在此文件中,您应该能够确定抛出错误的步骤。

    例如:
    Request received to perform scan for execution-id 4277b41a-18ad-44ad-81c9-9542e7af83d7.
    Initiated fetch scan data request with scan-id e7330058-c743-41af-8914-95eb30554d78.
    Downloaded scan data successfully.
    Request received to perform scan.
    Initiated prepare request with scan-id e7330058-c743-41af-8914-95eb30554d78.
    Received prepare (PERFORM_PREPARE) request with scan-id e7330058-c743-41af-8914-95eb30554d78 by preparer-6d7c4c9c58-c4kgq.
    Execution completed with exit code -1.
    Request received to publish status to server for scan-id e7330058-c743-41af-8914-95eb30554d78. (Failed: Execution completed with exit code -1.)

    在此示例中,错误是在 PERFORM_PREPARE 步骤中抛出的。由于 prepare 步骤中出现故障,请调查准备器 Pod。

要将问题上报给扫描管理员以进行进一步的故障诊断,请收集以下信息,其中一些信息可在 service.log 文件中找到:
  • 执行标识

    在上面的 service.log 示例中,为 execution-id 4277b41a-18ad-44ad-81c9-9542e7af83d7

  • 扫描标识

    在上面的 service.log 示例中,为 scan-id e7330058-c743-41af-8914-95eb30554d78

  • 准备器 Pod 标识(如适用)

    在上面的 service.log 示例中,为 preparer-6d7c4c9c58-c4kgq

  • 分析器 Pod 标识(如适用)
  • AppScan 360°service.log 中的扫描页面上报告的任何错误。
  • 日志 ZIP 文件。
  • 有关正在扫描的应用程序/项目的详细信息。

扫描管理员:调查用户提供的信息

访问扫描日志

要访问扫描日志:

  1. 打开 Swagger 页面。
  2. 在右上角选择扫描服务 > 扫描管理服务
  3. 单击授权
  4. 输入在部署过程中传递的 AppScan Central Platform 密钥 (--auth-token flag),然后单击授权
  5. 单击请尝试
  6. 将扫描标识粘贴到文本框,然后单击执行

    如果您不知道扫描标识,可以在从扫描页面下载的 service.log 中找到标识。

  7. 在响应正文中,单击下载日志链接。

    这会将包含多个日志文件的 ZIP 文件下载到本地机器上。记下所下载文件的位置。

  8. 抽取并调查以下日志是否有错误:
    • prepare.log
    • StaticAnalyzer-Errors.log
    • SASTAgent.log
  9. 解决所有错误,然后重试扫描。

调查具有无 IPVA/IRX 损坏错误的IRX

  1. 打开 Swagger 页面。
  2. 在右上角选择扫描服务 > 扫描管理服务
  3. 单击授权
  4. 输入在部署过程中传递的 AppScan Central Platform 密钥 (--auth-token flag),然后单击授权
  5. 向下滚动至下载 IRX 文件,然后单击请尝试
  6. 输入扫描标识,然后单击执行

    这会将 IRX 文件下载到本地机器上。记下所下载文件的位置。

  7. 使用 7-ZIP 或类似工具,右键单击 IRX 文件,然后单击打开存档

  8. 双击 internal.scan 以打开。

  9. 检查根目录中的 .log 文件以及日志文件夹中的日志中是否有任何错误。
  10. 解决所有错误,然后重试扫描。

调查具有开源错误的 IRX

注: AppScan 360° 不支持开源扫描。
如果扫描失败并显示错误 Your subscription does not allow for Open Source scans.,并且您上载了 IRX 进行扫描,请检查 IRX 文件中是否存在错误:
  1. 打开 Swagger 页面。
  2. 在右上角选择扫描服务 > 扫描管理服务
  3. 单击授权
  4. 输入在部署过程中传递的 AppScan Central Platform 密钥 (--auth-token flag),然后单击授权
  5. 向下滚动至下载 IRX 文件,然后单击请尝试
  6. 输入扫描标识,然后单击执行

    这会将 IRX 文件下载到本地机器上。记下所下载文件的位置。

  7. 使用 7-ZIP 或类似工具,右键单击 IRX 文件,然后单击打开存档

  8. 打开 scan.manifest 文件进行检查。
    如果 Total Languages Found = 1Language 部分中的唯一条目是 Open Source,则仅为开源扫描生成了 IRX 文件,或者指向了仅包含开源文件的位置:
    • 确认目标位置包含非开源文件。

      AppScan 360° 不支持开源扫描。

    • 确认您在 appscan prepare 命令或 appscan-config.xml 文件中没有使用不受支持的属性或参数。如果列出了 openSourceOnly="true",请删除此属性。

      AppScan 360°appscan prepareappscan-config.xml 中不支持 openSourceOnly 属性。

  9. 重试扫描。

访问扫描的 Pod 日志

如果您需要比 Swagger 下载可以提供的更详细的日志,您可以 从Pod 本身获取日志。
  1. 在 Kubernetes IDE 中,下载您正在调查的 Pod 的日志。
  2. 在此文件中,搜索扫描标识字符串。
    准备或分析阶段在日志中将如下所示:
    Payload(id= e7330058-c743-41af-8914-95eb30554d78, type=PERFORM_PREPARE,
    Payload(id= e7330058-c743-41af-8914-95eb30554d78, type=PERFORM_ANALYSIS,
    准备和分析命令在这些行之后运行。这是您应该会看到错误的地方。如果此日志中没有明确的错误指示,请连接到 Pod 并进一步调查。
  3. 连接到 Pod 并执行以下命令:
    >: cd ~/data/scans/<scan_id>/logs
  4. 查找错误:
    1. 有关准备错误,请查看 prepare.logSAClientUtil/logs/client.log

      SAClientUtil/logs/client.log 可在 ~/SAClientUtil 中找到。

    2. 有关分析错误,请查看 StaticAnalyzer-Errors.logSASTAgent.log
注: 如果已终止 Pod,您可以从活动 Pod 使用以下命令访问 Pod 日志:
>: cd logs/<pod_type>/
>: cat <pod_id>.log

调查其他错误案例

开源文件类型

Problems found during validation. 
The prepare operation found only open source files types. To run opensource only, use the -oso flag. To run security and opensource, include additional supported file types.

您已尝试运行仅开源扫描,或尝试了运行第三方扫描,但扫描需要额外配置。

AppScan 360° 不支持仅开源扫描。

验证扫描配置:
  • 确认您在 appscan prepare 命令中没有使用不受支持的参数。如果列出了 openSourceOnly="true"-oso,请删除此参数。

    AppScan 360°appscan prepare 中不支持 openSourceOnly-oso 参数。

  • 如果您上载了 IRX 并打算在只有第三方库的位置运行扫描,请启用第三方扫描。执行以下任一项操作:
    1. 将第三方标志添加到 appscan prepare,以选取第三方库并重试扫描。

      命令应如下所示:appscan prepare -tp

    2. thirdParty="true" 添加到 appscan-config.xml 并重试扫描。

      可以在使用 CLI 配置 IRX 文件生成中找到一个示例

  • 如果您上载了 ZIP 并打算在只有第三方库的位置运行扫描,请启用第三方扫描:
    • 如果要扫描第三方代码,请在 appscan-config.xml 中执行 add thirdParty="true",然后重试扫描。

无已知文件类型

No known scan file types were found during discovery. 
Please specify a location that contains .class, .jar, .war, .ear, .dll, .exe, PHP, Ruby, NPM packages, or JavaScript files.

您尝试了扫描不包含任何可扫描文件的位置。

验证目标位置中的文件是否是有效的文件类型。在静态分析语言支持中检查支持的文件类型列表。

如果您使用了 appscan-config.xml,请检查目标路径是否是有效位置。

无可扫描文件

Problems found during validation. 
No scannable files found. If you are trying to scan third party code, generate the IRX file using the --thirdParty option. If you are trying to scan for open source, generate the IRX using the -oso option. For a list of supported file types, refer to https://help.hcl-software.com/appscan/ASoC/src_language_support.html#src_language_support__table_ylp_rn5_jw.
  • 如果您打算在只有第三方库的位置运行扫描,您必须启用第三方扫描。执行以下任一项操作:
    1. 将第三方标志添加到 appscan prepare,以选取第三方库并重试扫描。

      该命令应类似于 appscan prepare -tp

    2. thirdParty="true" 添加到 appscan-config.xml 并重试扫描。

      可以在使用 CLI 配置 IRX 文件生成中找到一个示例

  • 如果您打算运行数据流分析扫描,请确认目标扫描位置包含 Java、.NET 或 C/C++ 正确的已编译文件类型,然后重试扫描。

  • 如果您打算运行仅源代码扫描,请确认目标位置包含正确的源代码文件类型,然后重试扫描。
  • 如果您打算运行仅源代码扫描,请从 appscan prepare 命令或从 appscan-config.xml 中删除 –sco 标志,然后重试扫描。

扫描管理员:与 HCL 支持人员合作

如果在应用此处呈现的故障诊断指导后,您仍然不确定导致扫描失败的原因,请联系 HCL 客户支持人员,以获得更多帮助。准备好向支持人员提供以下信息:
  • 执行标识
  • 扫描标识
  • 准备器 Pod 标识(如适用)
  • 分析器 Pod 标识(如适用)
  • AppScan 360°service.log 中的扫描页面上报告的任何错误。
  • 日志 ZIP 文件。
  • 有关正在扫描的应用程序/项目的详细信息。
  • 有关问题故障诊断和/或解决中执行的步骤的详细信息。
注: 将 Pod 上的任何重要信息和扫描详细信息备份到安全位置。缺省情况下,Pod 上的数据将在 10 天后被清除。