
基盤エンジニアの佐藤(大)です。
今回は、Google Cloud プロジェクトの組織間移行方法を解説します。
移行処理そのものは短時間で完了しますが、安全に実施するためには入念な準備が欠かせません。本記事が、円滑な作業の一助となれば幸いです。
対象読者
Google Cloudのプロジェクトを、現在の所属組織から別の組織に移行したい方
前提
- 移行元と移行先の組織が存在すること
- 後述する権限が、移行元および移行先の組織で同一ユーザーに対して付与可能なこと
移行先の組織がない場合は、Cloud Identity Free等を利用して事前に組織を作成する必要があります。
組織の作り方については、弊社の以前公開した記事「Google Cloud導入で最初に迷う「アカウント・組織・ドメイン」整理ガイド」を参照ください。
公式ドキュメント
ご不明な点は公式ドキュメントを参照ください。
大まかな作業の流れ
大まかな作業の流れは、以下の通りです。
移行に関連するIDを確認(移行対象のプロジェクトID、移行元組織/フォルダID、移行先組織/フォルダID)
↓
組織ポリシーを設定
↓
移行を実施
↓
移行できたかを確認
作業に必要な権限
それぞれのレイヤーで、同一ユーザーに対して権限付与が必要になります。
移行対象のプロジェクト
*プロジェクト IAM 管理者(roles/resourcemanager.projectIamAdmin)
移行元のプロジェクトの親組織
*プロジェクト移動(roles/resourcemanager.projectMover)
組織ポリシー管理者( roles/orgpolicy.policyAdmin)
閲覧者(roles/viewer)
移行先のプロジェクトの親組織
*プロジェクト移転者(roles/resourcemanager.projectMover)
*プロジェクト作成者(roles/resourcemanager.projectCreator)
組織ポリシー管理者( roles/orgpolicy.policyAdmin)
閲覧者(roles/viewer)
社内ポリシー等の制約により、すべての権限付与が難しい場合は、作業実施者に最低限「*(アスタリスク)」の付いた権限を付与してください。
その他の権限はID確認とポリシー設定に必要なものです。権限をお持ちの他の方と役割を分担して対応してください。
具体的な手順
移行に関連するIDを確認する
移行対象のプロジェクトIDを確認する
1. Google Cloudコンソールを開き、移行対象のプロジェクトを選択します。
2. ホーム画面に表示されているプロジェクトIDを確認します。

移行元の組織IDを確認する
1. Google Cloudのコンソールを開き、プロジェクト選択ツールを開きます。

2. リソースを選択で移行元の組織を選択し、すべてのタブを選択します。
3. 移行対象の組織/フォルダのIDを確認します。

移行先の組織IDを確認する
手順は移行元と同様です。
1. Google Cloudのコンソールを開き、プロジェクト選択ツールを開きます。

2. リソースを選択で移行先の組織を選択し、すべてのタブを選択します。
3. 移行対象の組織/フォルダのIDを確認します。

組織ポリシーの設定
移行元組織の設定
組織のリソース間で移行するプロジェクトの親リソースで、constraints/resourcemanager.allowedExportDestinations 制約を含む組織のポリシーを設定します。
1. Google Cloudコンソールを開きます。
2. プロジェクト名の部分を、移行対象のプロジェクトが存在する「組織名」または組織下の「フォルダ名」を選択し、組織のポリシーの設定画面を開きます。

3. フィルタで「export」を検索し、表示された「Allowed Destinations for Exporting Resources」を選択します。

4. 「ポリシーを管理」を選択します。

5. 以下画像の通り、ポリシーのソースは「親のポリシーをオーバーライドする」を、ポリシーの適合は「親と結合する」を選択します。

6. 以下の画像の通り、ポリシー値は「カスタム」を選択し、ポリシー対応は「許可」を選択。カスタム値に「移行先の組織/ID」を入力し、「ポリシーを設定」ボタンを押下します。

7. 以上で移行元組織の設定は完了です。
移行先組織の設定
移行先のリソースで、constraints/resourcemanager.allowedImportSources 制約を含む組織のポリシーを設定します。
1. Google Cloudコンソールを開きます。
2. プロジェクト名の部分を、移行先の「組織名」または組織下の「フォルダ名」を選択し、組織のポリシーの設定画面を開きます。

3. フィルタで「import」を検索し、表示された「Allowed Sources for Importing Resources」を選択します。

4. 「ポリシーを管理」を選択します。

5. 以下の画像の通り、ポリシーのソースで「親のポリシーをオーバーライドする」を選択し、ポリシーの適合「親と結合する」を選択します。

6. 以下の画像の通り、ポリシー値は「カスタム」を選択し、ポリシー対応は「許可」を選択。カスタム値に「移行元の組織/ID」を入力し、「ポリシーを設定」のボタンを押下します。

7. 以上で移行先組織の設定は完了です。
移行実施
1. Google Cloud コンソールの画面右上からCloud Shellを開きます。

2. Cloud Shellの承認が求められますので、「承認」を押下します。

3. CLIの画面が表示されればOKです。
4. 以下のコマンドのPROJECT_ID、ORGANIZATION_ID、FOLDER_IDを実際の値に差し替えて、実行します。
移行先が組織直下の場合
gcloud beta projects move PROJECT_ID \\
--organization ORGANIZATION_ID
移行先が組織内のフォルダの場合
gcloud beta projects move PROJECT_ID \\
--folder FOLDER_ID
5. Do you want to continue (Y/n)?と聞かれるので、「y」を押下します。
実行ログは以下のとおりです。

移行確認
1. 無事に移行が完了したかを確認します。
2. Google Cloudのコンソールを開き、プロジェクト選択ツールを開きます。

3. リソースを選択で移行先の組織を選択し、すべてのタブを選択します。

4. 移行対象のプロジェクトが移行先組織/フォルダ下にあれば、移行完了になります。
まとめ
今回は、Google Cloud プロジェクトの組織間移行の方法を解説しました。
滅多に行わない作業ゆえに、不安を感じる方も多いかと思います。私自身はも最初はそうでしたが、事前準備を万全にして臨んだ結果、移行作業そのものは驚くほどスムーズに完了しました。
本記事が皆様の不安を解消し、円滑な移行作業を進めるうえでの一助となれば幸いです。