日本語

Aikido Terraform プロバイダー

公式の Aikido Terraform プロバイダーを使用して、Aikido リソースをコードとして管理します 管理 API。これは、すでに Terraform でインフラをプロビジョニングしており、リポジトリの有効化、AutoFix 設定、PR チェックも同じワークフローに従わせたい場合に便利です。

このプロバイダーは、以下の両方で公開されています。 Terraform Registry と OpenTofu Registry、そのため Terraform と OpenTofu で動作します。完全なリソーススキーマ、引数、インポート構文は Terraform Registry のドキュメントにあります。

管理できる内容

現在、プロバイダーは次をサポートしています:

  • リポジトリ: 既存のコードリポジトリを有効化または無効化し、感度、接続状態、ラベルを設定します
  • AutoFix 設定: 依存関係、SAST、Aikido Pentest の検出結果に対するワークスペースの AutoFix を構成します
  • PRチェック: リポジトリごとのプルリクエストゲートを構成します(重大度しきい値、スキャン種別、インラインコメント、Deep Review)
  • チームと権限: チームとユーザー権限を設定します
  • チームとリソースのマッピング: リポジトリとコンテナをチームに割り当てます
  • タスクトラッカーへのリポジトリ/チームマッピング

このプロバイダーは、Aikido にすでに存在するリポジトリ(Git プロバイダーから同期されたもの)の設定を管理します。Git リポジトリを作成したり、新しい Git 統合を接続したりはしません。

要件

  • Terraform 1.0 以降、または OpenTofu
  • API アクセス権のある Aikido ワークスペース
  • 次の場所から取得した OAuth2 クライアント認証情報: Aikido REST API 統合ページ

プロバイダーを設定する

  1. API 認証情報を作成する

    1. へ移動 Aikido REST API 統合ページ.
    2. クライアント ID とクライアントシークレットを作成します。
    3. シークレットは安全に保管してください。ページを離れると、再度表示することはできません。

    以下を参照してください API 認可ドキュメント Aikido が API クライアントを認証する方法の詳細について。

  2. プロバイダーを宣言する

    Terraform 設定にプロバイダーを追加してから、次を実行します terraform init:

    main.tf
    terraform {
      required_providers {
        aikido = {
          source  = "AikidoTerraform/aikido"
          version = "~> 1.1"
        }
      }
    }
    
    provider "aikido" {
      client_id     = var.aikido_client_id
      client_secret = var.aikido_client_secret
    }

    資格情報は、ハードコードする代わりに環境変数で渡すこともできます:

    • AIKIDO_CLIENT_ID
    • AIKIDO_CLIENT_SECRET

    それらを設定すると、空のプロバイダーブロックを使用できます:

    provider "aikido" {}
  3. 対象の Aikido リージョンを指定します(任意)

    デフォルトでは、プロバイダーは EU API(https://app.aikido.dev/api)を使用します。ワークスペースが別のリージョンでホストされている場合は、次を設定します: base_url (または AIKIDO_BASE_URL 環境変数)を、ログインに使用するアプリの URL に合わせて設定します:

    Aikido ログイン URL例 base_url
    app.aikido.devhttps://app.aikido.dev/api (既定)
    app.us.aikido.devhttps://app.us.aikido.dev/api
    app.au.aikido.devhttps://app.au.aikido.dev/api
    app.me.aikido.devhttps://app.me.aikido.dev/api
    provider "aikido" {
      client_id     = var.aikido_client_id
      client_secret = var.aikido_client_secret
      base_url      = "https://app.us.aikido.dev/api"
    }

設定例

resource "aikido_repository" "app" {
  id     = "12345"
  active = true

  sensitivity  = "sensitive"
  connectivity = "connected"

  labels = ["payments", "production"]
}

resource "aikido_autofix_dependency_settings" "workspace" {
  enabled                      = true
  severity_filter              = "critical_and_high_only"
  repos_scope                  = "all"
  use_aikido_library_for_major = true
}

resource "aikido_repo_pr_checks_settings" "app" {
  code_repo_id = 12345

  minimum_severity                  = "high"
  fail_on_dependency_scan            = true
  fail_on_sast_scan                  = true
  fail_on_iac_scan                   = true
  fail_on_secrets_scan               = true
  fail_on_malware_scan               = true
  post_inline_comments_min_severity  = "critical"

  minimum_license_severity = "high"

  fail_on_code_quality_scan                      = true
  enable_code_quality_scan                       = true
  post_code_quality_inline_comments_min_severity = "medium"
}

各引数、インポート ID、リソース固有の動作については、公式ドキュメントを参照してください:

Terraform Registry のドキュメント OpenTofu Registry

関連ドキュメント