2026年9月4日 金曜日
AI時短ラボ
検証· 約12

OpenAIの組織管理をコードで宣言する──公式Terraform providerを設定ファイルから読む

OpenAIが2026年7月29日、プロジェクト・ユーザー・サービスアカウント・レート制限などをTerraformで管理できる公式プロバイダをリリースした。Admin APIキーが必須で、通常のOpenAI APIエンドポイントとは別の権限体系で動く。公式ガイドのmain.tf例と前提条件を確認した。

OpenAIの組織管理をコードで宣言する──公式Terraform providerを設定ファイルから読む
執筆・編集:
目次

複数プロジェクト・複数メンバーでOpenAI APIの組織設定を管理していると、「誰がいつどの権限を追加したか」が画面操作の履歴に埋もれがちになる。2026年7月29日、OpenAIはこの組織管理をコードで宣言的に扱える公式Terraformプロバイダをリリースした。公式ガイド(developers.openai.com/api/docs/guides/terraform)でセットアップ手順を確認した。GitHub上のソースリポジトリ(openai/terraform-provider-openai)を確認すると、作成日は2026年6月25日で、GA公開(7月29日)の約1カ月前から開発が進められていたことが分かる。本記事執筆時点でスター29・フォーク5と、まだ規模の小さいリポジトリだ。

3行まとめ

  • OpenAIが2026年7月29日、組織のプロジェクト・ユーザー・サービスアカウント等をコードで管理できる公式Terraformプロバイダをリリース。Admin APIキー必須でTerraform 1.0以上(importは1.5以上)が前提
  • サブガイド「Import and reconcile」を読むと、openai_projectリソースをTerraform管理から外す(terraform destroy等)とプロジェクトがアーカイブされ、復元できないという重大な挙動がある一方、レート制限やホスト型ツール権限などは「Terraformの追跡を外すだけで、リモート側の設定は変わらない」という非対称な削除挙動になっている
  • サービスアカウントのAPIキー自体はTerraformの管理対象外で、Administration API経由で別途作成・管理する設計。State fileにシークレットを残さないための意図的な設計だとみられる

最小構成のmain.tf

公式ガイドが示す最小構成は次の形だ。

terraform {
  required_version = ">= 1.0"
  required_providers {
    openai = {
      source  = "openai/openai"
      version = ">= 1.0.0"
    }
  }
}

provider "openai" {}

resource "openai_project" "example" {
  name = "terraform-managed"
}

Admin APIキーはOPENAI_ADMIN_KEY環境変数から読み込まれる。ガイドは「コミット履歴にAdmin APIキーを含めないこと」を明記しており、環境変数かシークレットマネージャーでの管理を前提とした構成になっている。OPENAI_ORG_IDOPENAI_PROJECT_IDは任意設定で、未設定時はAPIキーから組織・プロジェクトが自動解決される。

terraform initterraform fmtterraform validateterraform planterraform applyという標準的なTerraformワークフローがそのまま使える。.terraform.lock.hclをコミットしてプロバイダのバージョンを固定することが推奨されている。

用途別のガイドが5本用意されている

公式ドキュメントは、最小構成の後に用途別ガイドへ誘導する形になっている。

ガイド 用途
Projects and access プロジェクト作成、ロールベース・グループベースのアクセス設定
Service accounts ワークロードIDまたはAPIキー認証用のサービスアカウント作成
Rate limits and spend 既存のレート制限の突合、支出アラートの設定
Model, tool, and data controls モデルアクセス・ホスト型ツール・データ保持の設定
Import and reconciliation 既存リソースの取り込み、構成ドリフトの検出

「Import and reconciliation」の存在は、すでに画面操作で作られた既存プロジェクトを後からTerraform管理下に移行できることを示している。ゼロから作り直す必要はない設計だ。

既存リソースの取り込みとID形式

「Import and reconciliation」ガイド(terraform/import-and-reconcile)を実際に読むと、既存プロジェクトをTerraform管理下に取り込む手順と、リソースごとのimport ID形式が具体的に示されている。

リソース種別 import IDの形式
プロジェクト <project_id>
組織グループ <group_id>
プロジェクトロール <project_id>/<role_id>
プロジェクトサービスアカウント <project_id>/<service_account_id>
プロジェクトのグループロール <project_id>/<group_id>/<role_id>
プロジェクトのユーザーロール <project_id>/<user_id>/<role_id>
プロジェクトのレート制限 <project_id>/<rate_limit_id>

