Azure AI FoundryをTerraformで作成する方法と注意点|Microsoft Foundry公式更新の要点

Azure AI FoundryをTerraformで作成・管理したい場合、今回の公式情報で押さえるべき結論は明確です。Microsoft Foundryリソース、プロジェクト、モデルデプロイ、接続をInfrastructure as Codeとして管理できる手順が整理され、AzAPI ProviderとAzureRM Providerの使い分けが重要になりました。 既存環境をAzureポータルからTerraformコードとしてエクスポートできる点も、管理者にとって大きな確認ポイントです。Microsoft Learn上では、このTerraform関連ページは2026年5月20日最終更新として表示されています。(Microsoft Learn)

特に注意したいのは、単に「TerraformでAzure AI Foundryを作る方法」だけではありません。RBACロール名の変更、Terraform stateファイルの保護、Private EndpointやCMKなどのセキュリティ設定、既存リソースをTerraform管理へ移す際のimport作業まで含めて確認する必要があります。この記事では、Azure AI FoundryをTerraformで展開する管理者・開発者向けに、変更点、影響範囲、実務で確認すべき設定を整理します。

目次

Azure AI Foundryの「Use Terraform to create Microsoft Foundry」で押さえるべき変更点

今回の公式情報で重要なのは、Azure AI Foundryを「ポータルで個別に作るリソース」ではなく、Terraformで継続管理する対象として扱いやすくなった点です。

公式ドキュメントでは、Terraformを使ってMicrosoft Foundryのリソース、プロジェクト、デプロイ、接続を自動化できると説明されています。さらに、すでにAzureポータルで作成済みのFoundryリソースがある場合は、設定をTerraformコードとしてエクスポートできることも示されています。(Microsoft Learn)

実務上の変更点は、次の4つに分けて考えると分かりやすくなります。

確認ポイント内容実務上の意味
Terraformによる作成対象Foundryリソース、プロジェクト、モデルデプロイ、接続など開発・検証・本番環境をコードで再現しやすくなる
Providerの選択AzAPI ProviderとAzureRM Providerの両方が利用可能プレビュー機能や詳細設定を使うかで選択が変わる
既存環境の移行AzureポータルからTerraformコードをエクスポート可能手作業で作った環境をIaC管理へ移しやすい
セキュリティ確認Terraform state、RBAC、ネットワーク、暗号化を確認コード化により設定漏れや権限過多が表面化しやすい

ここで誤解しやすいのは、「Terraform対応=すべて自動で安全に構成される」という見方です。Terraformは構成を再現する仕組みであり、セキュリティ設計そのものを代替するものではありません。組織のルールに合わせて、RBAC、Private Endpoint、CMK、Azure Policyなどを明示的に組み込む必要があります。

対象者は管理者、開発者、MLOps担当者

この公式情報の影響を受けるのは、Azure AI Foundryを使うすべてのユーザーではありません。主に影響が大きいのは、環境構築や運用標準化に関わる担当者です。

対象者確認すべきこと
Azure管理者RBAC、サブスクリプション、リソースグループ、ネットワーク、Azure Policy
AIアプリ開発者Foundryプロジェクト、モデルデプロイ、接続、認証方式
MLOps / Platform Engineering担当Terraformモジュール化、環境分離、state管理、CI/CD適用
セキュリティ担当APIキー利用、Managed Identity、Private Endpoint、CMK、監査ログ
既存Foundry利用チームポータル作成済みリソースのエクスポート、Terraform import、差分管理

小規模な検証だけなら、公式サンプルを使ってリソースを作成するだけでも十分です。一方、社内標準環境や本番環境に展開する場合は、Terraformコードをそのまま流用するのではなく、命名規則、タグ、リージョン、SKU、ネットワーク、暗号化、権限設計を自社の基準に合わせて修正する必要があります。

AzAPI ProviderとAzureRM Providerの使い分け

