Google Cloud セットアップ

Google Cloud をコードで扱う前に押さえる、組織・プロジェクトの考え方と Terraform を動かすまでの段取り。“卵が先か鶏が先か”の state 問題まで

この記事の要約

Google Cloud は『組織 → フォルダ → プロジェクト → リソース』の 4 階層で組み立てます。コード管理の第一関門は、台帳(state)の置き場づくりです。

  • プロジェクト=課金・権限が独立した“部屋”
  • IaC の土台は業務と分けた専用プロジェクトに
  • 認証は長期の鍵を作らず“鍵なし”が原則

Google Cloud はどう組み立てる?

最初のプロジェクトを作る前に、全体がどんな入れ物の重なりでできているかを押さえておきます。どの階層で権限や課金が決まるかが分かると、後から出てくる設定の話はすべて『どの入れ物に付けるか』の話に置き換えられます。

組織 (Organization)
会社そのもの
フォルダ (Folder)
部署・環境で束ねる
プロジェクト (Project)
作業の基本単位
リソース
VM・ストレージ・DB など

各ブロックや矢印をクリックすると、その仕組みの説明がここに表示されます。

この図をテキストで読む

構成図「Google Cloud の組み立て(4階層)」。ブロック4個、つながり3本。 【ブロック】 - 組織 (Organization): 会社そのもの - フォルダ (Folder): 部署・環境で束ねる - プロジェクト (Project): 作業の基本単位 - リソース: VM・ストレージ・DB など 【流れ】 - 上からの階層をたどる: 組織 (Organization) → フォルダ (Folder) → プロジェクト (Project) → リソース

会社 → フロア → 部屋 → 家具、の重なりです。

組織とプロジェクトはどう分ける?

階層が分かると、今度は『どこで区切るか』に迷います。区切りを間違えると、権限の付け直しや請求の仕分けで後々苦労するため、先人の定番パターンを理由ごと知ってから、自社の規模に合わせて小さく始めるのが現実的です。

分け方の指針と理由

気になるセルはクリックで説明が出ます →

環境ごとに別プロジェクト
開発 / 検証 / 本番
事故が本番に波及しない
課金も分離・本番は厳格に
アプリごとに別プロジェクト
アプリ×環境で1つ
相互影響・誤アクセスを防ぐ
信頼境界が効く
フォルダにまとめて権限付与
個別でなくまとめて
1回で配下に継承される
付け忘れ・外し忘れを防ぐ
IaCの土台は専用プロジェクト
通常業務と混ぜない
強い権限を隔離・厳重管理
事故の範囲を限定
中央のホストに集約
各アプリは相乗り
ネットワークを一元管理
各アプリは“繋ぐだけ”

各セルをクリックすると、その意味や詳しい説明がここに表示されます。

この図をテキストで読む

比較表。2列 × 5行。 【列】 1. どうする(推奨の構成) 2. なぜ(理由) 【比較】(観点ごとに) ■ 環境で分ける - どうする: 環境ごとに別プロジェクト / 開発 / 検証 / 本番 - なぜ: 事故が本番に波及しない / 課金も分離・本番は厳格に ■ アプリで分ける - どうする: アプリごとに別プロジェクト / アプリ×環境で1つ - なぜ: 相互影響・誤アクセスを防ぐ / 信頼境界が効く ■ フォルダで束ねる - どうする: フォルダにまとめて権限付与 / 個別でなくまとめて - なぜ: 1回で配下に継承される / 付け忘れ・外し忘れを防ぐ ■ 土台を分ける - どうする: IaCの土台は専用プロジェクト / 通常業務と混ぜない - なぜ: 強い権限を隔離・厳重管理 / 事故の範囲を限定 ■ ネットワークを集約 - どうする: 中央のホストに集約 / 各アプリは相乗り - なぜ: ネットワークを一元管理 / 各アプリは“繋ぐだけ”

推奨であって、唯一の正解ではありません。

Terraform までに何を整える?

コードを書き始める前の段取りが、Google Cloud では特に多めです。順番が前後すると謎のエラーに阻まれて手戻りしがちなので、急がば回れで土台から順に整えるのが、結局いちばん速い道になります。

各ステップをクリックすると、その内容の説明がここに表示されます。

この図をテキストで読む

