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

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

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

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

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

サービス プロジェクト管理者は、共有 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. サービス プロジェクトを切断するだけでよい場合、gcloud からログアウトすると、共有 VPC 管理者のアカウントの認証情報を保護できます。それ以外の場合は、この手順をスキップしてホスト プロジェクトの無効化に進みます。

    gcloud auth revoke SHARED_VPC_ADMIN
    

API

  1. サービス プロジェクトを切断します。

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

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

      POST https://compute.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://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 が簡単に削除されないようにするリーエンが自動的に削除されます。

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://compute.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/disableXpnHost
      
    • フォルダレベルで共有 VPC 管理者ロールが割り当てられている場合は、ベータ API を使用します。

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

次のステップ