# ローカルコードスキャンのためのAWS CodePipelineセットアップ

Aikido Security Local Scannerは、お使いの環境内でAikido Securityのスキャンを実行できるツールで、コードが社外に出ることはありません。スキャンはローカルで実行され、その結果がAikido Securityプラットフォームにアップロードされます。このセットアップにより、レポート目的でLocal ScannerをAWS CodePipelineに簡単に統合できます。

## Local Scanningのセットアップ方法 <a href="#how-to-set-up-local-scanning" id="how-to-set-up-local-scanning"></a>

**前提条件**：Local Scanningが利用可能なアカウントを作成済みであることを確認してください。[Local Scanningアカウントの作成に関する詳細はこちら](https://help.aikido.dev/en/articles/9070345-how-to-create-an-account-for-local-scanning-on-aikido)。

このガイドでは、AWS CodePipelineとAWS CodeBuildを使用してAWS上にCIパイプラインを作成します。このパイプラインは、コンテナイメージ内でAikido Securityのローカルスキャナーを使用してセキュリティスキャンを実行します。

## 1. CodeBuildプロジェクトを作成する

まず、スキャンを実行するCodeBuildプロジェクトを作成します。

CodeBuildに移動する

1. AWSコンソールを開きます
2. CodeBuildに移動します
3. 「Create build project」をクリックします

#### `aikido-security-scan` プロジェクトを作成します。

* Source：`No Source` を選択します。ソースはCodePipelineから提供されます。
*   Environment：

    * Image：Custom Image
    * Compute：EC2
    * Environment type：Linux Container
    * Image registry：Other Registry
    * External registry URL：public.ecr.aws/z1o3v2w5/aikidosecurity/local-scanner:latest

    <figure><img src="https://help.aikidogov.us/_assets/6694d2e96302/image-253.png" alt=""><figcaption></figcaption></figure>
*   Buildspec：

    ```
    version: 0.2

    phases:
      build:
        commands:
          - aikido-local-scanner scan . --apikey $AIKIDO_API_KEY --repositoryname MyRepo --branchname myDefaultBranch
    ```

#### CodeBuildプロジェクトにAPIキーを追加する

* [Local Scannerのセットアップページ](https://app.aikido.dev/settings/integrations/localscan)に移動します
* 認証トークンを生成してコピーします。このトークンは一度しか表示されないことに注意してください。
* このトークンをキー AIKIDO\_API\_KEY でAWS Secrets Managerに追加し、aikido/local-scanner-api-key のような名前を付けます。シークレットの完全なARNを控えておいてください。後ほど必要になります。
* CodeBuildプロジェクトはIAMサービスロールで実行されます。このロールにはシークレットを読み取る権限が必要です。ARNをご自身のシークレットのARNに置き換えて、次のポリシーを追加してください。

```
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "secretsmanager:GetSecretValue"
      ],
      "Resource": "arn:aws:secretsmanager:<region>:<account-id>:secret:aikido/local-scanner-api-key-*"
    }
  ]
}
```

* CodeBuildプロジェクトに戻り、Edit > Environment > Additional Configuration をクリックします。次の環境変数を追加します：
  * Name：AIKIDO\_API\_KEY
  * Value：aikido/local-scanner-api-key
  * Type：Secrets Manager

値の形式は \<secret-name>:\<json-key> です。CodeBuildはビルド時にこれを自動的に解決し、値を環境に注入します。詳細は[AWSドキュメント](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_EnvironmentVariable.html)を参照してください。

## 2. CodePipelineを作成する

スキャンしたいリポジトリ用のパイプラインをセットアップします。\
デフォルトブランチへの変更をトリガーとするソースステージを追加します。Buildステージでは、ビルドプロバイダーとしてAWS CodeBuildを選択し、`aikido-security-scan` ビルドプロジェクトを追加します。これにより、パイプラインが先ほど作成したビルドジョブに接続されます。

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

最初のスキャンが完了したら、Aikido Feedに移動して結果を確認できます。スキャンのすべての結果を含むリポジトリが作成されています。
