Local ScannerによるGitHubのPR gating
Aikido Local Scannerを使うと、CIパイプラインにセキュリティゲートを設定できます。
PR gatingは、新しいコードがデフォルトブランチにマージされる前に、セキュリティ基準を満たしていることを保証します。プルリクエストで導入された変更のみをスキャンします。スキャンによって、設定した重要度のしきい値以上の新しい問題が検出された場合、CIパイプラインは失敗します。
これにより、既存の検出結果は別途対応しつつ、新しい脆弱性の混入を防ぐことができます。
PR gatingを有効にするには、--fail-on <severity> オプションを追加して希望の重要度レベルを選択します。次に、PR gatingを実行することを示す --gating-mode pr オプションを追加します。また、base(--base-commit-id <commit-id>)とhead commit(--head-commit-id <commit-id>)も指定する必要があります。base commit idに対して以前スキャンが実行されていた場合は、その結果と比較されます。実行されていない場合は、デフォルトブランチの最新スキャンと比較されます。
GitHub環境でのLocal Scannerの設定に関する一般的な情報は、こちらの記事をご参照ください。
PR gating用の.github/workflows/aikido-scan.ymlの例:
on: pull_request: branches: - main
name: Aikido Scanjobs: 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: ${{ github.event.repository.name }} fetch-depth: 0 # Makes sure base and head commit are accessible in workflow - name: Run scan run: aikido-local-scanner scan ${{ github.event.repository.name }} --apikey ${{ secrets.AIKIDO_API_KEY }} --repositoryname ${{ github.event.repository.name }} --branchname ${{ github.event.pull_request.head.ref }} --gating-mode pr --fail-on critical --base-commit-id ${{ github.event.pull_request.base.sha }} --head-commit-id ${{ github.event.pull_request.head.sha }}