Private Service Connect でプライベート インスタンスを作成する

このページでは、Cloud Data Fusion の Private Service Connect を構成する方法について説明します。

Cloud Data Fusion の Private Service Connect について

Cloud Data Fusion インスタンスは、オンプレミス、Google Cloud、または他のクラウド プロバイダ上にあるリソースに接続する必要がある場合があります。内部 IP アドレスで Cloud Data Fusion を使用する場合、外部リソースへの接続は Google Cloud プロジェクトの Virtual Private Cloud(VPC)ネットワークを介して確立されます。ネットワークを介したトラフィックは公共のインターネットを経由しません。VPC ピアリングを使用して Cloud Data Fusion に VPC ネットワークへのアクセスを提供する場合は、大規模なネットワークを使用すると明らかになる制限があります。

Private Service Connect インターフェースを使用すると、Cloud Data Fusion は VPC ピアリングを使用せずに VPC に接続します。Private Service Connect インターフェースPrivate Service Connect の一種であり、Cloud Data Fusion がコンシューマ VPC ネットワークへのプライベートで安全な接続を開始できるようにします。これにより、VPC ピアリングのように柔軟性が得られ、アクセスが容易になるだけでなく、Private Service Connect が提供する明示的な承認とコンシューマ側の制御も可能となります。

次の図は、Private Service Connect インターフェースがどのように Cloud Data Fusion にデプロイされるかを示しています。

Private Service Connect インターフェースのデプロイ。

図 1. Private Service Connect インターフェースのデプロイ

図 1 の説明:

  • Cloud Data Fusion を実行する仮想マシン(VM)は、Google 所有のテナント プロジェクトでホストされます。Cloud Data Fusion VM は、お客様の VPC 内のリソースにアクセスするために、お客様のサブネットから Private Service Connect ネットワーク インターフェースによって割り振られた IP アドレスを使用します。このサブネットは、Cloud Data Fusion で使用されるネットワーク アタッチメントに追加されます。

  • Private Service Connect インターフェースから送信される IP パケットは、同じサブネット内の VM から送信されるパケットと同様に扱われます。この構成により、Cloud Data Fusion は、プロキシを使用せずに、お客様の VPC またはピア VPC のリソースに直接アクセスできます。

  • お客様の VPC で Cloud NAT を有効にすると、インターネット リソースにアクセスできるようになりますが、オンプレミス リソースには相互接続を介して到達できるようになります。

  • Private Service Connect からの上り(内向き)または下り(外向き)を管理するには、ファイアウォール ルールを実装します。

主なメリット

Private Service Connect で Cloud Data Fusion を使用する主なメリットは次のとおりです。

  • IP 空間の管理の向上。Cloud Data Fusion がネットワークへの接続に使用する IP アドレスを管理します。Cloud Data Fusion に IP アドレスを割り振るサブネットを選択します。Cloud Data Fusion から送信されるすべてのトラフィックに、構成済みサブネットの送信元 IP アドレスが設定されています。

    Private Service Connect を使用すると、お客様の VPC で予約済み IP アドレスを指定する必要がなくなります。VPC ピアリングには、Cloud Data Fusion インスタンスごとに /22 CIDR ブロック(1,024 個の IP アドレス)が必要です。

  • セキュリティと分離の改善。ネットワーク アタッチメントを構成することで、ネットワークにアクセスできるサービスを制御できます。

  • 簡素化された Cloud Data Fusion インスタンスの設定。お客様の VPC ごとにネットワーク アタッチメントを 1 回だけ作成します。プロキシ VM を使用して、インターネット、ピア VPC、オンプレミスのリソースに接続する必要はありません。

主なコンセプト

このセクションでは、Cloud Data Fusion の Private Service Connect に関連するコンセプトについて説明します。

ネットワーク アタッチメント

ネットワーク アタッチメントは、Cloud Data Fusion が VPC 内のリソースにアクセスするためのネットワーク接続をプライベートで使用、確立するために使用されるリージョン リソースです。詳細については、ネットワーク アタッチメントについてをご覧ください。

共有 VPC

共有 VPC を使用した Private Service Connect インターフェースのユースケースは次のとおりです。

  • ネットワーク チームまたはインフラチームはホスト プロジェクトのサブネットは所有し、アプリケーション チームにサービス プロジェクトのこれらのサブネットを使用させます。

  • アプリケーション チームは、サービス プロジェクトのネットワーク アタッチメントを所有します。ネットワーク アタッチメントは、ネットワーク アタッチメントにリンクされたサブネットに接続できる Cloud Data Fusion テナント プロジェクトを定義します。

