Local Code ScanningのJenkinsセットアップ
目次:
Local Code ScanningのJenkinsセットアップ
Section titled “Local Code ScanningのJenkinsセットアップ”Aikido Security Local Scannerは、お使いの環境内でAikido Securityのスキャンを実行できるツールで、コードが社内から一切出ないことを保証します。スキャンはローカルで行われ、その結果のみがAikido Securityプラットフォームにアップロードされます。このセットアップにより、レポート作成のためにLocal ScannerをJenkinsプロジェクトへ簡単に組み込むことができます。
Local Scannerを実行するには、Jenkinsノードが一定の要件を満たしている必要があります。現在サポートしているOSアーキテクチャは、Linux、macOS ARM64、Windowsです。バイナリをインストールする代わりに、Dockerイメージを直接実行することも可能です。
ノードに十分なリソースがあることを確認してください。4GB RAM、2コアCPU、14GBのストレージを備えたマシンでテスト済みです。
Linuxノードを使用している場合、バイナリを実行するにはglibcのバージョンも重要です。2018年にリリースされたバージョン2.27以上が必要です。そのため、比較的新しいLinuxオペレーティングシステムであれば、このバージョン以上を満たしていることがほとんどです。対応するオペレーティングシステムには以下が含まれます。
- CentOS 8以上
- Ubuntu 18.04以上
- Debian 10以上
- Fedora 28以上
お使いのオペレーティングシステムのglibcバージョンを確認するには、以下を実行します。
$ ldd --version ldd(Ubuntu GLIBC 2.30-0ubuntu2.1) 2.30Dockerを使用する場合、スキャナーはコンテナ内で実行されるため、Jenkinsノードに必要なのはDockerのインストールのみで、glibcやOSアーキテクチャの要件は適用されません。
一時フォルダ
Section titled “一時フォルダ ”スキャナーは、特定の操作を行うために一時的なローカルフォルダ(デフォルトでは.aikidotmp)を作成します。
- 効率的なスキャンを行うため、一部のlockfileをコピーします。
- スキャナーの結果を書き込みます。
このフォルダは、スキャン終了後にクリーンアップされます。
さらに、一部のファイルが一時的な作業ディレクトリにコピーされます。十分な空き容量があることを確認してください。最低2GBを推奨します。
Local Scanningのセットアップ方法
Section titled “Local Scanningのセットアップ方法 ”前提条件: Local Scanningを利用できるアカウントを作成済みであることを確認してください。Local Scanning用アカウントの作成に関する詳細情報。
1. 認証トークンを取得する
Section titled “1. 認証トークンを取得する ”-
Local Scannerセットアップページに移動します
-
認証トークンを生成してコピーします。このトークンは一度しか表示できない点にご注意ください。
-
プロジェクトでLocal Scannerを実行する際に、このトークンを引数
--apikeyとして追加します。 -
このトークンをJenkinsに保存します。これを行うには、Jenkinsの設定にある「Credentials」ページに移動します。

2. プロジェクトへのLocal Scannerの追加
Section titled “2. プロジェクトへのLocal Scannerの追加 ”オプションA — バイナリ: Aikido UIからLocal Scannerのバイナリをダウンロードします。Jenkinsでは、ビルドノード上にバイナリを追加し、名前でアクセスできるよう/usr/local/binに配置します。バイナリに実行権限があることを確認してください(例: chmod +x -R aikido-local-scanner)。
オプションB — Docker: Jenkinsノードに Dockerがインストールされていることを確認してください。バイナリのダウンロードは不要で、スキャナーイメージは自動的にDocker Hubから取得されます。イメージは以下から利用可能です。
- Docker Hub:
aikidosecurity/local-scanner - AWS ECR:
public.ecr.aws/z1o3v2w5/aikidosecurity/local-scanner
3. Local Scannerを実行する
Section titled “3. Local Scannerを実行する ”あとはリポジトリでスキャナーを実行するだけです。
Local Scannerがデフォルトブランチに対してのみトリガーされるようにしてください。Aikidoはデフォルトでは、依存関係やコードの問題について、リポジトリ内の1つのブランチ(通常はmainまたはmasterブランチ)をスキャン対象としてサポートしています。そのため、Aikidoプラットフォーム上でスキャン結果が混在しないよう、そのブランチのみでLocal Scannerを実行することを推奨します。gitを使用している場合は、Branches to buildセクションで指定できます。

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

以下のいずれかのコマンドを使って、プロジェクトにExecute shellステップを追加します。
オプションA: バイナリ
--branchnameオプションで対象のブランチを指定します。
aikido-local-scanner scan ./ --apikey $AIKIDO_API_KEY --repositoryname DemoApp --branchname mainコマンドを実行する際は、--branchnameオプションで対象のブランチを指定してください。
オプションB: Docker
リポジトリディレクトリに移動し、Dockerイメージを使ってスキャナーを実行します。-vフラグはソースコードをコンテナにマウントします。
docker run --rm \ -v "$(pwd):/scan-target" \ aikidosecurity/local-scanner \ scan /scan-target \ --apikey $AIKIDO_API_KEY \ --repositoryname DemoApp \ --branchname main注: Jenkinsのワークスペースパスにスペースが含まれる場合は、引用符で囲んでください。
--rmフラグは、スキャン完了後にコンテナを自動的に削除します。
このリポジトリに対する初回のスキャンの場合、Aikidoは指定した名前でリポジトリを作成し、そこにすべてのスキャン結果を格納します。以降のスキャン結果は、このリポジトリ名の下にAikido上で集約されます。
CLIオプションの詳細はこちらをご覧ください。
また、--fail-on <severity>フラグを使って、リリースゲーティングモードでスキャナーを実行することもできます。この機能は、リリース前にリポジトリをスキャンする際に有用で、リリース候補にオープンな問題がないことを保証します。リリースゲーティングモードで実行すると、スキャン終了後に選択した深刻度以上のオープンな問題が存在する場合、スキャナーのプロセスは失敗します。
リリースゲーティングコマンドの例:
aikido-local-scanner scan ./ --apikey $AIKIDO_API_KEY --repositoryname DemoApp --branchname main --fail-on critical4. スキャン結果を確認する
Section titled “4. スキャン結果を確認する ”初回のスキャンが完了したら、Aikido Feedに移動して結果を確認できます。指定した名前のリポジトリが作成され、スキャンのすべての結果が格納されています。