Azure AI FoundryをTerraformで作成する際に、最初に判断すべきなのがProviderの選択です。公式情報では、AzAPI ProviderとAzureRM Providerの両方が利用できる一方、対応範囲に差があることが示されています。AzAPI Providerはプレビュー機能を含むFoundryのコントロールプレーン構成にアクセスでき、AzureRM Providerは中核的な管理機能に限定されます。(Microsoft Learn)

やりたいことAzAPI ProviderAzureRM Provider
リソースグループ作成対応対応
Foundryリソース作成対応対応
モデルデプロイ構成対応対応
Foundryプロジェクト構成対応対応
ナレッジやツールへの接続構成対応非対応
capability hostなど高度なツール構成対応非対応

判断基準はシンプルです。

まずAzureRM Providerで足りるか確認し、接続や高度なFoundry機能までTerraformで管理したい場合はAzAPI Providerを検討する、という順序が実務では扱いやすいです。

ただし、AzAPI ProviderはARMリソース定義に近い形で書くため、AzureRM Providerよりも記述が抽象的になりやすい場面があります。チーム内で保守するなら、どちらを採用するかをリポジトリ単位で統一し、混在させる場合は責任範囲を明確にしておくべきです。

Provider選定の実務例

検証環境で「Foundryリソース、プロジェクト、gpt-4oのデプロイだけ作りたい」場合は、AzureRM Providerでも始めやすいでしょう。

一方、エージェント、ツール接続、ナレッジ連携、プレビュー機能を含む構成までコード化したい場合は、AzAPI Providerの方が適しています。

本番運用では、次のように分けると判断しやすくなります。

環境推奨しやすい選択理由
個人検証AzureRM ProviderTerraform初心者でも読みやすい
チーム開発AzureRM ProviderまたはAzAPI Provider管理対象の範囲次第
エンタープライズ本番AzAPI Providerを含めて検討接続、セキュリティ、高度な構成を統制しやすい
既存環境の移行エクスポート結果に合わせて選択AzureRM / AzAPI形式で出力を確認できる

Terraformで作成される主な構成要素

公式サンプルでは、Azure AI Foundryの基本構成として、リソースグループ、Foundryリソース、モデルデプロイ、Foundryプロジェクトを作成する流れが示されています。AzAPI Providerの例ではMicrosoft.CognitiveServices/accounts@2025-06-01を使い、kind = "AIServices"、システム割り当てマネージドID、プロジェクト管理の有効化、カスタムサブドメインなどを設定しています。(Microsoft Learn)

AzureRM Providerの例では、azurerm_cognitive_accountでFoundryリソースを作成し、project_management_enabled = trueやcustom_subdomain_nameを指定したうえで、azurerm_cognitive_account_projectとazurerm_cognitive_deploymentを使う構成が示されています。(Microsoft Learn)

実務では、次の項目を必ず確認してください。

設定項目確認内容注意点
location利用リージョンモデル、CMK、ネットワーク要件と整合させる
sku / sku_name料金・性能プラン検証と本番で同じにしない場合は変数化する
Managed IdentitySystemAssignedなどRBACやKey Vaultアクセスに関係する
プロジェクト管理allowProjectManagementまたはproject_management_enabledFoundryプロジェクト利用に必要
カスタムサブドメインcustomSubDomainNameまたはcustom_subdomain_name認証やエンドポイント設計に影響する
モデルデプロイモデル名、バージョン、SKU、capacity利用可能リージョンやクォータの確認が必要
タグ部門、環境、コスト管理Azure Policyで必須化している組織は漏れに注意

特にカスタムサブドメインやプロジェクト管理の有効化は、後から簡単に変更できる設定として扱わない方が安全です。環境作成前に、命名規則、サブスクリプション、リソースグループ、DNS、認証方式を決めておきましょう。

Terraform実行時の基本手順

公式手順では、Terraformの初期化、実行計画の作成、適用、デプロイ確認という一般的な流れが示されています。terraform init -upgradeでProviderプラグインを初期化し、terraform plan -out main.tfplanで実行計画を作成し、確認後にterraform apply main.tfplanで適用します。(Microsoft Learn)