ステップ図「Terraform を使うまでに必要なこと」。6ステップ。 【手順】(順番に) 1. 組織・請求を整える(ID基盤と課金) 2. 土台プロジェクトを作る(seed / bootstrap) 3. 実行アカウントを用意(鍵なし)(サービスアカウント / WIF) 4. 必要なAPIを有効化(土台のサービス群) 5. state置き場を用意(GCSバケット) 6. 権限を最小限に付ける(必要なロールだけ) 補足: 上から順に整えると、Terraform で Google Cloud を回せる土台になります 【流れ】 - 土台を整えるまでの流れ: 組織・請求を整える → 土台プロジェクトを作る → 実行アカウントを用意(鍵なし) → 必要なAPIを有効化 → state置き場を用意 → 権限を最小限に付ける

ロール名・API 名は 2026 年前半時点。最新は公式で。

なぜ最初の state 置き場で詰まる?

台帳(state)はチームで共有するため、クラウドの置き場(バケット)に保存したい ── ところが、その置き場を作るのも Terraform の仕事です。最初の 1 回だけ順番が成立しないこの堂々巡りは、誰もが一度は通る初見の難所です。

backend を書かずに terraform initinit(ローカ…state を手元に保存ローカル保存terraform apply でバケットを作成applyGCSバケットを作成(versioning 有効)バケット作成GCS backend を書いて init -migrate-state移行state をバケットへ移行state 移行terraform plan で差分ゼロを確認確認state を読み書き(ロック付き)ロック
あなたTerraform を実行
Terraformコードから作る道具
手元のstate最初はPC内
GCSバケット最終的な置き場

各ステップ・参加者・分岐をクリックすると、その仕組みの説明がここに表示されます。

この図をテキストで読む

シーケンス図「卵が先か、鶏が先か ― state バケットのブートストラップ」。参加者4人、ステップ8個。 【参加者】(左から右) - あなた: Terraform を実行 - Terraform: コードから作る道具 - 手元のstate: 最初はPC内 - GCSバケット: 最終的な置き場 【流れ】(上から下へ) ── ① まずローカルで起こす(バケットはまだ無い) ── 1. あなた → Terraform: backend を書かずに terraform init 2. Terraform → 手元のstate: state を手元に保存 ── ② バケットを作る(state はまだ手元) ── 3. あなた → Terraform: terraform apply でバケットを作成 4. Terraform → GCSバケット: GCSバケットを作成(versioning 有効) ── ③ 置き場をクラウドへ切り替える(移行) ── 5. あなた → Terraform: GCS backend を書いて init -migrate-state 6. 手元のstate → GCSバケット: state をバケットへ移行 ── ④ 以降はクラウドの state で回す ── 7. あなた → Terraform: terraform plan で差分ゼロを確認 8. Terraform → GCSバケット: state を読み書き(ロック付き)

“先に手で作る”近道もありますが、定石はこの流れです。

ブートストラップの注意(事故を防ぐ)

土台のサービスアカウントは強い権限を持つので、roles/owner のような無差別付与は避けます。state バケットは versioning を有効化し、認証は長期の鍵(JSON)ではなく鍵なし(WIF)や成り代わりを使います。state ファイルは機微情報を含みうるので Git にコミットしないでください。

読むときの注意 ― 事実は変わります

ロール名・API 名・推奨構成は執筆時点(2026年前半)のものです。実装前に必ず最新の公式ドキュメントを確認してください。土台づくりには、Google 公式のひな型(terraform-example-foundation の 0-bootstrap)に任せる近道もあります。

押さえておきたい用語

組織 / フォルダ / プロジェクト
Google Cloud の階層。組織=会社そのもの(最上位)、フォルダ=部署・環境で束ねる仕切り、プロジェクト=課金・権限・API が完結する作業の基本単位(信頼境界)。
IAM(権限管理)と継承
「誰が・何に・何をできるか」を決める仕組み。上位(組織・フォルダ)で付けた権限は、配下のプロジェクト・リソースに自動で受け継がれます。
サービスアカウント
人ではなく、プログラムやツール(Terraform・CI/CD 等)が使う専用のアカウント。
Workload Identity Federation(WIF)
長期の鍵を持たず、CI の身分証を短命な Google Cloud 用トークンに交換して認証する“鍵なし”の仕組み。Google 推奨。成り代わり(インパーソネート)も同じ発想です。
state(状態)とリモートバックエンド
state は Terraform が「いま何をどう作ったか」を記録する台帳。チーム共有のため GCS バケットに置き、terraform init -migrate-state で置き場を引っ越せます。
ブートストラップ / シードプロジェクト
Terraform を回せる最小限の土台(state 置き場・実行アカウント)を最初に立ち上げる作業と、その専用プロジェクト。Google の Cloud Foundation Toolkit にひな型があります。

ここから先へ

この解説とつながりのあるページ

Google Cloudの歩き方』の歩き方 3/3 歩目