コンテンツにスキップ

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

Bitbucket変数へのAPIキーの追加:

APIキーを生成したら、それをBitbucket変数に追加します。

Add variable

パイプラインの更新:

次に、セキュリティスキャンをトリガーするためのOstorlabステップを含めるように、Bitbucketパイプラインを更新する必要があります。これは、Android APKで高速スキャン(fast scan)を実行し、重要度(severity rating)がHIGHの脆弱性があった場合にパイプラインを失敗させる構成例です。

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プロンプトを提供することもできます。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

パイプラインを更新した後、ここで進行状況を確認します。

Check progress

詳細についてはパイプラインのログ(logs)を確認し、スキャンIDを取得して、Ostorlabの組織アカウント内でスキャンを監視します。

Monitor scan

例えば、これは現在のスキャンのレポートです。

Scan report

結論

このガイドでは、AndroidおよびiOSモバイルアプリ向けのOstorlabの自律型セキュリティテストを、Bitbucket Pipelineに効果的かつ簡単に統合するために必要な手順について説明しました。