Terraform/Pulumi 周辺と MCP|IaCの plan/apply を誰が承認するか(概念+事例)
目次 クリックで開く
クラウドインフラをコードで管理するIaC(Infrastructure as Code)が浸透した現在、エンジニアが直面する最大の課題は「コードを書くこと」ではなく、「その変更を安全に、誰がどのタイミングで本番環境へ反映(apply)するか」という統制(ガバナンス)の設計に移行しています。
TerraformやPulumiを用いた開発において、plan(変更予測)の結果が意図通りであることを誰が保証し、誰がボタンを押すのか。本記事では、Terraform CloudやPulumi Cloudなどの公式ツールによる標準的な承認フローから、最新のMCP(Model Context Protocol)を活用したAIによるレビュー支援まで、実務に即したアーキテクチャを詳解します。
1. IaCにおける「承認」の必要性と職務分掌
オンプレミス時代、サーバーの増設やネットワーク変更には「物理的な作業」と「作業届」が必要でした。IaCではこれがGitのPull Request(PR)とマージに置き換わりますが、利便性の裏にリスクが潜んでいます。1行のコードミスで本番データベースが削除される(Replacementが発生する)リスクを、開発者一人に背負わせるべきではありません。
なぜGitHubのPR承認だけでは不十分なのか
多くの現場では、GitHubのPRが承認(Approve)されれば、マージと同時にCI/CDパイプラインが走り、terraform applyが実行されます。しかし、ここには「コード上のロジック」と「実際にインフラに起きる変化」の乖離という問題があります。コードが正しくても、既存のリソース状態(State)によっては意図しない削除や再作成が発生することがあるためです。
そのため、モダンなインフラ運用では以下の二段階承認が推奨されます。
- 論理承認(Code Review): GitHub上で行う、意図や構文の確認。
- 実行承認(Deployment Review):
plan結果を確認し、物理的なリソース変更を許可する最終判断。
2. 実行基盤別:承認フローの実装パターン
主要なIaCツールには、この「実行承認」を管理するための機能が標準搭載されています。各ツールの特性を理解し、組織の規模に合わせた選択が必要です。
Terraform Cloud (HCP Terraform) の場合
HCP Terraform(旧Terraform Cloud)では、“VCS-driven workflow”を用いるのが一般的です。PRが作成されると自動的にplanが走り、その結果をTFCのUI上で確認できます。
- Speculative Plans: PR作成時に実行される未適用のプラン。
- Manual Apply: 設定により、
apply実行前に特定のユーザーの承認を必須にできます。 - Sentinel / OPA: 「インスタンスタイプはt3.micro以下のみ」といったポリシーを自動適用し、違反があれば承認前にブロック可能です。
Pulumi Cloud の場合
Pulumiでは、“Pulumi Cloud”(公式マネージドサービス)の「Deployment Settings」を通じて承認フローを構築します。
Pulumi Deployments を利用することで、GitHub Actions等から直接applyするのではなく、Pulumi Cloud側に実行を委譲し、そこで承認待ちの状態を作ることが可能です。
GitHub Actions(Environments)の活用
特定のSaaSを使わず、GitHub Actionsのみで完結させる場合は、“Environments” 機能を利用します。production環境など特定の環境に対してデプロイを行うジョブに environment: production を指定することで、指定したレビュアーの承認なしにはジョブが進まないよう制御できます。
このようなインフラのガバナンスと、バックオフィス部門の承認フロー(経理・稟議等)は密接に関係しています。例えば、高額なインスタンスを立てる際の承認プロセスなどは、以下の記事で解説しているような業務DXの考え方が参考になります。
Excelと紙の限界を突破する「Google Workspace × AppSheet」業務DX完全ガイド
3. 主要ツールの承認・運用機能比較
IaCの承認フローを支える主要ツールの機能を比較表にまとめました。コスト面だけでなく、既存のワークフロー(GitOps)との親和性が選定基準となります。
| 機能・項目 | HCP Terraform | Pulumi Cloud | GitHub Actions | Atlantis (OSS) |
|---|---|---|---|---|
| 承認機能 | 標準搭載(Settingsで設定) | Deployment機能で対応 | Environments機能で対応 | PRコメントでのコマンド制 |
| ポリシー制御 | Sentinel / OPA | Pulumi Policy as Code | 別途スクリプト実装が必要 | サーバー側の設定に依存 |
| AI連携 | 一部ベータ提供 | Pulumi Insights等 | MarketplaceのAI連携多 | カスタムプラグインが必要 |
| 料金(無料枠) | 500リソースまで無料 | 個人利用無料 / チームは有料 | Publicリポジトリ無料 | セルフホスト(無料) |
| 公式ドキュメント | Link | Link | Link | Link |
4. MCP(Model Context Protocol)が変えるIaCの承認実務
現在、急速に注目を集めているのが、Anthropic社が提唱したMCP(Model Context Protocol)を用いたAIによるIaC運用の補助です。これまで「人間が目視で確認」していたplan結果を、AIがコンテキストを理解した上で評価します。
MCPとは何か
MCPは、AIモデル(Claude等)が外部データソースやツールに安全にアクセスするための共通規格です。これをIaC運用に適用すると、以下のようなフローが実現します。
- AIがMCPサーバー経由で最新のTerraformソースコードと、Stateファイル、そして
plan結果を取得。 - AIが「今回の変更はセキュリティグループに全開放(0.0.0.0/0)を含んでいるため危険です」といった具体的リスクを指摘。
- AIが「過去の同様の構成変更事例」や「クラウドプロバイダーのベストプラクティス」と照らし合わせ、承認の推奨(Ready to Merge)を出す。
これにより、プラットフォームエンジニアは細かな差分チェックから解放され、AIがフィルタリングした「重要な変更」のみに集中できるようになります。このデータ駆動型の自動化アプローチは、マーケティング基盤の自動最適化における考え方とも通ずるものがあります。
広告×AIの真価を引き出す。CAPIとBigQueryで構築する「自動最適化」データアーキテクチャ
5. 失敗しない承認フロー構築の5ステップ
実務で導入する際、最初からすべてをガチガチに固めると開発スピードが著しく低下します。段階的な導入を推奨します。
STEP 1:変更レベルの定義(ティアリング)
すべての変更に承認を求めると、レビューが形骸化します。
- Tier 1(低リスク): タグの追加、既存リソースのパラメータ微調整。 → AIレビューのみで自動承認可。
- Tier 2(中リスク): 新規リソースの追加、ネットワーク経路の変更。 → 1名以上のピアレビュー必須。
- Tier 3(高リスク): DBの削除・再作成、IAM権限の広範な変更。 → 管理者(SRE)の承認必須。
このように、変更のインパクトに応じたレベル分けをコードベースで定義(例:GitHubのラベル活用)します。
STEP 2:GitHub PRによる論理レビューの徹底
コードの可読性やメンテナンス性は、実行結果(Plan)には現れません。ここでは「なぜこのリソースが必要なのか」という意図を重視します。
インフラ負債を抱えないための考え方は、SaaSやオンプレ負債の剥がし方を解説した以下の記事も参考になるでしょう。
SaaSコストとオンプレ負債を断つ。バックオフィス&インフラの「標的」と現実的剥がし方(事例付)
STEP 3:CIによる自動チェック
terraform fmt(整形)や tflint(エラーチェック)、tfsec(セキュリティスキャン)をPR作成時に強制します。人間に「インデントがずれている」といった指摘をさせてはいけません。
STEP 4:Plan結果の可視化と通知
PRのコメント欄に terraform plan の実行結果が自動で書き込まれるように設定します。HCP Terraformの標準機能や、OSSの tfnotify を利用します。ここで前述のMCP/AIを活用し、「このプランを適用すると、本番DBのダウンタイムが約5分発生します」といった要約を添えるのが理想的です。
STEP 5:最終承認とデプロイ
開発環境はマージで即時適用、本番環境はボタンクリックによる「承認後のapply」というフローに分離します。この際、承認したユーザーと実行したユーザーのIDがログに残るようにします。
6. よくあるエラーと対処法
承認フローを導入すると、以下のような実務上のトラブルが発生しやすくなります。
1. ステートロック(State Lock)の競合
承認待ちのPRが複数ある場合、あるPRがapply中に別のPRがplanを実行しようとすると、ステートがロックされエラーになります。これはTerraform Cloudの「Run Queueing」機能や、GitHub Actionsでの
concurrency設定でキューイング処理を行うことで解決します。
2. シークレット情報の露出
plan結果にパスワードやAPIキーが含まれてしまうケースです。
sensitive = true設定を適切に行うとともに、AIレビュー(MCP)のプロンプトで「秘密情報の検知」を組み込むことが有効です。
7. まとめ:自社に最適な承認フローの選び方
IaCの承認フローに「唯一の正解」はありませんが、判断基準は明確です。
- スピード優先のスタートアップ: GitHub Actions + Environments で、特定のブランチへのマージを承認制にするシンプルな構成。
- ガバナンス重視の中堅・大企業: HCP Terraform または Pulumi Cloud を導入し、SentinelやPolicy as Codeで自動ガードレールを構築。
- 先進的な効率化を狙うチーム: MCPサーバーを介してAIに
planの事前評価をさせ、人間は「リスクあり」と判定されたものだけを精査する体制。
インフラは一度構築して終わりではなく、常に変化し続けるものです。承認フローを「縛り」ではなく「エンジニアを事故から守る安全装置」として再定義し、AIやMCPといった新しい技術を取り入れることで、安全かつ高速なインフラ運用を実現してください。
11. 現場で躓きやすい「GitOps運用」の補足事項
承認フローをシステムとして実装しても、チーム内の運用ルール(規約)が不明瞭だと、デプロイのボトルネックや事故の原因となります。特に以下の3点は、ツール導入と並行して合意形成しておくべき項目です。
- マージ後のデプロイ期限:承認されマージされたコードをいつまで
applyせずに放置して良いか。放置された未適用分が、後続のplanに予期せぬ差分(Drift)を発生させることがあります。 - 依存関係の順序:ネットワーク(VPC)とアプリケーション(ECS/EKS)など、ワークスペースが分かれている場合の承認順序の定義。
- レビューの「拒否」基準:単なる好みではなく、可用性・セキュリティ・コストの観点で明確な却下基準を設けること。
12. 解決すべき「2つのエラー層」の比較
IaCの承認プロセスにおいて、AIやレビュアーが検出すべきエラーは「構文」と「実環境」の2層に分かれます。これらを混同すると、承認したのにデプロイに失敗するという事態を招きます。
| エラーの層 | 内容・具体例 | 検知・対策 |
|---|---|---|
| 静的エラー(論理) | タイポ、未定義変数の参照、推奨されない古いリソース型の使用。 | tflintやGitHub ActionsでのCI実行。 |
| 動的エラー(実行) | クォータ不足(上限)、既存リソース名の重複、権限(IAM)不足。 | plan実行およびMCPによるクラウド環境情報の参照。 |
13. 参考:ガバナンスと全体設計の親和性
IaCの承認フロー構築は、インフラの健全性を保つための「データの流れの制御」と言い換えることもできます。これは、SFAやMAツールなどの業務システムを連携させる際の全体設計思想と非常に似通っています。
システム間の責務分解や、誰がどのデータを承認・管理するかという観点では、以下の設計図も参考になります。
- 【図解】SFA・CRM・MA・Webの違いを解説。高額ツールに依存しない『データ連携の全体設計図』
- 高額なCDPは不要?BigQuery・dbt・リバースETLで構築する「モダンデータスタック」ツール選定と公式事例
14. 補足:HCP Terraformのコストとリソース制限(2024年以降)
本文中の比較表に記載の通り、HCP Terraform(旧Terraform Cloud)は現在、管理対象のリソース数(Resource Instances)に基づく課金体系に移行しています。無料枠は500リソースまでとなっており、これを超える場合は有償プランへの移行が必要となります。大規模なマイクロサービス構成などでリソースが膨らむ場合は、事前にterraform state list | wc -l等で現状のリソース数を確認しておくことを推奨します。
詳細は公式の HashiCorp Terraform Pricing をご確認ください。
ご相談・お問い合わせ
本記事の内容を自社の状況に当てはめたい場合や、導入・運用の設計を一緒に整理したい場合は、当社までお気軽にご相談ください。担当より折り返しご連絡いたします。