ネットワーク アタッチメントはサービス プロジェクトで作成できます。ネットワーク アタッチメントで使用されるサブネットは、ホスト プロジェクトにのみ存在できます。

このユースケースは次の図のようになります。

共有 VPC を使用した Private Service Connect インターフェースのユースケース

図 2.共有 VPC を使用した Private Service Connect インターフェースのユースケース

図 2 の説明:

  • ネットワーク アタッチメントはサービス プロジェクトに存在します。ネットワーク アタッチメントは、ホスト プロジェクトの共有 VPC に属するサブネットを使用します。

  • Cloud Data Fusion インスタンスはサービス プロジェクトに存在し、プライベート接続を確立するためにサービス プロジェクトのネットワーク アタッチメントを使用します。

  • Cloud Data Fusion インスタンスには、共有 VPC のサブネットから IP アドレスが割り当てられます。

始める前に

  • Private Service Connect は、Cloud Data Fusion バージョン 6.10.0 以降でのみ使用できます。

  • Private Service Connect は、新しい Cloud Data Fusion インスタンスを作成するときにのみ有効にできます。既存のインスタンスを移行して Private Service Connect を使用することはできません。

料金

Private Service Connect を介したデータの上り(内向き)と下り(外向き)には料金が発生します。詳細については、Private Service Connect の料金をご覧ください。

必要なロールと権限

Cloud Data Fusion インスタンスとネットワーク アタッチメントを作成するために必要な権限を取得するには、プロジェクトに対して次の Identity and Access Management(IAM)ロールを付与するように管理者に依頼してください。

Cloud Data Fusion にネットワーク構成を検証するために必要な権限を付与するには、Cloud Data Fusion サービス エージェントservice-CUSTOMER_PROJECT_NUMBER@gcp-sa-datafusion.iam.gserviceaccount.com 形式)にプロジェクトに対する次の IAM ロールを付与するよう管理者に依頼してください。

  • ネットワーク アタッチメントに関連付けられた VPC の場合: Compute Network 閲覧者roles/compute.networkViewer

  • Cloud Data Fusion で、ネットワーク アタッチメントのプロデューサー承認リストにテナント プロジェクトを追加する場合:

    • compute.networkAttachments.get
    • compute.networkAttachments.update
    • compute.networkAttachments.list

    これらの権限で最も制限の厳しいロールは、Compute Network 管理者roles/compute.networkAdmin)のロールです。これらの権限は、Cloud Data Fusion API サービス エージェントroles/datafusion.serviceAgent)ロールの一部であり、Cloud Data Fusion サービス エージェントに自動的に付与されます。したがって、サービス エージェント ロールの付与が明示的に削除されていない限り、対応は必要ありません。

ロールの付与の詳細については、アクセスの管理をご覧ください。

必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

Cloud Data Fusion のアクセス制御オプションの詳細については、IAM によるアクセス制御をご覧ください。

VPC または共有 VPC ネットワークを作成する

VPC ネットワークまたは共有 VPC ネットワークが作成されていることを確認します。

Private Service Connect を構成する

Cloud Data Fusion で Private Service Connect を構成するには、まずネットワーク アタッチメントを作成し、次に Private Service Connect を使用して Cloud Data Fusion インスタンスを作成する必要があります。

ネットワーク アタッチメントを作成する

ネットワーク アタッチメントは、一連のサブネットワークを提供します。ネットワーク アタッチメントを作成する手順は次のとおりです。

Console

  1. Google Cloud コンソールで、[ネットワーク アタッチメント] ページに移動します。

    [ネットワーク アタッチメント] に移動

  2. [ネットワーク アタッチメントの作成] をクリックします。

  3. [名前] フィールドに、ネットワーク アタッチメントの名前を入力します。

  4. [ネットワーク] リストで VPC または共有 VPC ネットワークを選択します。

  5. [リージョン] リストで Google Cloud リージョンを選択します。このリージョンは、Cloud Data Fusion インスタンスと同じにする必要があります。

  6. [サブネットワーク] リストでサブネットワークの範囲を選択します。

  7. [接続の設定] で、[選択したプロジェクトの接続を受け入れる] を選択します。

    Cloud Data Fusion では、Cloud Data Fusion インスタンスの作成時に、Cloud Data Fusion テナント プロジェクトが [承諾済みプロジェクト] リストに自動的に追加されます。

  8. [承認済みプロジェクト] や [不承認となったプロジェクト] は追加しないでください。

  9. [ネットワーク アタッチメントの作成] をクリックします。

    ネットワーク アタッチメントを作成する

