コンテンツにスキップ

Local On-Prem Code ScanningのGitHub Actionセットアップ

Aikido Security Local Scannerを使用すると、GitHub Action内、あるいは**GitHub Enterprise Server(GHES)**環境をお使いの場合に、直接スキャンを実行できます。コードが社内から一切出ることはありません。スキャンはローカルで実行され、その結果のみがAikido Securityプラットフォームにアップロードされます。このセットアップにより、Aikidoダッシュボードを通じて脆弱性を管理しつつ、最大限のプライバシーを確保できます。

  • GitHub Enterprise Server環境(セルフホストまたはエンタープライズマネージド)
  • CI/CDランナー — GitHub Actions
  • Aikido Local Scanningアカウント
  • システム要件:
    • 2〜4 CPUコア
    • 8〜16 GB RAM
    • アウトバウンドHTTPS(443)アクセスが有効であること

Local On-Prem Scanningのセットアップ方法

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

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

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

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

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

  4. Settings > Secrets and variables > Actionsに移動して、このトークンをGitHub Secretsに保存します。

    保存されたAIKIDO_API_KEYシークレットを示すリポジトリシークレット管理インターフェース

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

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

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

.github/workflows/aikido-scan.ymlの例:

​on:
push:
branches:
- main
name: Aikido Scan
jobs:
aikido-local-scan-repo:
runs-on: ubuntu-latest
container:
image: aikidosecurity/local-scanner:latest
steps:
- uses: actions/checkout@v4
with:
token: ${{ secrets.GITHUB_TOKEN }}
path: my-repo
- name: Run scan
run: aikido-local-scanner scan my-repo --apikey ${{ secrets.AIKIDO_API_KEY }} --repositoryname MyRepo --branchname main

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

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

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

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

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

初回のスキャン後:

  • -repositorynameで指定した名前のリポジトリがAikido上に表示されます。
  • 以降のスキャンは、同じリポジトリを新しい検出結果で更新します。
  • 未解決の問題があるデプロイをブロックしたい場合は、リリースゲーティングまたはPRゲーティングモードでスキャンを実行するよう設定できます。
  • Local ScannerアカウントにはUI上のAutoFixは含まれません。AutoFixはIDE統合経由で利用可能です
  • デフォルトではすべてのスキャン種別が有効です。-scan-typesフラグを使ってスキャン範囲を制限できます(例: SASTのみ)
  • 結果が混在しないよう、スキャン対象は1つのブランチ(通常はmainまたはmaster)のみにしてください。