コンテンツにスキップ

local code scanning用のBambooセットアップ

Aikido Security Local Scannerは、お使いの環境内でAikido Securityのスキャンを実行できるツールで、コードが自社環境の外に出ることはありません。スキャンはローカルで行われ、その結果がAikido Securityプラットフォームにアップロードされます。このセットアップにより、レポート作成のためにLocal ScannerをBambooへ簡単に組み込むことができます。

Local Scanningのセットアップ方法

Section titled “Local Scanningのセットアップ方法 ”

前提条件: Local Scanningに対応したアカウントを作成済みであることを確認してください。Local Scanning用アカウントの作成に関する詳細情報

  1. Local Scannerセットアップページにアクセスします。
  2. 認証トークンを生成してコピーします。このトークンは一度しか表示できないのでご注意ください。
  3. プラン内で使用できるよう、認証トークンをBitbucketのPlan変数に追加します。これを行うには、plan configuration > Variablesに移動します。そこで、キーをAIKIDO_API_KEY、値をコピーしたトークンの内容として認証トークンを追加できます。また、ProjectレベルまたはGlobalレベルで変数を定義することも選択できます(こちらを参照)。

local scannerがデフォルトブランチでのみトリガーされるようにしてください。デフォルトでは、Aikidoはリポジトリ内の1つのブランチ(通常はmainまたはmasterブランチ)について、依存関係とコードの問題をスキャンすることをサポートしています。そのため、Aikidoプラットフォーム上でスキャン結果が混在しないよう、local scannerはそのブランチでのみ実行することをお勧めします。

エージェントがDockerを実行できる場合、Aikido Local ScannerのDockerイメージを使ってスキャンを実行できます。まず、コードがスキャン可能な状態であることを確認するために「Source Code Checkout」タスクがあることを確認してください。その後、以下のように「Docker」タスクを追加します。

Atlassianインテグレーションのタスク選択画面でDockerタスクタイプを検索している画面

コマンドとして「Run a Docker container」を選択します。イメージはDocker HubまたはAWS Elastic Container Registryから取得できます。

Container Commandフィールドには次のように入力します: scan . --apikey ${bamboo.AIKIDO_API_KEY} --repositoryname ${bamboo.planRepository.1.name} --branchname ${bamboo.planRepository.1.branch}

エージェントがDockerを実行できない場合は、Aikido Local Scannerのバイナリを直接使用できます。これを行うには、Local Scannerセットアップページから正しいバイナリをダウンロードしてください。
次に、これをエージェントのcapabilityとして追加する必要があります。

  • 対象のAgentへ移動する:
    • Bambooで、Build Resources > Agentsに移動します。
    • capabilityを追加したいagentを選択します。
  • Executable Capabilityを追加する:
    • Agent-specific capabilitiesセクションで、Add capabilityをクリックします。
    • Capability type > Executableを選択します。
    • Executable labelに、Aikido Local Scannerなど、実行ファイルの名前を入力します。
    • Pathフィールドに、agentマシン上のaikido-local-scannerバイナリへのパスを指定します。

これで、Aikido Local ScannerをPlan内のTaskとして使用できます。まず、コードがスキャン可能な状態であることを確認するために「Source Code Checkout」タスクがあることを確認してください。その後、以下のように「Command」タスクを追加します。

ビルド自動化ツールでのコマンド実行オプションを表示するタスクタイプメニュー

実行ファイルとして「Aikido Local Scanner」を選択し、Argumentフィールドにコマンドパラメーターを追加します。

Terminal window
scan . --apikey ${bamboo.AIKIDO_API_KEY} --repositoryname ${bamboo.planRepository.1.name} --branchname ${bamboo.planRepository.1.branch}

これがこのリポジトリの初回スキャンである場合、Aikidoは指定した名前でリポジトリを作成し、そこに全てのスキャン結果が格納されます。以降のスキャン結果も、このリポジトリ名の下にAikido内で集約されます。

デフォルトでは全てのスキャンタイプが実行されます。一部のスキャンのみ実行したい場合(例: SASTスキャンのみ)は、--scan-typesオプションでスキャンタイプを指定することで実行できます。CLIオプションの詳細はこちらをご覧ください。

スキャナーはrelease gatingモードまたはPR gatingモードでも実行できます。release gatingモードは、リリース前にリポジトリをスキャンする際に役立ち、潜在的なリリース前に未解決のissueがないことを保証します。release gatingモードで実行する場合、スキャン終了後に選択した深刻度以上の未解決issueが存在すると、スキャナープロセスは失敗します。PR gatingモードは、PR内で新たに発生した可能性のあるissueをスキャンするために使用できます。

release gatingモードまたはPR gatingモードの詳細はこちらの記事をご覧ください。

最初のスキャンが完了したら、Aikido Feedにアクセスして結果を確認できます。指定した名前のリポジトリが作成され、そこにスキャンの全結果が格納されています。