gcloud

  1. 1 つ以上のサブネットワークを作成します。例:

    gcloud compute networks subnets create subnet-1 --network=network-0 --range=10.10.1.0/24 --region=REGION
    

    ネットワーク アタッチメントは、後続のステップでこれらのサブネットワークを使用します。

  2. Cloud Data Fusion インスタンスと同じリージョンにネットワーク アタッチメント リソースを作成し、connection-preference プロパティを ACCEPT_MANUAL に設定します。

    gcloud compute network-attachments create NAME
    --region=REGION
    --connection-preference=ACCEPT_MANUAL
    --subnets=SUBNET
    

    以下を置き換えます。

    • NAME: ネットワーク アタッチメントの名前。
    • REGION: Google Cloud リージョンの名前。このリージョンは、Cloud Data Fusion インスタンスと同じにする必要があります。
    • SUBNET: サブネットの名前。

    このコマンドの出力は、次の形式のネットワーク アタッチメント URL です。

    projects/PROJECT/locations/REGION/network-attachments/NETWORK_ATTACHMENT_ID

    Cloud Data Fusion は接続に必要になるため、この URL をメモしておきます。

REST API

  1. サブネットを作成します

  2. ネットワーク アタッチメントを作成します。

    alias authtoken="gcloud auth print-access-token"
    NETWORK_ATTACHMENT_NAME=NETWORK_ATTACHMENT_NAME
    REGION=REGION
    SUBNET=SUBNET
    PROJECT_ID=PROJECT_ID
    
    read -r -d '' BODY << EOM
    {
      "name": "$NETWORK_ATTACHMENT_NAME",
      "description": "Network attachment for private Cloud Data Fusion",
      "connectionPreference": "ACCEPT_MANUAL",
      "subnetworks": [
        "projects/$PROJECT_ID/regions/$REGION/subnetworks/$SUBNET"
      ]
    }
    EOM
    
    curl -H "Authorization: Bearer $(authtoken)" \
    -H "Content-Type: application/json" \
    -X POST   -d "$BODY" "https://compute.googleapis.com/compute/v1/projects/$PROJECT_ID/regions/$REGION/networkAttachments"
    

    以下を置き換えます。

    • NETWORK_ATTACHMENT_NAME: ネットワーク アタッチメントの名前。
    • REGION: Google Cloud リージョンの名前。このリージョンは、Cloud Data Fusion インスタンスと同じにする必要があります。
    • SUBNET: サブネットの名前。
    • PROJECT_ID: オブジェクトの ID。

Cloud Data Fusion インスタンスを作成する

Cloud Data Fusion は、テナント プロジェクトのリソースに /25 CIDR ブロック(128 個の IP)を使用します。これは到達不能範囲または予約済み範囲と呼ばれます。VPC で同じ IP アドレスを使用できますが、Cloud Data Fusion VM はこの範囲を使用してリソースに接続できません。

到達不能な CIDR ブロックは、デフォルトで RFC 1918 以外の範囲(240.0.0.0/8)にあるため、ほとんどの場合、これは問題になりません。到達不能範囲を制御する場合は、高度な構成をご覧ください。

Private Service Connect を有効にした Cloud Data Fusion インスタンスを作成するには、次の手順を行います。

Console

  1. Google Cloud コンソールで、Cloud Data Fusion の [インスタンス] ページに移動し、[インスタンスの作成] をクリックします。

    インスタンスの作成

  2. [Instance name] フィールドに、新しいインスタンスの名前を入力します。

  3. [説明] フィールドに、インスタンスの説明を入力します。

  4. [リージョン] リストから、インスタンスを作成する Google Cloud リージョンを選択します。

  5. [バージョン] リストから 6.10 以降を選択します。

  6. [エディション] を選択します。各エディションの料金について詳しくは、Cloud Data Fusion の料金の概要をご覧ください。

  7. [詳細オプション] を開いて、次の操作を行います。

    1. [プライベート IP を有効にする] を選択します。

    2. [接続タイプ] で [Private Service Connect] を選択します。

    3. [ネットワーク アタッチメント] セクションで、ネットワーク アタッチメントを作成するで作成したネットワーク アタッチメントを選択します。

  8. [作成] をクリックします。インスタンスの作成プロセスが完了するまで 30 分ほどかかります。

    Private Service Connect を使用して Cloud Data Fusion インスタンスを作成します。

REST API

次のコマンドを実行します。

