共有 VPC のプロビジョニングを解除する

このページでは、既存の共有 VPC 構成のプロビジョニングを解除し、すべてのサービス プロジェクトを共有 VPC ホスト プロジェクトから接続解除する方法について説明します。プロビジョニング解除は一方向のプロセスです。まず、共有 VPC共有 VPC のプロビジョニングについて理解しておく必要があります。

サービス プロジェクトの管理タスク

共有 VPC ホスト プロジェクトに接続されているサービス プロジェクトごとに、サービス プロジェクト管理者がホスト プロジェクトのすべての依存関係を削除する必要があります。依存関係には、インスタンス、インスタンス グループ、インスタンス テンプレート、バックエンド サービス、転送ルールなどがあります。

影響を受けるリソースの特定

サービス プロジェクト管理者は、共有 VPC ホスト プロジェクトの共有サブネットをリスト表示して、依存するリソースを特定できます。サービス プロジェクトがホスト プロジェクトから接続解除されると、これらのサブネットは使用できなくなります。つまり、これらのサブネットに依存するリソースが影響を受けます。

リソースの削除

サービス プロジェクト管理者は、プロビジョニング解除プロセスの影響を受けるリソースを特定した後、そのリソースを削除する必要があります。

ロードバランサの管理タスク

内部アプリケーション ロードバランサとリージョン外部アプリケーション ロードバランサを使用すると、1 つのホストまたはサービス プロジェクトの URL マップが、共有 VPC 環境の複数のプロジェクトに存在するバックエンド サービス(とバックエンド)を参照できるようにロードバランサを構成できます。

サービス プロジェクトを削除するには、サービス プロジェクト内のバックエンド サービスに対する、このようなプロジェクト間の参照がすべて削除されている必要があります。サービス プロジェクト内のバックエンド サービスに対する参照を削除するには、ロードバランサ管理者が URL マップを変更する必要があります。

共有 VPC の管理タスク

このセクションのタスクはすべて、共有 VPC 管理者が行う必要があります。

サービス プロジェクトの接続解除

共有 VPC ホスト プロジェクトから接続解除する必要があるサービス プロジェクトごとに、次の手順を繰り返します。

コンソール

Google Cloud コンソールの [共有 VPC] ページを表示するには、共有 VPC 管理者ロールを持っている必要があります。

  1. Google Cloud コンソールで [共有 VPC] ページに移動します。
    [共有 VPC] に移動
  2. 共有 VPC 管理者としてログインします。
  3. 接続解除するサービス プロジェクトがあるホスト プロジェクトを選択します。
  4. [接続されたプロジェクト] タブをクリックします。
  5. 接続解除するサービス プロジェクトを選択します。
  6. [プロジェクトを接続解除] ボタンをクリックします。
  7. ダイアログの情報を確認します。
  8. [接続解除] をクリックします。

gcloud

  1. まだ共有 VPC 管理者として gcloud の認証を行っていない場合は、認証を行います。SHARED_VPC_ADMIN は、共有 VPC 管理者の名前に置き換えます。

    gcloud auth login SHARED_VPC_ADMIN
    
  2. ホスト プロジェクトからサービス プロジェクトを接続解除します。SERVICE_PROJECT_ID はサービス プロジェクトのプロジェクト ID に置き換え、HOST_PROJECT_ID はホスト プロジェクトのプロジェクト ID に置き換えます。

    gcloud compute shared-vpc associated-projects remove SERVICE_PROJECT_ID
        --host-project HOST_PROJECT_ID
    
  3. 次のいずれかのコマンドを使用して、サービス プロジェクトが接続解除されたことを確認します。

    gcloud compute shared-vpc get-host-project SERVICE_PROJECT_ID
    
    gcloud compute shared-vpc list-associated-resources HOST_PROJECT_ID
    
  4. サービス プロジェクトを接続解除するだけでよい場合、gcloud からログアウトすると、共有 VPC 管理者のアカウントの認証情報を保護できます。それ以外の場合は、この手順をスキップしてホスト プロジェクトを無効にするに進みます。

    gcloud auth revoke SHARED_VPC_ADMIN
    

