Ostorlab 与 Jenkins 集成
1. 生成新的 API 密钥
第一步是生成 API 密钥。为此,只需遵循以下步骤:
前往 report.ostorlab.co
单击 Menu 按钮

单击 Integrations/API 展开

单击 API Keys

单击 New 生成新的 API 密钥

复制 API 密钥。您还可以为密钥添加名称和到期日期。

不要忘记单击保存按钮来保存您的密钥。

2. 将 Ostorlab 的 API 密钥添加到 Jenkins 凭据中
在 Jenkins 主仪表板中,单击 Add Credentials 按钮。

在 Kind 下拉列表中,选择 Secret text。

在 ID 字段中输入 apiKey。

在 Secret 字段中输入您的 API 密钥。

输入描述以识别该密钥

单击 create 保存凭据。

Freestyle 项目
要在您的 freestyle 项目中定义 jenkins 作业,请按照以下步骤操作:
在您的 Build Environment 中,将 Secret text 绑定添加到您的 Jenkins 项目配置中,并输入以下信息:

向您的 Jenkins 项目配置添加一个 "Run Ostorlab Security Scanner" 构建步骤。

并输入以下信息:
您要扫描的移动应用程序的 file_path。

单击 Advanced settings 以配置您的运行:

输入 scan_title。

选择 platform 是 Android 还是 iOS。

选择用于扫描的 scan_profile。您可以选择用于快速静态分析的 Fast Scan,或用于全静态、动态和后端分析的 Full Scan。

wait_for_results,该选项会暂停作业直到安全分析完成或超时。

max_wait_minutes,这是作业超时前要等待的时长。

break_build_on_higher_security_risk_threshold,如果选择该选项,如果发现结果的风险等于或超过指定的阈值,Jenkins 作业将会失败。

security_risk_threshold,将导致构建失败的最低风险阈值。

credentials,在动态测试期间使用。
名称对应于视图中字段的 ID 或标签(例如 username 或 password)。
值对应于要在字段中键入的输入内容。

启动您的移动构建,您将在 artifacts 文件夹中看到扫描风险。

Jenkins 流水线
此外,您也可以在 Jenkins Pipeline 的情况下进行集成。
下面是一个用于运行扫描的示例步骤:

pipeline {
agent any
environment {
apiKey = credentials('apiKey')
jsonCredentials = "${params.Credentials}"
}
parameters { string(name: 'Credentials', defaultValue: '[{"name": "username", "value": "MyUsername"}, {"name": "password", "value": "MyPassword"}]', description: '') }
stages {
stage('security-test') {
steps {
step([$class: 'OPlugin', apiKey:env.apiKey, Jsoncredentials:env.jsonCredentials, filePath: '/home/asasas/IdeaProjects/ostorlab-plugin/work/workspace/as/InsecureBankv2.apk',
scanProfile: 'Fast Scan', platform: 'android'])
}
}
}
}
支持的参数列表:
- filePath:(必填)输入移动应用程序的路径。
- apiKey:(必填)输入用于验证 API 请求的 API 密钥。
- scanProfile:选择要运行的扫描配置文件。您可以选择用于快速静态分析的 Fast Scan,或用于全静态、动态和后端分析的 Full Scan。
- platform:设置平台类型 [android, iOS]。
- waitForResults:(可选)暂停作业直到安全分析完成或超时。
- waitMinutes:(可选)作业超时前要等待的时长。
- breakBuildOnScore:(可选)如果设置为 true,如果发现结果的风险等于或超过阈值,该步骤将失败。
- riskThreshold:(可选)将导致构建失败的最低风险阈值。
- JsonCredentials:(可选)用于动态测试的凭据。它应该是一个作为有效 JSON 的字符串:
[{"name": "username", "value": "MyUsername"}, {"name": "password", "value": "MyPassword"}] - title:(可选)输入扫描标题。