# ローカルオンプレコードスキャンのためのGitHub Actionsセットアップ

## はじめに

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

{% hint style="danger" %}
これは **該当しません** 通常のクラウドベースのスキャナーには適用されません。この GitHub Action のセットアップは、ローカルバイナリを使ったオンプレミス スキャン専用です。
{% endhint %}

### 前提条件 <a href="#how-to-set-up-local-scanning" id="how-to-set-up-local-scanning"></a>

* GitHub Enterprise Server 環境（セルフホストまたは企業管理）。
* CI/CD ランナー - GitHub Actions
* Aikido のローカルスキャン アカウント。
* システム要件:
  * CPU コア 2～4
  * RAM 8～16 GB
  * 送信先 HTTPS (443) アクセスが有効

### ローカルオンプレミス スキャンのセットアップ方法 <a href="#how-to-set-up-local-scanning" id="how-to-set-up-local-scanning"></a>

**前提条件**: Local Scanning を許可するアカウントを作成しておいてください。 [Local Scanning アカウントの作成方法の詳細](https://help.aikido.dev/code-scanning/local-code-scanning/account-creation-for-local-scanning-on-aikido).

#### 1. 認証トークンを生成する <a href="#id-1-get-your-authentication-token" id="id-1-get-your-authentication-token"></a>

1. へ移動 [Local Scanner セットアップページ](https://app.aikido.dev/settings/integrations/localscan).
2. 認証トークンを生成してコピーします。 **注** このトークンを表示できるのは 1 回だけです。
3. このトークンを引数として追加します `--apikey` を、プロジェクトで Local Scanner を実行する際に使用します。
4. Settings > Secrets and variables > Actions に移動して、このトークンを GitHub Secrets に保存してください。

   ![保存された AIKIDO\_API\_KEY シークレットを示すリポジトリシークレット管理インターフェース。](https://help.aikido.dev/_assets/fd25cfe5aa4a/ucarecdn-cb1943bf-30c2-4383-95fe-152c356fa5d0.png)

#### 2. ローカルスキャナーの実行 <a href="#id-2-running-the-local-scanner" id="id-2-running-the-local-scanner"></a>

これで、あとはリポジトリでスキャナーを実行するだけです。\
​\
ローカルスキャナーは必ずデフォルトブランチでのみトリガーされるようにしてください。デフォルトでは、Aikido は依存関係とコードの問題について、リポジトリ内の 1 つのブランチ（通常は main または master ブランチ）のスキャンをサポートしています。そのため、Aikido プラットフォーム上でスキャン結果が混ざらないように、ローカルスキャナーはそのブランチでのみ実行することを推奨します。これはワークフローファイルの 'on' セクションで指定できます。

#### Docker を使用する <a href="#using-docker" id="using-docker"></a>

GitHub Actions でローカルスキャナーを使う最も簡単な方法は、Docker イメージを使用することです。\
​\
例 `.github/workflows/aikido-scan.yml`:

```yaml
​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 オプションの詳細は [こちら](https://help.aikido.dev/code-scanning/local-code-scanning/cli-options-for-local-scanner).

を指定してスキャンタイプを渡すことで実行できます。リリースゲートまたは PR ゲートモードでスキャナーを実行することもできます。リリースゲートモードは、公開前にリポジトリをスキャンする際に役立ちます。これにより、公開の可能性がある時点で未解決の問題がないことを確認できます。リリースゲートモードで実行すると、スキャン完了後に選択した重大度以上の未解決の問題がある場合、スキャナープロセスは失敗します。PR ゲートモードは、PR で新たに導入された可能性のある問題をスキャンするために使用できます。

リリースまたは PR ゲートモードの詳細は [この記事](https://help.aikido.dev/docs/docs-ja/code-scanning/local-code-scanning/pr-gating-for-code-using-local-scanner).

#### 3. スキャン結果を確認する <a href="#id-3-check-your-scanning-results" id="id-3-check-your-scanning-results"></a>

最初のスキャン後:

* Aikido に、で指定した名前のリポジトリが表示されます。 `-repositoryname`.
* 以降のスキャンでは、同じリポジトリが新しい検出結果で更新されます。
* スキャンを **リリースゲート** または **PRゲーティング** モードで設定して、未解決の問題を含むデプロイをブロックできます。

### 注意事項と制限

* ローカルスキャナーアカウント **には AutoFix は含まれません** UI には含まれません。AutoFix は [IDE 連携](https://help.aikido.dev/docs/docs-ja/ai-and-dev-tools/ide-plugins-overview)
* デフォルトでは、すべてのスキャンタイプが有効です。スキャンを制限できます（例: SAST のみ）。 `-scan-types` フラグ。
  * 「[ローカルスキャナー用の CLI オプション](https://help.aikido.dev/docs/docs-ja/code-scanning/local-code-scanning/cli-options-for-local-scanner)」を読んで、ローカルスキャナーを実行する際に渡せるすべてのオプションを確認してください。
* スキャン対象は 1 つのブランチのみ（通常は `main` または `master`）にして、結果が混ざらないようにする必要があります。
