日本語

ローカルコードスキャンのためのGitLab Self-Managedセットアップ

目次:

ローカルコードスキャンのためのGitLab Self Managedのセットアップ

Aikido Security Local Scannerは、お客様の環境内でAikido Securityのスキャンを実行できるツールであり、コードが社外に出ることはありません。スキャンはローカルで実行され、その結果がAikido Securityプラットフォームにアップロードされます。このセットアップにより、レポート作成のためにLocal ScannerをGitLabプロジェクトへ簡単に統合できます。

Local Scanningのセットアップ方法

前提条件: Local Scanningが利用可能なアカウントを作成済みであることを確認してください。Local Scanningアカウントの作成に関する詳細はこちら。

1. 認証トークンを取得する

  1. Local Scannerセットアップページに移動します。

  2. 認証トークンを生成してコピーします。このトークンは一度しか表示されないことに注意してください。

  3. パイプラインで使用できるように、認証トークンをGitlabのCI/CD変数に追加します。
    これを行うには、グループの設定ページに移動し、CI/CDサブページに移動します。

    変数、Runner、Auto DevOpsの自動化を設定するためのGitLab CI/CD設定ページ。

    Variablesの横にある「Expand」をクリックし、「Add variable」をクリックします。次に、キーをAIKIDO_LOCAL_SCANNER_TOKEN、値をコピーしたトークンの内容として、認証トークンを追加します。

2. Local Scannerを実行する

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

Dockerを使用する

GitlabパイプラインでLocal Scannerを使用する最も簡単な方法は、Dockerイメージを使用することです。
​
.gitlab-ci.ymlの例:

default:
  image:
    name: aikidosecurity/local-scanner:latest
    entrypoint: [""]

run_aikido_selfscanner:
  script:
  - aikido-local-scanner scan ./ --apikey $AIKIDO_LOCAL_SCANNER_TOKEN --repositoryname $CI_PROJECT_NAME --branchname main
  rules:
    - if: $CI_COMMIT_BRANCH == "main"

コマンドを実行する際は、--branchnameオプションを使用してデフォルトブランチを指定してください。

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

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

スキャナーをリリースゲーティングモードまたはPRゲーティングモードで実行することもできます。リリースゲーティングモードは、リリース前にリポジトリをスキャンする際に便利で、リリース前に未解決の問題がないことを確認できます。リリースゲーティングモードで実行すると、スキャン完了後に選択した重大度以上の未解決の問題がある場合、スキャナープロセスは失敗します。PRゲーティングモードは、PRで新たに導入された可能性のある問題をスキャンするために使用できます。

リリースゲーティングモードおよびPRゲーティングモードの詳細については、こちらの記事をご覧ください。

3. スキャン結果を確認する

初回のスキャンが完了したら、Aikido Feedに移動して結果を確認できます。指定した名前のリポジトリが作成され、スキャンのすべての結果が格納されています。