alias authtoken="gcloud auth print-access-token"

EDITION=EDITION
PROJECT_ID=PROJECT_ID
REGION=REGION
CDF_ID=INSTANCE_ID
NETWORK_ATTACHMENT_ID=NETWORK_ATTACHMENT_ID

read -r -d '' BODY << EOM
{
  "description": "PSC enabled instance",
  "version": "6.10",
  "type": "$EDITION",
  "privateInstance": "true",
  "networkConfig": {
    "connectionType": "PRIVATE_SERVICE_CONNECT_INTERFACES",
    "privateServiceConnectConfig": {
      "networkAttachment": "$NETWORK_ATTACHMENT_ID"
    }
  }
}
EOM

curl -H "Authorization: Bearer $(authtoken)" \
-H "Content-Type: application/json" \
-X POST   -d "$BODY" "https://datafusion.googleapis.com/v1/projects/$PROJECT_ID/locations/$REGION/instances/?instanceId=$CDF_ID"

以下を置き換えます。

  • EDITION: Cloud Data Fusion のエディション(BASICDEVELOPER、または ENTERPRISE)。
  • PROJECT_ID: オブジェクトの ID。
  • REGION: Google Cloud リージョンの名前。このリージョンは、Cloud Data Fusion インスタンスと同じにする必要があります。
  • INSTANCE_ID: インスタンスの ID
  • NETWORK_ATTACHMENT_ID: ネットワーク アタッチメントの ID。

高度な構成

サブネットの共有を有効にするには、複数の Cloud Data Fusion インスタンスに同じネットワーク アタッチメントを指定します。一方、特定の Cloud Data Fusion インスタンスのサブネットを専用にする場合は、Cloud Data Fusion インスタンスで使用する特定のネットワーク アタッチメントを指定する必要があります。

推奨: すべての Cloud Data Fusion インスタンスに統一されたファイアウォール ポリシーを適用するには、同じネットワーク アタッチメントを使用します。

Cloud Data Fusion から到達できない /25 CIDR ブロックを制御する場合は、インスタンスの作成時に unreachableCidrBlock プロパティを指定します。例:

alias authtoken="gcloud auth print-access-token"

EDITION=EDITION
PROJECT_ID=PROJECT_ID
REGION=REGION
CDF_ID=INSTANCE_ID
NETWORK_ATTACHMENT_ID=NETWORK_ATTACHMENT_ID
UNREACHABLE_RANGE=UNREACHABLE_RANGE

read -r -d '' BODY << EOM
{
  "description": "PSC enabled instance",
  "version": "6.10",
  "type": "$EDITION",
  "privateInstance": "true",
  "networkConfig": {
    "connectionType": "PRIVATE_SERVICE_CONNECT_INTERFACES",
    "privateServiceConnectConfig": {
      "unreachableCidrBlock": "$UNREACHABLE_RANGE",
      "networkAttachment": "projects/$PROJECT_ID/regions/$REGION/networkAttachments/$NETWORK_ATTACHMENT_ID"
    }
  }
}
EOM

curl -H "Authorization: Bearer $(authtoken)" \
-H "Content-Type: application/json" \
-X POST -d "$BODY" "https://datafusion.googleapis.com/v1/projects/$PROJECT_ID/locations/$REGION/instances/?instanceId=$CDF_ID"

以下を置き換えます。

  • EDITION: Cloud Data Fusion のエディション(BASICDEVELOPER、または ENTERPRISE)。
  • PROJECT_ID: オブジェクトの ID。
  • REGION: Google Cloud リージョンの名前。このリージョンは、Cloud Data Fusion インスタンスと同じにする必要があります。
  • INSTANCE_ID: インスタンスの ID
  • NETWORK_ATTACHMENT_ID: ネットワーク アタッチメントの ID。
  • UNREACHABLE_RANGE: 到達不能範囲(例: 10.0.0.0/25)。

セキュリティ

このセクションでは、Cloud Data Fusion とコンシューマ間のセキュリティについて説明します。

Cloud Data Fusion からコンシューマへのセキュリティ

Private Service Connect インターフェースは下り(外向き)ファイアウォール ルールをサポートし、Cloud Data Fusion が VPC 内でアクセスできるものを制御します。詳細については、プロデューサーからコンシューマへの上り(内向き)を制限するをご覧ください。

コンシューマから Cloud Data Fusion へのセキュリティ

Private Service Connect インターフェースを備えた Cloud Data Fusion VM は、VPC から発信され、レスポンス パケットではないトラフィックをブロックします。