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 統合ページ
プロバイダーを設定する
API 認証情報を作成する
- へ移動 Aikido REST API 統合ページ.
- クライアント ID とクライアントシークレットを作成します。
- シークレットは安全に保管してください。ページを離れると、再度表示することはできません。
以下を参照してください API 認可ドキュメント Aikido が API クライアントを認証する方法の詳細について。
プロバイダーを宣言する
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_IDAIKIDO_CLIENT_SECRET
それらを設定すると、空のプロバイダーブロックを使用できます:
provider "aikido" {}対象の Aikido リージョンを指定します(任意)
デフォルトでは、プロバイダーは EU API(
https://app.aikido.dev/api)を使用します。ワークスペースが別のリージョンでホストされている場合は、次を設定します:base_url(またはAIKIDO_BASE_URL環境変数)を、ログインに使用するアプリの URL に合わせて設定します:Aikido ログイン URL 例 base_urlapp.aikido.devhttps://app.aikido.dev/api(既定)app.us.aikido.devhttps://app.us.aikido.dev/apiapp.au.aikido.devhttps://app.au.aikido.dev/apiapp.me.aikido.devhttps://app.me.aikido.dev/apiprovider "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