Ostorlab 与 Bitbucket 的集成
概述
在本指南中,我们将探索如何使用 Bitbucket Pipeline 将安全和隐私测试轻松集成到您的移动应用程序管道构建中。
视频演示
观看这个简短的视频,了解集成过程的直观演练。
生成 API 密钥:
第一步是生成新的 API 密钥。在您的组织仪表板中,单击菜单按钮。

接下来单击“Integrations/API”展开。

并选择 API keys。

在此处,单击“New”(新建)。

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

不要忘记单击保存 (save) 按钮以保存您的密钥。

将 API 密钥添加到 Bitbucket 变量:
一旦您生成了 API 密钥,请将其添加到您的 Bitbucket 变量中。

更新您的 Pipeline:
现在,您需要更新您的 Bitbucket pipeline 以包含一个用于触发安全扫描的 Ostorlab 步骤。这是一个示例配置,它对 Android APK 执行快速扫描 (fast scan),如果遇到严重程度等级为高 (HIGH) 的漏洞,则使 pipeline 失败。

- step:
name: Ostorlab Security Scan
caches:
- pip
script:
- pip install ostorlab[cli]
- export OSTORLAB_API_KEY=$SECRET_OSTORLAB_API_KEY
- export SCAN_TITLE="Test Bitbucket CI workflow"
- export SCAN_PROFILE='fast_scan'
- export BREAK_ON_RISK_RATING="HIGH"
- export MAX_WAIT_MINUTES=15
- export TARGET="oxo_insecure.apk"
- export ASSET_TYPE="android-apk"
- export EXTRA="--test-credentials-login test_login --test-credentials-password test_pass"
- ostorlab --api-key="$OSTORLAB_API_KEY" ci-scan run --title="$SCAN_TITLE" --scan-profile="$SCAN_PROFILE" --break-on-risk-rating="$BREAK_ON_RISK_RATING" --max-wait-minutes="$MAX_WAIT_MINUTES" $EXTRA $ASSET_TYPE
让我们来探讨此配置中的每一行:
首先,我们将需要使用 pip 安装 ostorlab 包及其命令行界面组件。

接下来,创建一个变量来存储 API 密钥。确保变量的名称与作为机密或环境变量添加到您的存储库中的名称相匹配。

为您的扫描添加标题 (title) 变量。

为扫描类型 (scan profile) 添加另一个变量。可以在 Fast Scan(用于快速静态分析)或 Full Scan(用于包括静态、动态和后端在内的全面分析)之间进行选择。

然后,添加一个变量以定义构建应等待安全分析完成的最长时间(以分钟为单位)。

添加一个目标 (target) 变量以指定目标应用程序的路径。

将资产类型 (asset type) 定义为 Android 或 iOS。在我的例子中,我选择了 Android,因为我打算扫描一个 Android 应用程序。

附加参数 (extra) 使您能够提供您的 Lock 文件以增强扫描分析。

以下列表概述了受支持的 SBOM/Lock 文件:
SPDX
CycloneDX
gradle.lockfile
pubspec.lock
buildscript-gradle.lockfile
pnpm-lock.yaml
package-lock.json
packages.lock.json
pom.xml
Gemfile.lock
yarn.lock
Cargo.lock
composer.lock
conan.lock
mix.lock
go.mod
requirements.txt
Pipfile.lock
poetry.lock
此外,它允许您提供简单的凭据或自定义凭据以启用经过身份验证的测试。
对于 2FA 支持,您可以添加以下凭据:
- SMS 2FA:--sms-2fa-sender <sender_name>(了解有关 SMS 2FA 的更多信息)
- Email 2FA:--email-2fa-sender-email-address <sender_email> --email-2fa-email-address <email_address> --email-2fa-password <email_password>(了解有关 Email 2FA 的更多信息)
- TOTP 2FA:--totp-2fa-seed <seed>(了解有关 TOTP 2FA 的更多信息)

您还可以提供 UI 提示 (UI prompts) 来引导扫描程序遍历您应用的 UI。UI 提示是一项强大的功能,允许您使用自然语言告诉扫描程序如何浏览应用程序。例如,您可以指定诸如“单击登录按钮”或“输入用户名和密码”之类的提示。
--ui-prompt-name accept-terms --ui-prompt-action "Scroll down and tap the 'Accept Terms' checkbox."
--ui-prompt-name submit --ui-prompt-action "Tap the 'Submit' button to complete the login process."
您可以为应用流中的不同步骤添加多个 --ui-prompt-name 和 --ui-prompt-action 标志。
此外,您可以使用 --ui-prompt-id 标志通过其 ID 引用现有的 UI 提示流。这允许您重用以前定义的 UI 提示流。您可以根据需要添加多个 --ui-prompt-id 标志。例如:
--ui-prompt-id 123 --ui-prompt-id 456
最后,按如下方式执行 Ostorlab 命令:

更新 pipeline 后,在此处检查进度。

检查 pipeline 日志 (logs) 以获取详细信息,检索扫描 ID,并在 Ostorlab 的组织帐户内监控您的扫描。

例如,这是当前扫描的报告。

结论
本指南涵盖了将针对 Android 和 iOS 移动应用的 Ostorlab 自主安全测试有效且轻松地集成到您的 Bitbucket Pipeline 中所需的步骤。