コンテンツにスキップ

Jenkinsでのローカルイメージスキャン設定

Aikido Security Local Scannerは、お使いの環境内でAikido Securityのスキャンを実行できるツールで、データが環境外に出ることはありません。スキャンはローカルで実行され、その結果がAikido Securityプラットフォームにアップロードされます。この設定により、自分のマシン上またはCI/CDパイプライン内で、レジストリに送信される前にイメージをローカルでスキャンできます。

イメージのローカルスキャンを設定する方法

Section titled “イメージのローカルスキャンを設定する方法 ”
  1. Local Scanner Image設定ページに移動します
  2. 認証トークンを生成してコピーします。このトークンは一度しか表示されないのでご注意ください。
  3. プロジェクトでLocal Scannerを実行する際、このトークンを引数--apikeyとして追加します。
  4. このトークンをJenkinsに保存します。そのためには、Jenkinsの設定にある「Credentials」ページに移動します。

グローバルで使用する新しいシークレットテキスト認証情報を追加するJenkinsの画面。

2. プロジェクトへのLocal Scannerの追加

Section titled “2. プロジェクトへのLocal Scannerの追加 ”

Aikido UIからLocal Scannerのバイナリをダウンロードします。Jenkinsでは、ビルドノード上にこれを追加し、/usr/local/binに配置することで名前で呼び出せるようにします。バイナリに実行権限があることを確認してください(例: chmod +x -R aikido-local-scanner)。Dockerがインストールされているランナーを使用している場合は、この手順をスキップして、代わりにLocal ScannerのDockerイメージを使ってスキャンを実行することもできます(下記参照)。

あとはリポジトリに対してスキャナーを実行するだけです。

Local Scannerはデフォルトブランチに対してのみトリガーされるようにしてください。Aikidoはデフォルトでは、リポジトリ内の1つのブランチ(通常はmainまたはmasterブランチ)について依存関係・コードのissueをスキャンします。そのため、Aikidoプラットフォーム上でスキャン結果が混在しないよう、Local Scannerはそのブランチでのみ実行することを推奨します。gitを使用している場合は、Branches to buildセクションでこれを指定できます。

「main」ブランチのみをビルドするようJenkinsを設定している画面。

次に、ビルド環境にAPIキーを追加して、プロジェクト内で使用できるようにします。

ビルド環境でAikido用のシークレットAPIキーのバインディングを設定している画面。

プロジェクトに以下の内容で「Execute shell」ステップを追加します。イメージ名を使用することも、イメージのtarアーティファクトのパスを使用することもできます。

Terminal window
aikido-local-scanner image-scan your-image --apikey $AIKIDO_API_KEY

または、Aikidoが提供するDockerイメージを使用する場合

Terminal window
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock aikidosecurity/local-scanner image-scan your-image --apikey $AIKIDO_API_KEY

レジストリへのプッシュ前にリリースをゲーティングするスキャンを実行するには、上記のコマンドに--fail-on criticalを追加します。深刻度は必要なゲーティング要件に応じて調整してください。

最初のスキャンが完了したら、Aikido Feedで結果を確認できます。指定した名前のイメージがAikido UI上に作成され、スキャンのすべての結果が格納されます。