共有 VPC ネットワーク(XPN)の概要

Cloud 組織のプロジェクト間で Google Cloud Platform(GCP)Virtual Private Cloud(VPC)ネットワークを共有できます。この機能を共有 VPC ネットワーク(XPN)といいます。

大規模な組織では、予算編成、アクセス制御などの目的で、部門やアプリケーションを異なるプロジェクトに配置したい場合があります。XPN を使用すると、Cloud 組織の管理者が、単一の共有 VPC ネットワークとそのネットワーク リソースを使用するための権限を複数のプロジェクトに割り当てることができます。

XPN では、RFC1918 の IP 空間の VPC ネットワークを作成し、関連するプロジェクトがその空間を利用します。関連するプロジェクトの管理者は、共有 VPC ネットワーク空間に仮想マシン(VM)インスタンスを作成できます。ネットワーク管理者とセキュリティ管理者は、VPN だけでなく、VPC ネットワークのすべてのプロジェクトで使用可能なファイアウォール ルールを作成できます。Cloud 組織全体で一貫したポリシーを簡単に適用することができます。

概念と用語

次の概念と用語は、XPN の目的と範囲を理解する場合に役立ちます。

  • XPN ホスト プロジェクト - Cloud 組織内で共有可能な VPC ネットワーク リソースをホスティングするプロジェクト。共有 VPC ネットワーク リソースは、Cloud 組織内の別の部門(別の XPN サービス プロジェクトに属している部門)でも使用できます。XPN ホスト プロジェクトには、複数の XPN サービス プロジェクトを関連付けることができます。他のプロジェクトから参照可能なリソースや、特定のプロジェクトに限定するリソースを定義できます。
  • XPN サービス プロジェクト(API では XPN リソースともいいます) - XPN ホスト プロジェクトの共有 VPC ネットワーク リソースを使用できるプロジェクト。各サービス プロジェクトが Cloud 組織内の別の部門で運用されるように、サービス プロジェクトを分割することもできます。各部門には、そのプロジェクトに含まれるワークロードの所有権が付与されます。
  • スタンドアロン プロジェクト - 他のプロジェクトとネットワーク リソースを共有していないプロジェクト。XPN ホスト プロジェクトでも、XPN サービス プロジェクトでもないプロジェクトです。
  • XPN または共有 VPC ネットワーク - XPN ホスト プロジェクトが所有し、Cloud 組織内の 1 つ以上のサービス プロジェクトと共有している VPC ネットワーク。
  • IAM 役割とポリシー - ユーザー、グループまたはサービス アカウントに適用されるポリシー。共有 VPC ネットワーク内のリソースの管理または使用を許可します。
  • 組織 - Cloud 組織は、Cloud リソース階層の最上位にあり、その下に作成されるすべてのプロジェクトとリソースのオーナーになります。XPN ホスト プロジェクトとその XPN サービス プロジェクトは、同じ Cloud 組織内に存在していなければなりません。
  • 組織管理者resourcemanager.organizationAdmin) - Cloud 組織の管理者。
  • XPN 管理者compute.xpnAdmin) - Cloud 組織で XPN の設定を行う管理者。プロジェクトを XPN ホスト プロジェクトに設定し、ホスト プロジェクトにサービス プロジェクトを関連付けます。ベスト プラクティスとして、ホスト プロジェクトで XPN 管理者もプロジェクト オーナーにすることをおすすめします。
  • サービス プロジェクト管理者 - XPN サービス プロジェクトのプロジェクト管理者。プロジェクト オーナー、編集者、インスタンス管理者、ネットワーク管理者をプロジェクト管理者にすることもできます。これらの役割の詳細については、IAM 役割をご覧ください。

    • ネットワーク管理者compute.networkAdmin) - プロジェクト ネットワーク リソースのすべてを管理できる管理者。
    • セキュリティ管理者compute.securityAdmin) - プロジェクト セキュリティ リソースのすべてを管理できる管理者。

XPN の概要

XPN を使用すると、Cloud 組織内の複数のプロジェクトで VPC ネットワークを共有できます。共有する VPC ネットワークは、XPN ホスト プロジェクトに指定したプロジェクトでホスティングします。次の図では、XPN ホスト プロジェクトが 2 つのサービス プロジェクトと VPC ネットワークを共有しています。Subnet_1 を 1 つのプロジェクトと共有し、Subnet_2 をもう 1 つのプロジェクトと共有しています。

スタンドアロン プロジェクトは、サービス プロジェクトに設定されていないため、XPN ホスト プロジェクトとリソースを共有できません。

