跳转至

Ostorlab 与 Bitbucket 的集成

概述

在本指南中,我们将探索如何使用 Bitbucket Pipeline 将安全和隐私测试轻松集成到您的移动应用程序管道构建中。

视频演示

观看这个简短的视频,了解集成过程的直观演练。

生成 API 密钥:

第一步是生成新的 API 密钥。在您的组织仪表板中,单击菜单按钮。

Click menu button

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

Click 'Integrations/API'

并选择 API keys。

Click 'API Keys'

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

Click 'New'

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

Fill 'Github_action_key'

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

Click save button

将 API 密钥添加到 Bitbucket 变量:

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

Add variable

更新您的 Pipeline:

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

Add step

- 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 包及其命令行界面组件。

Install ostorlab package

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

Create API key variable

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

Add title variable

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

Add scan profile variable

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

Add max wait time variable

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

Add target variable

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

Define asset type

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

Provide lock files

以下列表概述了受支持的 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 的更多信息

Provide credentials

您还可以提供 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 命令:

Execute Ostorlab command

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

Check progress

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

Monitor scan

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

Scan report

结论

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