実務では、次の順序で進めると失敗しにくくなります。

手順コマンド例確認すること
初期化terraform init -upgradeProviderが想定バージョンで取得されるか
構文確認terraform validateHCLの記述ミスがないか
差分確認terraform plan -out main.tfplan作成・変更・削除対象が期待通りか
適用terraform apply main.tfplanレビュー済みplanを適用しているか
状態確認terraform state list作成されたリソースがstateに入っているか
出力確認terraform outputエンドポイントやIDが想定通りか

本番環境では、terraform applyを開発者の手元で直接実行するより、CI/CDでplanレビューを挟む運用が望ましいです。特にAI関連リソースは、モデルデプロイや接続先の変更がアプリケーション動作に直結します。plan結果をPull Requestに添付し、管理者またはリード開発者が確認してから適用する流れにしましょう。

既存のAzure AI FoundryリソースをTerraform管理へ移すときの注意点

すでにAzureポータルでAzure AI Foundryを作成している組織では、「既存環境を壊さずTerraform管理へ移せるか」が重要です。

公式情報では、AzureポータルのExport templateからTerraformタブを選び、AzureRMまたはAzAPI形式のTerraformコードを確認・ダウンロード・コピーできると説明されています。エクスポートにはネットワークルール、ID構成、プロジェクト関連付けなどの現在設定が含まれる一方、一部リソースタイプでは完全なエクスポートに対応せず、警告や手動補完が必要になる可能性があります。(Microsoft Learn)

既存リソースを移行する場合は、次の流れで進めます。

フェーズ作業失敗しやすいポイント
現状確認ポータルで現在の構成を確認手作業変更が多いと差分の理由が分からなくなる
エクスポートTerraform形式でテンプレートを出力不完全なプロパティを見落とす
コード整理サブスクリプションID、リソースID、名前を変数化固定値のまま別環境へ流用してしまう
import既存リソースをTerraform stateへ取り込むimport前にapplyして重複作成しようとする
plan確認差分が意図通りか確認既存設定が削除される差分に気づかない
運用開始以後の変更をTerraform経由に統一ポータル変更とTerraform変更が競合する

特に重要なのは、エクスポートしたコードをそのまま本番適用しないことです。公式ドキュメントでも、ハードコードされたサブスクリプションID、リソースグループ名、リソースIDをTerraform変数に置き換え、不要なプロパティやスコープ外リソース参照を調整し、組織のセキュリティ要件に合わせて設定を追加するよう案内されています。(Microsoft Learn)

Terraform import前に確認すべきこと

既存リソースをTerraform stateに取り込む前に、最低限次の点を確認してください。

  • 対象リソースのAzureリソースIDを正確に取得しているか
  • Terraformコード内のリソース名とimport先アドレスが一致しているか
  • terraform planで削除や再作成が発生しないか
  • ネットワーク、ID、暗号化、タグがエクスポート結果に含まれているか
  • ポータルでの直接変更を今後どう扱うか決めているか

ありがちな失敗は、importせずにterraform applyしてしまい、既存リソースとは別に新規作成しようとするケースです。既存環境を管理対象にする場合は、「コードを書く」だけでなく「stateに取り込む」作業が必要です。

RBACロール名変更の影響を確認する

管理者が必ず確認すべきなのがRBACです。公式情報では、Foundry RBACロールが最近リネームされ、Foundry User、Foundry Owner、Foundry Account Owner、Foundry Project Managerは、以前のAzure AI User、Azure AI Owner、Azure AI Account Owner、Azure AI Project Managerに相当すると説明されています。ロールIDと中核的な権限は変更されていません。(Microsoft Learn)

この変更は、TerraformやAzure CLIでロール割り当てを自動化している環境に影響します。表示名を前提にしているスクリプトやドキュメントでは、移行期間中に旧名と新名が混在する可能性があります。