XPN ホスト プロジェクトの VPC ネットワークの共有(クリックで拡大)
XPN ホスト プロジェクトの VPC ネットワークの共有(クリックで拡大)

仕様

以下では、XPN の重要な特性と XPN を使用する場合の注意事項を説明します。

組織構造内での XPN

  • XPN ホスト プロジェクトとサービス プロジェクトがすべて同じ Cloud 組織に属している場合にのみ、XPN を使用できます。
  • 組織の作成後であれば、Cloud 組織に XPN ホストとサービス プロジェクトをいつでも作成できます。
  • XPN ホストまたはサービス プロジェクトとして Cloud 組織に存在するプロジェクトは、いつでも有効または無効にできます。
  • 1 つの Cloud 組織に複数の XPN ホスト プロジェクトを作成できます。次の図では、Cloud 組織内に productiontest という 2 つの環境があり、それぞれの環境に複数のサービスが存在します。テスト環境は本番環境から隔離されています。それぞれの環境は別の管理者が管理しています。
XPN 階層(クリックで拡大)
XPN 階層(クリックで拡大)

XPN ホスト プロジェクトとサービス プロジェクトの関連付け

  • 1 つのサービス プロジェクトに設定できる XPN ホスト プロジェクトは 1 つだけです。
  • 同時にサービス プロジェクトと XPN ホスト プロジェクトの両方を指定することはできません。
  • リソースが存在する同じプロジェクトからのみ外部 IP を割り振ることができます。サービス プロジェクト内に作成したインスタンスにのみ、そのサービス プロジェクトの外部 IP を設定できます。
  • 既存のプロジェクトで XPN ネットワークを使用できます。XPN ホスト プロジェクトと関連付けるだけで使用できます。ただし、サービス ネットワークの既存のインスタンスを XPN ネットワークに移行することはできません。これらのインスタンスは、XPN ネットワークで再度作成する必要があります。

XPN と VPC ネットワーク

  • XPN ホスト プロジェクトの VPC ネットワークとサブネットはすべて、関連するサービス プロジェクトと共有されます。ホスト プロジェクトまたはそのサブネットに compute.subnetworks.use 権限があるユーザーは、共有されたサブネットワークを使用できます。
  • ホスト プロジェクトのレガシー ネットワークは、サービス プロジェクトと共有されません。XPN ホスト プロジェクト内の共有 VPC ネットワークは、VPC ネットワークでなければなりません。VPC ネットワークは、自動モードまたはカスタムモードの VPC ネットワークにする必要があります。
  • 各サービス プロジェクトは、共有されてない独自の VPC ネットワークを所有できます。

割り当て

  • 共有 VPC ネットワークには、共有以外の VPC ネットワークと同様に、ホスト プロジェクトのネットワーク割り当てが適用されます。
  • サービス プロジェクトでは、割り当て制限に達するまでインスタンスまたは内部負荷分散転送ルールを作成できます。
  • ホスト プロジェクトは、割り当て制限に達するまでインスタンスまたは内部負荷分散転送ルールを作成できます。
  • 割り当て量に関係なく、共有 VPC ネットワークにプロジェクトから 7,000 までのインスタンスを作成できます。内部負荷分散に使用する転送ルールは 50 以下にしてください。

課金

  • プロジェクト間のトラフィックは、単一プロジェクト内の場合と同じルールで課金されます。
  • XPN の設定で、トラフィック送信の課金は、トラフィックの送信元のプロジェクトに課金されます。仮想マシン インスタンスからの送信トラフィックは、ライブ インスタンスのプロジェクトに課金されます。
  • ロードバランサに関連するコストは、ロードバランサを含むオブジェクトに課金されます。
  • VPN に対する送信トラフィックは、GCP で VPN ゲートウェイをホスティングしているプロジェクトに課金されます。XPN ホスト プロジェクトの共有 VPN が Cloud 組織の複数のプロジェクトで使用されている場合、この VPN を使用するすべてのプロジェクトの VPN 送信コストが XPN ホスト プロジェクトに課金されます。

XPN と内部 DNS

共有 XPN ホストの VPC ネットワーク内の VM インスタンスは、内部 IP アドレスを使用して相互に通信を行うことができます。インスタンスを作成したサービス プロジェクトが異なる場合にも通信できます。インスタンスに接続する場合、次のように、完全修飾の内部 DNS名を使用することもできます。[HOST_NAME].c.[PROJECT_ID].internal

サービス プロジェクトで XPN ネットワークに接続可能なリソース

ここでは、サービス プロジェクトで XPN 共有 VPC ネットワークとサブネットに接続可能なリソースについて説明します。共有 VPC と接続できるリソースは次のとおりです。

