OstorlabとBitbucketの統合
概要
このガイドでは、Bitbucket Pipelineを使用して、セキュリティおよびプライバシーテストをモバイルアプリケーションのパイプラインビルドに簡単に統合する方法について説明します。
ビデオデモンストレーション
統合プロセスの視覚的なウォークスルーについては、この短いビデオをご覧ください。
APIキーの生成:
最初のステップは、新しいAPIキーを生成することです。組織のダッシュボードで、メニューボタンをクリックします。

次に "Integrations/API" をクリックして展開します。

そしてAPI keysを選択します。

ここから "New"(新規)をクリックします。

APIキーをコピーします。キーには名前と有効期限を追加することもできます。

保存(save)ボタンをクリックしてキーを保存することを忘れないでください。

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

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

- 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プロンプトを提供することもできます。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コマンドを実行します:

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

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

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

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