公式ドキュメントでは、ロール名変更の展開中に問題を避けるため、コードではロール名ではなくロール定義IDを使うことが推奨されています。(Microsoft Learn)

旧名称新名称実務での確認ポイント
Azure AI UserFoundry User開発者やプロジェクト利用者向け
Azure AI OwnerFoundry Owner強い権限を持つため割り当て対象を限定
Azure AI Account OwnerFoundry Account Ownerリソースやプロジェクト管理者向け
Azure AI Project ManagerFoundry Project Managerプロジェクト作成・管理担当者向け

実務では、次の対応を優先してください。

  • Terraform、Azure CLI、PowerShellでロール名を文字列指定していないか確認する
  • 可能であればロール定義IDを使う
  • 社内手順書の旧ロール名を更新する
  • Microsoft Entraグループ単位で割り当て、個人への直接付与を減らす
  • 開発者には必要最小限のFoundry Userを基本にする

また、公式RBACドキュメントでは、キー認証を使うとロール制限なしのフルアクセスになり得るため、より細かなアクセス制御にはMicrosoft Entra ID認証が推奨されています。(Microsoft Learn) TerraformでdisableLocalAuthや認証設計を扱う場合は、セキュリティ方針と矛盾しないように確認しましょう。

Terraform stateファイルは機密情報として扱う

TerraformでAzure AI Foundryを管理する場合、stateファイルの扱いは重要です。公式情報でも、Terraform stateファイルには機密値が含まれる可能性があるため、チーム利用では安全なバックエンドとアクセス制御を使うよう注意されています。(Microsoft Learn)

ローカルPCにterraform.tfstateを置いたまま運用すると、次のようなリスクがあります。

リスク具体例対策
機密情報の漏えい接続情報やリソース属性がstateに残るAzure Storageなどのリモートバックエンドを使う
同時実行による競合複数人が同じ環境を変更state lockを利用する
変更履歴の不透明化誰がどの構成を変更したか分からないCI/CDとレビュー運用に統一
権限過多全員がstateを読めるstate格納先に最小権限を適用

Azure AI Foundryは、モデル、接続、エージェント、外部データソースなどを扱うため、一般的なWebアプリ基盤よりもstateの取り扱いに注意が必要です。Gitリポジトリにstateファイルを含める運用は避け、バックエンドの暗号化、アクセス制御、監査ログを確認してください。

Private Endpoint、CMK、Azure Policyは本番前に設計する

Azure AI FoundryをTerraformで作成できるようになると、検証環境の展開は速くなります。しかし、本番環境ではセキュリティ関連の設計を後回しにすると、後から大きな手戻りになります。

公式ドキュメントでは、Terraform構成をカスタマイズする際の関連セキュリティ設定として、Private Endpoint、Customer-managed keys、RBAC、カスタムAzure Policyが挙げられています。(Microsoft Learn)

Private Endpointを使うべきケース

Microsoft Foundryのネットワーク分離では、インバウンドアクセス、Foundryリソースからのアウトバウンドアクセス、Agent clientから依存サービスへのアウトバウンドアクセスという観点で検討する必要があります。Private Endpointを使うことで、Foundryアカウントやプロジェクトへのプライベート接続を構成できます。(Microsoft Learn)

Private Endpointを検討すべき代表例は次のとおりです。

ケース判断基準
社内ネットワークやVNet内からのみアクセスしたいPublic Network Accessを制限する
機密データを扱うAIアプリを開発するデータソースや依存PaaSもPrivate Link化する
規制業種や監査対象の環境DNS、承認フロー、接続経路を明文化する
Agent Serviceを本番利用するBYOリソースや依存サービスへの到達性を確認する

Private Endpointで見落としやすいのはDNSです。公式ドキュメントでは、Private Endpoint作成後にDNS設定を確認する必要があり、VNet内からはプライベートIPへ解決される構成になると説明されています。(Microsoft Learn) TerraformでPrivate Endpointだけを作っても、名前解決が正しくなければアプリケーションから接続できません。

