共有 VPC のデプロビジョニング

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

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

共有 VPC ホスト プロジェクトに接続されているサービス プロジェクトごとに、サービス プロジェクト管理者がホスト プロジェクトのすべての依存関係を削除する必要があります。依存関係には、内部 TCP/UDP 負荷分散に関連するインスタンス、インスタンス グループ、インスタンス テンプレート、転送ルールが含まれます。

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

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

リソースの削除

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

共有 VPC の管理タスク

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

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

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

gcloud

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

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

    組織レベルで共有 VPC 管理者の役割を持っている場合

        gcloud compute shared-vpc associated-projects remove SERVICE_PROJECT_ID
            --host-project HOST_PROJECT_ID
        

    フォルダレベルで共有 VPC 管理者の役割を持っている場合

        gcloud beta 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. サービス プロジェクトの接続を解除する必要がある場合は、Shared VPC Admin アカウントの認証情報を保護するためgcloudからログアウトします。それ以外の場合は、この手順をスキップしてホスト プロジェクトの無効化に進みます。

        gcloud auth revoke SHARED_VPC_ADMIN
        

API

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

    • 組織レベルで共有 VPC 管理者の役割が割り当てられている場合は、v1 API を使用します。

          POST https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/disableXpnResource
          {
          "xpnResource": {
            "id": "SERVICE_PROJECT_ID"
          }
          }
          
    • フォルダレベルで共有 VPC 管理者の役割が割り当てられている場合は、ベータ API を使用します。

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

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

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

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

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

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

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

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

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

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

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

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

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

ホスト プロジェクトの無効化

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

gcloud

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

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

    組織レベルで共有 VPC 管理者の役割を持っている場合

        gcloud compute shared-vpc disable HOST_PROJECT_ID
        

    フォルダレベルで共有 VPC 管理者の役割を持っている場合

        gcloud beta 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 を無効にします。

    • 組織レベルで共有 VPC 管理者の役割が割り当てられている場合は、v1 API を使用します。

          POST https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/disableXpnHost
          
    • フォルダレベルで共有 VPC 管理者の役割が割り当てられている場合は、ベータ API を使用します。

          POST https://www.googleapis.com/compute/beta/projects/HOST_PROJECT_ID/disableXpnHost
          

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

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

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

        POST https://www.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. リーエンの一覧を再度表示して、リーエンが削除されていることを確認します。

次のステップ