XPN サービス プロジェクトのリソース 接続可能な場所(VPC ネットワークまたはサブネット)
インスタンス VPC ネットワーク、サブネット
インスタンス テンプレート VPC ネットワーク、サブネット
インスタンス グループ VPC ネットワーク、サブネット
内部負荷分散の転送ルール VPC ネットワーク、サブネット

サービス プロジェクト管理者は、共有 VPC ネットワーク内にインスタンスとインスタンス テンプレートを作成できます。

  • インスタンスの場合、GCP はインスタンスが作成されるサブネットに対する作成者の権限を確認します。
  • インスタンス テンプレートの場合、GCP はインスタント テンプレートに指定されたサブネットに対する作成者の権限を確認しません。インスタント テンプレートを使用してインスタンス グループを作成すると、GCP は、インスタント テンプレートに指定されたすべてのリソース(サブネットを含む)に対する作成者の権限を確認します。インスタント テンプレートの作成権限があっても、インスタンス テンプレートに指定されたリソースの作成権限または使用権限があるとは限りません。

サブネットの使用権限を付与するには、compute.networkUser 役割を適用します。役割の詳細については、XPN の IAM をご覧ください。

共有 VPC ネットワークに接続しているサービス プロジェクトにインスタンス グループ(マネージドおよび非マネージド)を作成できます。オートスケーリングでマネージド インスタンス グループとして作成されたインスタンスはサービス アカウントを使用します。

サービス プロジェクトから共有 VPC ネットワークに内部ロードバランサを作成できます。内部ロードバランサの転送ルールが共有 VPC ネットワークにある場合、同じ共有 VPC ネットワークのインスタンスと転送ルールと同じリージョンのインスタンスは、ロードバランサ サービスに接続し、負荷分散されたインスタンスに接続できます。

外部ロードバランサは、参照するインスタンスと同じプロジェクトに作成する必要があります。

共有できるのは VPC ネットワークだけです。VPC ネットワークにインスタンスを作成する場合、次のことが適用されます。

外部 IP は、この IP を使用するリソースと同じプロジェクトにあります。これは、インスタンスと転送ルールに適用されます。

このセクションで説明していないリソースは、サービス プロジェクトから XPN 共有 VPC ネットワークにリンクして、使用することはできません。

使用例

ここでは、XPN 構成を使用する一般的なシナリオについて説明します。

2 層のウェブサービス

このシナリオでは、2 層のウェブサービスを利用する Cloud 組織について説明します。1 層のサービスではロードバランサを外部に公開し、2 層では非公開の内部ロードバランサを使用します。この例では、それぞれのロードバランサと関連するインスタンスが異なるチームによって管理されます。

XPN を使用した 2 層型の負荷分散(クリックで拡大)
XPN を使用した 2 層型の負荷分散(クリックで拡大)

層 1 と層 2 のサービスでは、異なる XPN プロジェクトを使用して Cloud 組織の異なるチームで管理できます。各チームは、サービスのすべてを管理できます。

  • 各チームは、個別にサービスをデプロイし、運用できます。
  • 各プロジェクトは個別に課金されます。
  • 各プロジェクト管理者は、自身が所有するリソース(仮想マシン インスタンスなど)を管理しますが、他のチームのプロジェクトのワークロードやリソースに対する権限はありません。
  • Cloud 組織のネットワーク接続を可能にし、セキュリティ ルールを管理するために、ネットワーク管理者とセキュリティ管理者を 1 つのグループで管理できます。

XPN では、Cloud 組織で共通の RFC1918 IP 空間を共有しながら、層 1 と層 2 のサービスを異なるプロジェクトにマッピングし、チームごとに異なるサービスを所有できます。

2 層型の負荷分散の詳細(クリックで拡大)
2 層型の負荷分散の詳細(クリックで拡大)

プロジェクト Service_Tier1 のサービス プロジェクト管理者は、インスタンス テンプレートを作成し、共有 XPN ホスト プロジェクトのホストのインスタンス グループを関連付けます。プロジェクト Service_Tier2 のサービス プロジェクト管理者は、共有 XPN ホスト プロジェクト ネットワークの異なるサブネットに内部ロードバランサを設定します。いずれの場合も、リソースは共有 VPC ネットワーク上で使用されますが、それぞれのサービス プロジェクトが所有し、管理します。

VM インスタンス テンプレートと内部ロードバランサの転送ルールの作成方法については、リソースの作成をご覧ください。

ハイブリッド クラウドのシナリオ

このシナリオでは、ハイブリッド環境の Cloud 組織について説明します。この組織では、サービスの一部を GCP にホスティングし、アプリケーションの一部をオンプレミスのデータセンターに残しています。