CMKを使うべきケース

Customer-managed key、つまりCMKは、データの暗号化キーを組織側で管理したい場合に使います。公式ドキュメントでは、FoundryのCMK暗号化により、Key VaultまたはManaged HSMと連携し、プロジェクト成果物、アップロードファイル、評価データなど、関連ストレージアカウントに保存される保存データへ追加の保護レイヤーを適用できると説明されています。(Microsoft Learn)

CMKは、次のような組織で優先度が高くなります。

  • 暗号化キーのローテーションや失効を自社統制したい
  • データ分類上、Microsoft管理キーだけでは要件を満たせない
  • Key VaultまたはManaged HSMを既に標準利用している
  • 監査でキー管理の証跡が必要

ただし、CMKは「設定すれば終わり」ではありません。公式ドキュメントでは、キー保管先とFoundryリソースを同一リージョンに配置すること、Key Vaultのsoft deleteとpurge protectionを有効にすること、Managed Identityに必要な権限を付与することなどが前提条件として示されています。(Microsoft Learn)

また、CMK対応リージョンには制約がある可能性があります。公式情報では、Azure AI Search基盤の容量制約により、CMK暗号化は選択されたリージョンのみで利用可能とされています。(Microsoft Learn) 本番設計では、リージョン、モデル提供状況、Key Vault、ネットワーク構成をまとめて確認してください。

Azure Policyで作成ルールを統制する

複数チームがAzure AI Foundryを利用する組織では、Terraformコードだけで統制しようとすると限界があります。コードレビューを通っていないポータル作成や、別リポジトリからの作成が起きるためです。

公式ドキュメントでは、カスタムAzure Policyにより、Foundryのハブ、プロジェクト、接続、capability hostなどの不正な作成を防ぎ、タグやセキュリティ構成、承認済み統合を強制できると説明されています。(Microsoft Learn)

実務で使いやすいAzure Policyの例は次のとおりです。

ポリシー例目的
許可リージョンのみ作成可能データ所在地や運用対象リージョンを統一
必須タグがない作成を拒否コスト管理、部門管理、環境識別
Public Network Accessを制限インターネット露出を防ぐ
承認済み接続カテゴリのみ許可外部サービス連携の統制
APIキー認証を抑制Entra ID中心の認証へ寄せる

Terraformは「作るためのコード」、Azure Policyは「作ってよいものを制限するガードレール」と考えると設計しやすくなります。

開発者が確認すべきモデルデプロイと接続設定

開発者にとって重要なのは、TerraformでFoundryプロジェクトやモデルデプロイが作成された後、実際にアプリケーションから使える状態になっているかです。

公式サンプルでは、OpenAI形式のgpt-4oデプロイ例が示されています。サンプル内ではモデル名、バージョン、SKU、capacityを指定しています。(Microsoft Learn)

ただし、サンプルのモデルやバージョンをそのまま本番標準にするのは避けるべきです。モデル提供状況、クォータ、リージョン、料金、アプリケーション要件は変わる可能性があります。Terraformコードでは、少なくとも次の項目を変数化しておくと運用しやすくなります。

variable "location" {}
variable "model_name" {}
variable "model_version" {}
variable "deployment_capacity" {}
variable "environment" {}

変数化しておくと、検証環境では小さなcapacity、本番環境では必要なcapacityを指定できます。また、モデルバージョン変更時もHCL全体を探して修正する必要がなくなります。

開発チーム向けの確認リスト

アプリケーション開発者は、Terraform適用後に次の点を確認してください。

確認項目確認方法
Foundryプロジェクトが作成されているかFoundryポータルまたはterraform state list
モデルデプロイ名がアプリ設定と一致しているか環境変数、Key Vault、アプリ構成を確認
認証方式が想定通りかEntra ID、Managed Identity、APIキー利用方針を確認
接続先データソースに到達できるかネットワーク、RBAC、Private Endpoint、DNSを確認
本番と検証で設定が混ざっていないかworkspace、backend、変数ファイルを確認

