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

説明付きの新しいグローバル secret text credential を作成する Jenkins インターフェース。
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-scannerAWS ECR:
public.ecr.aws/z1o3v2w5/aikidosecurity/local-scanner
3. Local Scanner を実行する
あとは、リポジトリでスキャナーを実行するだけです。 Local scanner はデフォルトブランチでのみ起動されるようにしてください。デフォルトでは、Aikido はリポジトリ内の 1 つのブランチについて依存関係とコードの問題をスキャンできます。通常は main または master ブランチです。そのため、Aikido プラットフォーム上でスキャン結果が混在しないよう、local scanner はそのブランチでのみ実行することを推奨します。git を使用している場合は、次の ビルド対象のブランチ セクション。

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

次を追加します Execute shell ステップを、次のいずれかのコマンドとともにプロジェクトに追加します:
オプション A: バイナリ
次の --branchname オプションで、希望するブランチを指定します:
次の --branchname オプションを使用してコマンドを実行します。
オプション B: Docker
リポジトリのディレクトリに移動し、Docker イメージを使ってスキャナーを実行します。 -v フラグは、ソースコードをコンテナーにマウントします:
注: Jenkins のワークスペースのパスにスペースが含まれている場合は、引用符で囲んでください。The
--rmフラグは、スキャン完了後にコンテナーを自動的に削除します。
これがこのリポジトリの最初のスキャンである場合、Aikido は指定した名前のリポジトリを作成し、すべてのスキャン結果を含めます。以降のスキャン結果は、Aikido ではこのリポジトリ名の下に集約されます。
CLI オプションの詳細は こちら.
また、次の --fail-on <severity> フラグを使用することで、release gating モードでスキャナーを実行することもできます。この機能は、リリース前にリポジトリをスキャンする際に役立ち、リリース候補に対して未解決の問題がないことを確認できます。release gating モードで実行すると、スキャン終了後に選択した重要度以上の未解決の問題がある場合、スキャナー プロセスは失敗します。
release gating のコマンド例:
4. スキャン結果を確認する
最初のスキャンが完了したら、Aikido Feed に移動して結果を確認できます。指定した名前のリポジトリが作成され、スキャンのすべての結果が含まれています。
最終更新
役に立ちましたか?