🍸

Aikido の API を利用する

By jiyuujin at

#Aikido#Qlty#CodeClimate#Security
Aikido の API を利用するをはてなブックマークに追加

Aikido の API を利用する

Aikido は、ベルギーの Aikido Security BV(2022 年設立)が提供する、コードからクラウドまでを一括保護するオールインワン型セキュリティプラットフォームです。

📈 Aikido を事前に調査してみた(非公開)

個人としての調査ログになります。

まとめポイント

ざっくり。

  • 価格差
    • Aikido は中小規模でも使いやすい価格帯($350–700/ 月、年額 $20k 前後)
    • Snyk はユーザー単位課金だが、見積取得が必要
    • Checkmarx は高額で大企業向け
    • SonarQube はコード量に応じた年間固定費
  • 導入フロー
    • 迅速導入と手軽さ → Aikido/Snyk
    • 深い分析・ガバナンス → Checkmarx
    • 品質重視なら SonarQube
  • 企業規模別の適合性
    • スタートアップ → Aikido
    • 成長企業 → Snyk
    • 大型企業 → Checkmarx
    • 品質重視 → SonarQube

※ 誤った情報の入っている可能性があります。

Aikido CLI を利用する

GitHub のリポジトリに以下の Secrets を設定してください:

Secret 名 内容
AIKIDO_CLIENT_API_KEY Aikido の API キー(ダッシュボード にて API キーを取得)

GitHub Actions でのワークフロー例

Code Climate の API と同様に、PR が作成された時点で変更されたファイルを対象に解析が実行されます。

:::details Aikido CLI を利用する。

name: Aikido Security Scan

on:
  pull_request:
    branches:
      - main

permissions:
  contents: read
  pull-requests: write

jobs:
  aikido-scan:
    name: Run Aikido SAST & Secrets Detection
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Set up Node.js
        uses: actions/setup-node@v4
        with:
          node-version: '20'

      - name: Install Aikido CLI
        run: npm install --global @aikidosec/ci-api-client

      - name: Get changed files
        id: changed
        uses: tj-actions/changed-files@v41
        with:
          separator: ","

      - name: Run Aikido scan
        id: aikido
        run: |
          aikido-api-client scan-release \
            "${{ github.event.repository.name }}" \
            "${{ github.sha }}" \
            --apikey "${{ secrets.AIKIDO_CLIENT_API_KEY }}" \
            --json-output scan-results.json || true

      - name: Filter for changed files only
        id: filter
        run: |
          CHANGED_FILES="${{ steps.changed.outputs.all_changed_files }}"
          echo "Changed files: $CHANGED_FILES"
          # Extract relevant findings only (pseudo-code, needs real jq)
          jq --arg files "$CHANGED_FILES" '
            .issues | map(select(.file | IN($files)))
          ' scan-results.json > filtered-results.json

      - name: Comment only changed file issues
        uses: marocchino/sticky-pull-request-comment@v2
        with:
          message: |
            🔎 **Aikido Scan Issues (Changed Files Only)**
            See below for security issues detected in files modified in this PR:
            ```json
            ${{ steps.filter.outputs.filtered-results }}
            ```

:::

Aikido の API を利用するをはてなブックマークに追加