API

  1. サービス プロジェクトを接続解除します。

    POST https://compute.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/disableXpnResource
    {
      "xpnResource": {
        "id": "SERVICE_PROJECT_ID"
      }
    }
    

    プレースホルダを有効な値に置き換えます。

    • HOST_PROJECT_ID は、ホスト プロジェクトの ID です。
    • SERVICE_PROJECT_ID は、接続解除するサービス プロジェクトの ID です。

    詳細については、projects.disableXpnResource メソッドをご覧ください。

  2. サービス プロジェクトが接続解除されたことを確認します。

    • サービス プロジェクトがどのホスト プロジェクトにも接続されていないことを確認します。

      GET https://compute.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/getXpnHost
      

      SERVICE_PROJECT_ID は、サービス プロジェクトの ID に置き換えます。

      詳細については、projects.getXpnHost メソッドをご覧ください。

    • 共有 VPC のホスト プロジェクトに接続されているサービス プロジェクトを一覧表示し、そのようなプロジェクトが表示されなくなっていることを確認します。

      GET https://compute.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/getXpnResources
      

      HOST_PROJECT_ID は、ホスト プロジェクトの ID に置き換えます。

      詳細については、projects.getXpnResources メソッドをご覧ください。

ホスト プロジェクトを無効にする

ホスト プロジェクトの共有 VPC を無効にするには、先にすべてのサービス プロジェクトを接続解除しておく必要があります。無効にすると、ホスト プロジェクトの共有 VPC が簡単に削除されないようにするリーエンが自動的に削除されます。

コンソール

Google Cloud コンソールの [共有 VPC] ページを表示するには、共有 VPC 管理者ロールを持っている必要があります。

  1. Google Cloud コンソールで [共有 VPC] ページに移動します。
    [共有 VPC] に移動
  2. 共有 VPC 管理者としてログインします。
  3. 無効にするホスト プロジェクトを選択します。
  4. [共有 VPC を無効にする] ボタンをクリックします。
  5. ダイアログの説明を確認します。
  6. [ホスト プロジェクト ID] にホスト プロジェクトのプロジェクト ID を入力します。
  7. [無効にする] をクリックします。

gcloud

  1. まだ共有 VPC 管理者として gcloud の認証を行っていない場合は、認証を行います。SHARED_VPC_ADMIN は、共有 VPC 管理者の名前に置き換えます。

    gcloud auth login SHARED_VPC_ADMIN
    
  2. ホスト プロジェクトの共有 VPC を無効にします。HOST_PROJECT_ID は、ホスト プロジェクトの ID に置き換えます。

    gcloud compute shared-vpc disable HOST_PROJECT_ID
    
  3. 組織のホスト プロジェクトとしてプロジェクトがリストされなくなったことを確認します。ORG_ID は、組織 ID(gcloud organizations list で確認)に置き換えます。

    gcloud compute shared-vpc organizations list-host-projects ORG_ID
    
  4. ホスト プロジェクトを有効にするだけでよい場合、gcloud からログアウトすると、共有 VPC 管理者アカウントの認証情報を保護できます。それ以外の場合は、この手順をスキップしてプロジェクトを削除するに進みます。

    gcloud auth revoke SHARED_VPC_ADMIN
    

API

  1. プロジェクトの共有 VPC を無効にします。

    POST https://compute.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/disableXpnHost
    

    HOST_PROJECT_ID は、ホスト プロジェクトの ID に置き換えます。

    詳細については、projects.disableXpnHost メソッドをご覧ください。

  2. ホスト プロジェクトを一覧表示して、プロジェクトが表示されなくなっていることを確認します。

    POST https://compute.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/listXpnHosts
    

    HOST_PROJECT_ID は、ホスト プロジェクトの ID に置き換えます。

    詳細については、projects.listXpnHosts メソッドをご覧ください。

プロジェクトを削除する

このセクションでは、たとえば、ホスト プロジェクトから接続解除後に削除する必要があるサービス プロジェクトがある場合や、ホスト プロジェクトを無効化後にホスト プロジェクトが不要になった場合に、使用されなくなったプロジェクトを削除する方法を説明します。

ホスト プロジェクトを削除する

通常のプロジェクトのまま残すことも、シャットダウンすることもできます。プロジェクトをシャットダウンすると、プロジェクトが削除されます。

IAM プリンシパルが組織の resourcemanager.projectDeleter のロールを割り当てられている場合、またはホスト プロジェクトのオーナーである場合、そのプリンシパルはホスト プロジェクトを削除できます。共有 VPC 管理者は、適切なロールまたは所有権を持っていれば、ホスト プロジェクトを削除できます。

サービス プロジェクトを削除する

