オンプレミス用の限定公開の Google アクセスを使用すると、オンプレミス ホストから Cloud VPN トンネルまたは Cloud Interconnect 接続を経由して Google API とサービスにアクセスできるようになります。ホストに外部 IP アドレスを設定する必要はありません。オンプレミス ホスト用の限定公開の Google アクセスやその他のプライベート アクセス オプションについて詳しくは、サービスのプライベート アクセス オプションをご覧ください。
オンプレミス ホスト用の限定公開の Google アクセスによって利用できる API とサービスを確認するには、オンプレミス ホスト用の限定公開の Google アクセスの概要のサポート対象のサービスをご覧ください。
要件
- Google Cloud Platform Console の [API とサービス] ページから、アクセスする API を有効にする必要があります。
- プロジェクト オーナー、編集者、そしてネットワーク管理者の役割を持つ IAM メンバーがサブネットを作成または更新し、IP アドレスを割り当てることができます。役割の詳細については、IAM 役割のドキュメントをご覧ください。
- 限定公開の Google アクセスでは VPC ネットワークが必要です。自動およびカスタムモードの VPC ネットワークがサポートされています。レガシー ネットワークはサポートされていません。
- VPC ネットワークは、次のホップがデフォルト インターネット ゲートウェイであるルートを使用して、
199.36.153.4/30
宛てのトラフィックをルーティングする必要があります。この設定を行うには、デフォルト ルートまたはカスタム静的ルートを使用します。
オンプレミス ホスト用の限定公開の Google アクセスの設定
オンプレミス ホスト用の限定公開の Google アクセスを設定するには、次の作業を行う必要があります。
- Google API のトラフィックが Cloud VPN または Cloud Interconnect 接続を介して転送されるように、ルートを構成する必要があります。詳細については、ルートの構成をご覧ください。複数のトンネルまたは相互接続がある場合は、オンプレミス ネットワークへのクロスリージョン非対称ルートを作成することはできません。GCP ではサポートされていません。
- オンプレミス ホストからのトラフィックが制限付きの Google API の IP 範囲にアクセスできるように、オンプレミス ファイアウォールでファイアウォール ルールを構成する必要があります。詳細については、ファイアウォール ルールの構成をご覧ください。
- Google API へのトラフィックが制限付きの Google API の IP 範囲に解決されるように DNS を構成する必要があります。詳細については、DNS の構成をご覧ください。
ルートの構成
Cloud Router のカスタム アドバタイズ
Cloud Router のカスタムルート アドバタイズを使用すると、制限付きの Google API IP アドレスをオンプレミス ネットワークにアナウンスできます。制限付きの Google API IP アドレス範囲は 199.36.153.4/30
です。これはパブリック IP アドレス範囲ですが、Google はそのルートを一般にはアドバタイズしません。Cloud VPN トンネルや Cloud Interconnect 接続を経由するなど、内部 IP アドレスを経由して VPC ネットワークにアクセスできるオンプレミス ホストのみが、この IP アドレス範囲にアクセスできます。
制限付きのアドレス範囲をアナウンスするには、Cloud Router を使用してカスタム ルート アドバタイズを追加します。このアドバタイズは、Cloud Router または特定の BGP セッション(単一の Cloud VPN トンネルまたは VLAN アタッチメントなど)に追加できます。
既存の Cloud Router のすべての BGP セッション向けに制限付き範囲のカスタム ルート アドバタイズを作成するには、次の手順を実行します。
Console
- Google Cloud Platform Console の [クラウド ルーター] ページに移動します。
Cloud Router リスト - 更新する Cloud Router を選択します。
- Cloud Router の詳細ページで [編集] を選択します。
- [アドバタイズされたルート] セクションを展開します。
- [ルート] で、[カスタムルートの作成] を選択します。
- [Cloud Router に表示されるすべてのサブネットにアドバタイズする] を選択して、Cloud Router に表示されるサブネットのアドバタイズを継続します。このオプションを有効にすると、Cloud Router のデフォルトの動作と同じ結果になります。
- [カスタムルートの追加] を選択します。
- ルート アドバタイズを構成します。
- ソース - [カスタム IP 範囲] を選択して、カスタム IP 範囲を指定します。
- IP アドレス範囲 -
199.36.153.4/30
を指定します。 - 説明 -
Restricted Google APIs IPs
の説明を追加します。
- ルートの追加が完了したら、[保存] を選択します。
gcloud
update
コマンドを実行します。--set-advertisement-ranges
フラグまたは --add-advertisement-ranges
フラグを使用してカスタム IP 範囲を指定します。
カスタム IP 範囲を設定するには、
--set-advertisement-ranges
フラグを使用します。既存のカスタム アドバタイズがすべて置換されます。次の例は、すべてのサブネットと制限付きの Google API の IP 範囲199.36.153.4/30
をアドバタイズするように、my-router
Cloud Router を更新します。gcloud compute routers update my-router \ --advertisement-mode CUSTOM \ --set-advertisement-groups ALL_SUBNETS \ --set-advertisement-ranges 199.36.153.4/30
既存のアドバタイズにカスタム IP 範囲を追加するには、
--add-advertisement-ranges
フラグを使用します。このフラグを使用する場合、Cloud Router のアドバタイズ モードがすでにcustom
に設定されている必要があります。次の例は、Restricted Google APIs IPs
カスタム IP を Cloud Router のアドバタイズに追加します。gcloud compute routers update my-router \ --add-advertisement-ranges 199.36.153.4/30
既存の Cloud Router の特定の BGP セッションに対して制限付き範囲のカスタム ルート アドバタイズを作成するには、次の手順を実行します。
Console
- Google Cloud Platform Console の [クラウド ルーター] ページに移動します。
Cloud Router リスト - 更新する BGP セッションを含む Cloud Router を選択します。
- Cloud Router の詳細ページで、更新する BGP セッションを選択します。
- BGP セッションの詳細ページで、[編集] を選択します。
- [ルート] で、[カスタムルートの作成] を選択します。
- [Cloud Router に表示されるすべてのサブネットにアドバタイズする] を選択して、Cloud Router に表示されるサブネットのアドバタイズを継続します。このオプションを有効にすると、Cloud Router のデフォルトの動作と同じ結果になります。
- [カスタムルートの追加] を選択します。
- ルート アドバタイズを構成します。
- ソース - [カスタム IP 範囲] を選択して、カスタム IP 範囲を指定します。
- IP アドレス範囲 -
199.36.153.4/30
を指定します。 - 説明 -
Restricted Google APIs IPs
の説明を追加します。
- ルートの追加が完了したら、[保存] を選択します。
gcloud
update-bgp-peer
コマンドを実行します。--set-advertisement-ranges
フラグまたは --add-advertisement-ranges
フラグを使用してカスタム IP 範囲を指定します。
カスタム IP 範囲を設定するには、
--set-advertisement-ranges
フラグを使用します。既存のカスタム アドバタイズがすべて置換されます。次の例は、すべてのサブネットとカスタム IP 範囲199.36.153.4/30
をアドバタイズするように、my-router
Cloud Router のmy-bgp-session
BGP セッションを更新します。gcloud compute routers update-bgp-peer my-router \ --peer-name my-bgp-session \ --advertisement-mode CUSTOM \ --set-advertisement-groups ALL_SUBNETS \ --set-advertisement-ranges 199.36.153.4/30
既存の IP 範囲にカスタム IP 範囲を追加するには、
--add-advertisement-ranges
フラグを使用します。このフラグを使用する場合、Cloud Router のアドバタイズ モードがすでにcustom
に設定されている必要があります。次の例は、制限付きの Google API の IP である199.36.153.4/30
を Cloud Router のアドバタイズに追加します。gcloud compute routers update-bgp-peer my-router \ --peer-name my-bgp-session \ --add-advertisement-ranges 199.36.153.4/30
カスタム アドバタイズについて詳しくは、カスタムルート アドバタイズをご覧ください。
VPC ネットワーク ルートの要件
VPC ネットワークでは、199.36.153.4/30
宛てのトラフィックに関して、次のホップがデフォルト インターネット ゲートウェイになるようにルーティングを構成する必要があります。新規作成された VPC ネットワークでこの設定を行うには、デフォルト ルートを使用します。また、宛先が 199.36.153.4/30
で、次のホップがデフォルト インターネット ゲートウェイであるカスタム静的ルートを作成することもできます。デフォルト ルートを削除する場合は、カスタム静的ルートを作成する必要があります。
ファイアウォール ルールの構成
オンプレミス ホストからのトラフィックが 199.36.153.4/30
に到達できるように、オンプレミス ファイアウォール ルールを構成する必要があります。
DNS の構成
独自の DNS サーバーを構成し、*.googleapis.com
が restricted.googleapis.com
への CNAME として解決されるようにします。BIND を使用して DNS を構成できます。
Cloud DNS の非公開 DNS ゾーンまたは BIND を使用できます。
- Cloud DNS の非公開 DNS ゾーンを使用すると、承認された VPC ネットワークからアクセス可能な DNS ゾーンをホストすることができます。転送が構成されている場合は、特定のオンプレミス ネームサーバーからもアクセス可能です。
googleapis.com
の非公開ゾーンを作成し、restricted.googleapis.com
の A レコードと、それぞれの*.googleapis.com
の名前のための適切な CNAME レコードを設定できます。Cloud DNS の非公開ゾーンは部分的なオーバーライドをサポートしていないため、*.googleapis.com
宛てのすべてのリクエストのリダイレクト先として選択できるのはrestricted.googleapis.com
のみです。その結果、restricted.googleapis.com
VIP の使用をサポートしていない Google API とサービスは使用できません。詳細については、ゾーンの管理をご覧ください。 - Cloud Dataflow の DNS 解決はカスタマイズできないため、Cloud Dataflow には BIND と
restricted.googleapis.com
VIP を使用できません。
Cloud DNS による DNS の構成
Cloud DNS を使用して限定公開の Google アクセスの DNS 解決を有効にするには、次の手順を使用します。
gcloud
VPC ネットワーク用の非公開マネージド ゾーンを作成します。
gcloud dns managed-zones create apis \ --visibility private \ --networks https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/networks/[NETWORK] \ --dns-name googleapis.com \ --description "Private Google APIs access"
ポリシーを作成し、VPC ネットワーク用の受信転送を有効にします。
gcloud beta dns policies create apipolicy \ --networks https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/networks/[NETWORK] \ --enable-inbound-forwarding \ --description "enable inbound forwarding for Private Google APIs"
トランザクションを開始します。
gcloud dns record-sets transaction start -z apis
DNS レコードを追加します。
gcloud dns record-sets transaction add --name=*.googleapis.com. \ --type=CNAME restricted.googleapis.com. --zone apis --ttl 300
gcloud dns record-sets transaction add --name=restricted.googleapis.com. \ --type=A 199.36.153.4 199.36.153.5 199.36.153.6 199.36.153.7 \ --zone apis --ttl 300
トランザクションを実行します。
gcloud dns record-sets transaction execute --zone apis
オンプレミス ネットワークでは、オンプレミス DNS の参照先を Cloud DNS のフォワーダー IP アドレスにします。フォワーダー IP アドレスを確認するには、
compute addresses list
コマンドを使用します。gcloud compute addresses list --filter='name ~ ^dns-forwarding.*' \ --format='csv[no-heading](address, subnetwork)'
BIND による DNS の構成
オンプレミスの DNS 解決に BIND を使用する場合は、レスポンス ポリシー ゾーン(RPZ)を使用して Google API リクエストを制限付きの Google API に解決するように BIND を構成します。次の BIND 構成をご覧ください。
/etc/bind/named.conf
に次の行を追加します。include "/etc/bind/named.conf.options"; include "/etc/bind/named.conf.local";
/etc/bind/named.conf.options
に次の行を追加します。options { directory "/var/cache/bind"; dnssec-validation no; auth-nxdomain no; # conform to RFC 1035 listen-on-v6 { any; }; listen-on { any; }; response-policy { zone "googleapis.zone"; }; allow-query { any;}; };
/etc/bind/named.conf.local
に次の行を追加します。include "/etc/bind/named.conf.default-zones"; zone "googleapis.zone" { type master; file "/etc/bind/db.googleapis.zone"; allow-query {none;}; };
/etc/bind/db.googleapis.zone
に次の行を追加します。$TTL 1H @ SOA LOCALHOST. noreply.localhost(1 1h 15m 30d 2h) NS LOCALHOST. *.googleapis.com CNAME restricted.googleapis.com. restricted.googleapis.com CNAME rpz-passthru.
次のステップ
- GCP VPC ネットワーク内の VM が内部のプライベート IP アドレスを使用して Google API にアクセスする場合は、VPC 用の限定公開の Google アクセスの構成をご覧ください。