クラウド上のサービスとアプリケーションは、これらを主体的に運用している部門が所有していますが、クラウド上の複数のアプリケーションがオンプレミスのデータセンターに接続できるようにする必要があります。また、サービスとオンプレミス データセンター間の接続とセキュリティに関するルールは、Cloud 組織のネットワーク管理者とセキュリティ管理者が管理します。

ハイブリッド クラウドのシナリオ(クリックで拡大)
ハイブリッド クラウドのシナリオ(クリックで拡大)

このシナリオでは、サービスとその接続の管理には次のような特性があります。

  • 各サービスは異なる部門が所有し、運用しているため、個別に請求を行う必要があります。
  • 各サービスは、自身が所有するリソース(仮想マシン インスタンスなど)を管理しますが、他の部門のワークロードやリソースに対する権限はありません。
  • オンプレミスで一元管理されているサービス(LDAP ディレクトリ、AAA サービス、集中管理データベースなど)を利用するときに、内部の RFC1918 空間との通信が必要になる場合があります。
  • Cloud 組織のネットワーク接続を可能にし、セキュリティ ルールを管理するために、ネットワーク管理者とセキュリティ管理者を 1 つのグループで管理できます。

XPN では、Cloud 組織のすべてのサービスで共通の RFC1918 IP 空間と VPN 接続をオンプレミスのリソースと共有しながら、Service1Service2Service3 を異なるプロジェクトにマッピングし、部門ごとに異なるプロジェクトを所有できます。

XPN の設定(クリックで拡大)
XPN の設定(クリックで拡大)

この設定では、完全修飾 URL または XPN ホスト プロジェクトで使用するサブネットのパスを使用して、サービス プロジェクトに VM インスタンスを作成します。これらのインスタンスは、マネージド インスタンス グループの一部として作成することもできます。その場合、インスタンス テンプレートの一部としてサブネットを指定します。これにより、XPN ホスト プロジェクト内の指定サブネットにインスタンスが関連付けられます。赤い破線は、サブネットのインスタンスの関連付けを表しています。

サブネットを含む XPN ホスト プロジェクトの VPC ネットワークには、オンプレミス リソースとの非公開接続用の VPN があります。これにより、XPN ネットワークのすべてのインスタンスが共通の VPN 経由でオンプレミスのデータセンターにアクセスすることができます。青い破線は、サービス 1 インスタンスとオンプレミスのリソースを共有 VPN で接続するデータパスを表します。

XPN の IAM

スタンドアロン プロジェクトの場合と同様に、XPN でもオペレーションは Identity and Access Management(IAM)権限チェックの対象になります。

背景

XPN へのアクセスは Cloud IAM ポリシーで管理されます。IAM ポリシーは、メンバー(グループなど)と役割間の制約と権限のセットを定義しま

GCP IAM を使用すると、GetIamPolicySetIamPolicyTestIamPermissions コマンドを使用して IAM ポリシーの表示、設定、テストを行うことができます。 GetIamPolicy または SetIamPolicy を使用すると、リソースに関連する IAM ACL を取得し、変更できます。

XPN に必要な IAM 役割

compute.XpnAdmin

XPN 管理者は、XPN ホスト プロジェクトを指定して XPN サービス プロジェクトと関連付け、XPN の設定を行います。XPN ホスト プロジェクト管理者もサービス プロジェクト管理者に compute.networkUser 権限を付与できます。

役割の権限については、使用可能な IAM 役割のリストで compute.networkUser 役割をご覧ください。

compute.networkUser

共有された XPN ネットワークとサブネットは、インスタンスまたはインスタンス テンプレートが作成されたプロジェクトとは異なるプロジェクトに存在します。XPN 管理者は、サービス プロジェクト管理者に compute.NetworkUser 役割を付与し、インスタンスとインスタンス テンプレートの共有 XPN プロジェクトの使用を許可できます。サービス プロジェクト管理者は、自身が所有するプロジェクトの権限も必要です。

XPN 共有 VPC ネットワークにインスタンスとインスタンス テンプレートを作成するには、ユーザーには 2 つの異なる役割が必要です。

  1. サービス プロジェクト管理者の役割。プロジェクト オーナー、プロジェクト編集者、サービス プロジェクトの compute.instanceAdmin.v1 など。
  2. XPN ホスト プロジェクトまたは XPN 共有サブネット レベルでの compute.networkUser 役割。

役割の権限については、使用可能な IAM 役割のリストで compute.networkUser 役割をご覧ください。

次のステップ

フィードバックを送信...

Compute Engine ドキュメント