# ローカルイメージスキャンのためのAzure DevOps Serverセットアップ

Aikido Security Local Scannerは、お使いの環境内でAikido Securityのスキャンを実行できるツールで、データが社外に出ることはありません。スキャンはローカルで実行され、その結果がAikido Securityプラットフォームにアップロードされます。このセットアップにより、レジストリに送信される前に、ご自身のマシン上またはCI/CDパイプライン内で任意のイメージをローカルでスキャンできます。

## イメージのローカルスキャンを設定する方法 <a href="#how-to-set-up-local-scanning-for-images" id="how-to-set-up-local-scanning-for-images"></a>

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

1. [Local Scanner Imageセットアップページ](https://app.aikido.dev/settings/container-image-registry/add/localscan)に移動します
2. 認証トークンを生成してコピーします。このトークンは一度しか表示できないことに注意してください。
3. このトークンはPipelineのセットアップで必要になります。

### 2. Local Scannerを実行する <a href="#id-2-running-the-local-scanner" id="id-2-running-the-local-scanner"></a>

左側のナビゲーションでPipelinesに移動し、_Pipelines_をクリックして、_New Pipeline_または_Create Pipeline_を選択します。Configureステップで、_Starter Pipeline_を選択します。

```yaml
trigger:
- master

pool:
  vmImage: ubuntu-latest

steps:
- script: docker build -t my-image .
  displayName: 'Build docker image'  
- script: docker run --rm -v /var/run/docker.sock:/var/run/docker.sock aikidosecurity/local-scanner image-scan my-image --apikey $(AIKIDO_API_KEY)
  displayName: 'Run Aikido scan'
```

ビルドとスキャンを別々のステージやジョブに分けることもできます。ユースケースに最も適した例を使用し、ニーズに合わせて調整してください。

```yaml
trigger:
  - master

pool:
  vmImage: ubuntu-latest

stages:
- stage: Build
  displayName: Build Docker Image
  jobs:
  - job: BuildAndSave
    displayName: Build and Save Docker Image
    steps:
      - script: |
          docker build -t my-image .
          docker save my-image -o $(Pipeline.Workspace)/my-image.tar
        displayName: 'Build and save Docker image to TAR'
      - task: PublishPipelineArtifact@1
        inputs:
          targetPath: '$(Pipeline.Workspace)/my-image.tar'
          artifactName: 'my-image-tar'
        displayName: 'Publish Docker image TAR as artifact'

- stage: Scan
  displayName: Scan Docker Image
  dependsOn: Build
  jobs:
  - job: RunScanner
    displayName: Scan with Aikido Local Scanner
    steps:
      - task: DownloadPipelineArtifact@2
        inputs:
          artifact: 'my-image-tar'
          path: '$(Pipeline.Workspace)'
        displayName: 'Download the saved image TAR'
      - script: |
          docker run --rm -v $(Pipeline.Workspace):$(Pipeline.Workspace) aikidosecurity/local-scanner image-scan $(Pipeline.Workspace)/my-image.tar --image-name my-image --apikey $(AIKIDO_API_KEY)
        displayName: 'Scan Docker image with Aikido'
```

\
次に、APIキーをシークレット変数として追加します。右上のVariablesをクリックし、新しい変数を追加します。名前にAIKIDO\_API\_KEYを入力します。_Keep this value secret_チェックボックスをオンにします。その後、パイプラインを保存して実行します。

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

最初のスキャンが完了したら、Aikido Feedに移動して結果を確認できます。指定した名前のイメージがAikido UIに作成され、スキャンのすべての結果が含まれています。