必要がなくなったサービス プロジェクトはシャットダウンできます。シャットダウンの前に、サービス プロジェクトがホスト プロジェクトから接続解除されていることを確認してください。

IAM プリンシパルが組織の resourcemanager.projectDeleter のロールを割り当てられている場合、またはサービス プロジェクトのオーナーである場合、そのプリンシパルはサービス プロジェクトを削除できます。サービス プロジェクト管理者は、適切なロールまたは所有権を持っていれば、サービス プロジェクトを削除できます。

ホスト プロジェクトを強制削除する

共有 VPC がホスト プロジェクトでアクティブな間、誤って削除されないように、プロジェクトにリーエンが設定されます。このリーエンはプロジェクト オーナーが削除できるため、共有 VPC のプロビジョニングに関するガイドラインには、組織ポリシーを定義してプロジェクト リーエンを削除できる IAM プリンシパルを制限するステップが含まれています。

ホスト プロジェクトは、通常、次の作業をこの順序で完了してから削除する必要があります。

  • すべてのサービス プロジェクトをホスト プロジェクトから接続解除する
  • 共有 VPC を無効化する

共有 VPC を無効化すると、ホスト プロジェクトを保護するリーエンは自動的に削除されます。

このセクションでは、ホスト プロジェクトを強制的にシャットダウンする方法について説明します。このオプションは、次の場合にのみ、使用を検討してください。

  • サービス プロジェクトを接続解除して共有 VPC を無効にする、通常の手順に従えない場合。
  • 自動的に追加されるもの以外に、ホスト プロジェクトを保護する余分なリーエンがある場合。

共有 VPC ネットワークを使用するサービス プロジェクト内にリソースがある場合、共有プロジェクトを強制的にシャットダウンすると、次のイベントが発生します。

  • すべての共有 VPC ネットワーク、そのサブネット、ルート、ファイアウォール ルール、ホスト プロジェクト内のすべてのネットワーク リソースが削除されます。
  • リソース(ホスト プロジェクトに接続されたサービス プロジェクトで実行中のインスタンスなど)が停止します。
  • 転送ルールが共有 VPC ネットワークに依存している場合、内部 TCP / UDP ロードバランサが無効になります。

gcloud

  1. プロジェクト リーエンを削除できる IAM プリンシパルとして gcloud への認証を行います。リーエンを削除できるプリンシパルを制限する組織ポリシーがある場合、組織の resourcemanager.lienModifier ロールを持つ IAM プリンシパルとして認証を行う必要があります。このようなポリシーがない場合、リーエンを削除できるのはホスト プロジェクトのプロジェクト オーナーです。

    ACCOUNT は、適切な IAM プリンシパルの名前に置き換えます。

    gcloud auth login ACCOUNT
    
  2. ホスト プロジェクトに関連付けられているリーエンをリスト表示します。HOST_PROJECT_ID は、ホスト プロジェクトの ID に置き換えます。

    gcloud alpha resource-manager liens list \
    --project HOST_PROJECT_ID
    
  3. リーエンがなくなるまで、1 つずつ名前を指定してリーエンを削除します。LIEN_NAME は、削除するリーエンの名前に置き換えます。

    gcloud alpha resource-manager liens delete LIEN_NAME \
    --project HOST_PROJECT_ID
    
  4. すべてのリーエンが削除されたことを確認します。

    gcloud alpha resource-manager liens list \
    --project HOST_PROJECT_ID
    
  5. リーエンを削除した後、gcloud からログアウトすると、リーエンを削除する権限を持つ IAM プリンシパルの認証情報を保護できます。

    gcloud auth revoke ACCOUNT
    
  6. これで、ホスト プロジェクトをシャットダウンできるようになりました。

API

  1. ホスト プロジェクトに関連付けられているリーエンを一覧表示します。

    GET https://cloudresourcemanager.googleapis.com/v1/liens?parent=projects:HOST_PROJECT_ID
    

    HOST_PROJECT_ID は、ホスト プロジェクトの ID に置き換えます。

    詳細については、liens.list メソッドをご覧ください。

  2. リーエンがなくなるまで、各リーエンの名前を指定して各リーエンを削除します。

    DELETE https://cloudresourcemanager.googleapis.com/v1/liens/LIEN_NAME
    

    LIEN_NAME は、削除するリーエンの名前に置き換えます。

    詳細については、liens.delete メソッドをご覧ください。

  3. リーエンの一覧を再度表示して、リーエンが削除されていることを確認します。

次のステップ