コンテンツにスキップ

Local Code ScanningのCircleCIセットアップ

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

Local Scanningのセットアップ方法

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

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

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

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

  3. プロジェクトでLocal Scannerを実行する際に、このトークンを引数--apikeyとして追加します。

  4. Project Settings > Environment Variables > Add Environment Variableに移動して、このトークンを環境変数として保存します。

    APIキーのエントリと、変数の追加・インポートオプションを示す環境変数管理インターフェース

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

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

CircleCIパイプラインでLocal Scannerを使う最も簡単な方法は、Aikidoが提供するDockerイメージを利用することです。

.circleci/config.ymlの例:

version: 2.1
jobs:
run-aikio-scan:
docker:
- image: aikidosecurity/local-scanner:latest
steps:
- checkout:
path: my-app
- run:
name: "Run Aikido scan"
command: aikido-local-scanner scan my-app --repositoryname my-app --branchname main --apikey "$AIKIDO_API_KEY"
workflows:
my-workflow:
jobs:
- run-aikio-scan:
filters:
branches:
only:
- main

コマンドを実行する際は、--branchnameオプションで対象のブランチを指定してください。

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

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

また、リリースゲーティングモードまたはPRゲーティングモードでスキャナーを実行することもできます。リリースゲーティングモードは、リリース前にリポジトリをスキャンする際に有用で、リリース候補にオープンな問題がないことを保証します。リリースゲーティングモードで実行すると、スキャン終了後に選択した深刻度以上のオープンな問題が存在する場合、スキャナーのプロセスは失敗します。PRゲーティングモードは、PR内で新たに混入した可能性のある問題を検出するために使用できます。

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

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