特に、モデルデプロイ名の不一致はよくあるトラブルです。Terraformではgpt-4oとして作ったのに、アプリ側では別名を参照していると、認証やネットワークが正しくても呼び出しに失敗します。アプリ設定とTerraform出力を連携させる設計にしておくと、こうしたミスを減らせます。

管理者が本番展開前に確認すべきチェックリスト

Azure AI FoundryをTerraformで展開する前に、管理者は次の項目を確認してください。

分類チェック項目完了の目安
ProviderAzAPIかAzureRMかを決めたか管理対象の範囲と理由が文書化されている
権限Foundry RBACロールを確認したかロール名ではなくID指定を検討済み
認証APIキー利用を許可するか決めたかEntra ID / Managed Identity方針と整合している
stateリモートバックエンドを使うかstateがGitに含まれず、アクセス制御されている
既存環境import対象を整理したかplanで意図しない再作成・削除がない
ネットワークPrivate EndpointやPNAを設計したかDNSを含めて接続確認できる
暗号化CMKが必要か判断したかKey Vault、Managed Identity、リージョンが整合
ガバナンスAzure Policyを適用するかタグ、リージョン、接続制限が定義済み
モデルモデル名・バージョン・capacityを確認したかクォータとアプリ要件を満たしている
運用CI/CDとレビュー手順を決めたかplanレビュー後にapplyする流れがある

このチェックリストで特に優先度が高いのは、RBAC、state、ネットワーク、既存リソースのimportです。ここを曖昧にしたままTerraform化すると、「コード化したのに誰が何を変更したか分からない」「ポータル変更で差分が出続ける」「本番環境で通信できない」といった問題が起きやすくなります。

よくある失敗と回避策

Azure AI FoundryをTerraformで作成する際は、次の失敗が起きやすいです。

失敗例原因回避策
Providerを途中で変えて構成が複雑になるAzureRMとAzAPIの違いを理解せず開始最初に管理対象を棚卸しする
ロール割り当てが失敗する旧ロール名・新ロール名が混在ロール定義IDを使う
既存リソースが再作成されそうになるimportせずにapplyしている先にstateへ取り込む
Private Endpoint作成後に接続できないDNS設定が不足Private DNS Zoneと名前解決を確認
CMK設定でエラーになるKey Vault権限やリージョン不一致Managed Identity、RBAC、リージョンを事前確認
stateに機密情報が残るローカルstateや共有フォルダ運用セキュアなリモートバックエンドを使う
サンプルコードを本番に流用するタグ、認証、ネットワークが未調整環境別変数と社内標準を反映する

Terraform化の目的は、単に作成を自動化することではありません。誰が見ても構成を理解でき、同じ環境を再現でき、変更前に差分を確認できる状態を作ることです。

Azure AI FoundryをTerraformで展開する次のアクション

Azure AI FoundryのTerraform対応を実務に取り入れるなら、まずは小さな検証環境で始めるのが現実的です。

最初にやるべきことは、次の3つです。

  1. AzureRM Providerで足りるか、AzAPI Providerが必要かを判断する
  2. Foundryリソース、プロジェクト、モデルデプロイを最小構成で作成する
  3. RBAC、state、ネットワーク、暗号化を本番要件に合わせて追加する

既存のAzure AI Foundry環境がある場合は、AzureポータルからTerraformコードをエクスポートし、すぐにapplyするのではなく、変数化、不要設定の削除、import、plan確認の順で進めてください。新規環境の場合も、公式サンプルをそのまま本番化せず、命名規則、タグ、Private Endpoint、CMK、Azure Policyを組み込んだ社内標準テンプレートに育てることが重要です。

TerraformによるAzure AI Foundry管理は、開発スピードを上げるだけでなく、AI基盤の統制を強化する手段になります。まずは検証環境で差分管理とデプロイ手順を固め、その後に本番向けのセキュリティ・ガバナンス設定を段階的に追加していきましょう。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次