プロジェクトの移動

このガイドでは、組織リソース内でプロジェクトを移動する方法について説明します。

プロジェクト リソースは、Google Cloud 組織リソースでの基本レベルの構成エンティティです。プロジェクトは組織リソースの下に作成され、フォルダまたは組織リソース自体の下に配置でき、リソース階層を形成します。プロジェクト リソースをリソース階層内で移動することはできますが、移動を行う前に、ポリシーの違いを考慮する必要があります。

プロジェクトを移動すると、Identity and Access Management ポリシーまたは直接接続されている組織のポリシーがすべてそのプロジェクトとともに移動します。ただし、リソース階層のプロジェクトは、親リソースから継承するポリシーの影響も受けます。特定のサービスを使用する権限をユーザーに付与する IAM ロールがプロジェクトから継承されている場合、エクスポート先で権限を継承しない限り、ユーザーはエクスポート先でそのサービスにアクセスできません。

たとえば、サービス アカウントでフォルダ A のユーザーにストレージのオブジェクト作成者のロールがバインドされているとします。サービス アカウントには、フォルダ A 内の任意のプロジェクトで Cloud Storage にデータをアップロードする権限があります。同じ継承された権限を持たないいずれかのプロジェクトをフォルダ B に移動すると、そのプロジェクトのサービス アカウントはデータのアップロード権限を失い、結果的にサービスが停止します。

移動元と移動先のフォルダで組織のポリシーが定義されている場合も同様です。IAM ポリシーと同じように、組織ポリシーも継承されます。したがって、移動元と移動先のフォルダで組織のポリシーが一致していなければなりません。

組織のポリシーの詳細については、組織ポリシー サービスの概要をご覧ください。

プロジェクトを移動するには、移動元と移動先の両方のフォルダでプロジェクト移動の IAM ロール(roles/resourcemanager.projectMover)が必要です。リソースがフォルダ内にない場合は、組織リソースでこのロールが必要です。

これらのロールにより、次の必要な権限が与えられます。

  • プロジェクトに対する resourcemanager.projects.update
  • リソースがフォルダにある場合: 移動元フォルダと宛先のresourcemanager.projects.move
  • リソースがフォルダ内にない場合: 組織リソースのresourcemanager.projects.move

カスタムロールまたは他の事前定義ロールを使用してこれらの権限を取得することもできます。

Console

プロジェクトを移動するには:

  1. Google Cloud コンソールで、[リソースの管理] ページに移動します。

    [リソースの管理] に移動

  2. ページの左上にある [組織] プルダウンから組織を選択します。

  3. プロジェクトの行をクリックし、リソースのリストからプロジェクトを選択します。プロジェクトの名前はクリックしないでください。クリックすると、プロジェクトの IAM ページに移動します。

  4. 行のオプション メニュー(3 つの点のアイコン)をクリックして、[移動] をクリックします。

  5. [参照] をクリックして、プロジェクトの移動先のフォルダを選択します。

  6. [移動] をクリックします。

gcloud

プロジェクトを移動するには、gcloud beta projects move コマンドを実行します。

gcloud beta projects move PROJECT_ID \
--DESTINATION_TYPE DESTINATION_ID

ここで

  • PROJECT_ID は、移行するプロジェクトの ID または番号です。

  • DESTINATION_TYPEorganizationfolder のどちらかです。

  • DESTINATION_ID は、プロジェクトの移動先となる組織リソースまたはフォルダの ID です。指定できるターゲットは 1 つのみです。

API

プロジェクトを移動するには、v3 projects.move メソッドを使用します。

リクエスト:

POST https://cloudresourcemanager.googleapis.com/v3/{name=PROJECT_NAME}:move
{
  "destinationParent": DESTINATION_PARENT
}

ここで

  • PROJECT_NAME は、更新するプロジェクトの名前です。例: projects/415104041262

  • DESTINATION_PARENT は、移動するプロジェクトの新しい親組織リソースまたはフォルダです。例: organizations/12345678901

成功した場合、リクエストによってオペレーションが返され、これを使用してプロジェクトの移動を追跡できます。