取り込みの手順は「設定ファイルを既存リソースの現状に合わせて書く→importブロックを追加→terraform planでno-op(変更なし)になることを確認してからapply」という流れで、terraform plan -detailed-exitcodeを使うと、変更なしなら終了コード0、変更ありなら2、エラーなら1が返る、という具体的なドリフト検知の方法も示されていた。

「削除」の挙動はリソースによって非対称——プロジェクトは復元不可

同じガイドの「Understand removal behavior」節には、実運用で見落とすと危険な注意点がある。Terraform設定からリソースブロックを削除しても、リモート側(OpenAI組織側)で起きることはリソースの種類によってまったく違う、という一覧だ。

リソース種別 Terraformから削除した場合の実際の挙動
openai_project(プロジェクト) プロジェクトをアーカイブする。アーカイブしたプロジェクトは復元できない
openai_project_service_account(サービスアカウント) サービスアカウントを削除する
ロール・グループ・メンバーシップ・アクセス割り当て 対応する管理対象またはアクセス権を削除する
openai_project_model_permissions(モデル権限設定) プロジェクトのモデル権限設定を削除する
プロジェクトのレート制限・ホスト型ツール権限・データ保持設定 Terraformの状態(state)から外れるだけで、リモート側の実際の設定はリセットされない

つまり、「Terraformの設定ファイルからブロックを消せば、対応するOpenAI側の設定も元に戻る」という単純な思い込みは危険だ。プロジェクトを誤ってterraform destroyすると復元不可能なアーカイブ状態になる一方、レート制限などは逆にTerraformの管理下から外れるだけで実際の制限値はそのまま残り続ける。IaC(Infrastructure as Code)でよくある「消せば元に戻る」という前提が、リソースの種類によって成り立たない場合がある、という点は、実際に導入する前に知っておく価値のある挙動だ。

なお、サービスアカウント関連のサブガイド(terraform/service-accounts)を確認すると、サービスアカウントの識別情報(ID)自体はTerraformが管理する一方、「サービスアカウントのAPIキーの作成・管理はTerraformの外、Administration API経由で行う」と明記されている。APIキーという機密情報をTerraformのstateファイルに残さないための、意図的なスコープ限定だと考えられる。

AnthropicのAdmin API対応との比較

似た方向性の動きは競合にもある。Anthropicは同じ2026年8月に、Admin API(組織メンバー・招待・ワークスペース・APIキー・レート制限などを扱うAPI)をant CLIと各言語SDKに正式対応させている(当サイトの既報参照)。ただしAnthropic側はSDK・CLI経由での対応であり、公式Terraformプロバイダの提供は本記事の調査範囲では確認できなかった。OpenAIが先にTerraform providerという「IaC専用の入口」を用意した形になる。

個人開発者・小規模チームにとっての意味

Terraformでの組織管理が効くのは、複数人でOpenAIのプロジェクト・APIキーを運用しているチームだ。個人で1プロジェクトだけを使っている場合、画面操作で十分事足りることが多く、Terraform導入のコストに見合わない可能性がある。一方で、退職者のAPIキー失効漏れ、意図しないレート制限の変更といった「気づいたら設定が変わっていた」系の事故を防ぎたいチームには、構成をコードでレビューできる利点がある。

Admin APIキーを発行しての実地検証はしていない

本記事は公式ガイド本文(トップページ・「Import and reconciliation」・「Service accounts」の3本)とGitHub上のプロバイダリポジトリを情報源としている。ただし「Projects and access」「Rate limits and spend」「Model, tool, and data controls」の3本については見出しと概要のみの紹介にとどめ、本文までは読み込んでいない。自分の手元でAdmin APIキーを発行してTerraformを実際に適用する検証までは行っておらず、「プロジェクトのアーカイブは本当に復元できないか」「レート制限の削除挙動が記載通りか」といった点も、公式ドキュメントの記述をそのまま紹介したにとどまる。各リソースの詳細な引数は、公式ガイドがTerraform Registry側のリファレンスに委ねているため本記事では扱っていない。

関連記事: Claude・GPT・Gemini API料金の読み方 / Claude Code / Claude APIの2026年8月の変更点まとめ / OpenAI API、8月の実務変更5件

感想・指摘はコメント欄へ。

シェア: ポスト はてブ

出典・参照資料

AIニュースの解説を動画でも

YouTubeでは注目ニュースの背景を解説し、Xでは新着記事をお知らせしています。

コメント

まだコメントはありません。最初のコメントを書いてみませんか?

AIについて聞きたいことはありますか?

質問箱で無料で受け付けています。回答は公開され、他の方の参考にもなります。

質問箱を見る →

新しい記事をメールで受け取る

AIの新しい発表を、出典付きで整理して届けます。

関連記事