Mengakses API dari VM dengan alamat IP eksternal

Instance virtual machine (VM) dengan alamat IP eksternal yang ditetapkan ke antarmuka jaringannya dapat terhubung ke Google API dan layanan Google jika persyaratan jaringan yang dijelaskan pada halaman ini terpenuhi. Meskipun koneksi dibuat dari alamat IP eksternal VM, traffic tetap berada dalam Google Cloud dan tidak dikirim melalui internet publik.

Persyaratan jaringan

Anda harus memenuhi persyaratan berikut untuk mengakses Google API dan layanan Google dari VM dengan alamat IP eksternal:

  • Jika ingin terhubung ke Google API dan layanan Google menggunakan IPv6, Anda harus memenuhi kedua persyaratan berikut:

  • Bergantung pada konfigurasi yang dipilih, Anda mungkin perlu memperbarui entri DNS, rute, dan aturan firewall. Untuk informasi selengkapnya, lihat Ringkasan opsi konfigurasi.

Ringkasan opsi konfigurasi

Tabel berikut merangkum berbagai cara untuk mengonfigurasi Private Google Access. Untuk informasi konfigurasi yang lebih mendetail, lihat Konfigurasi jaringan.

Opsi domain Konfigurasi DNS Konfigurasi pemilihan rute Konfigurasi firewall
Domain default Tidak diperlukan konfigurasi DNS khusus.

Pastikan jaringan VPC Anda dapat merutekan traffic ke rentang alamat IP yang digunakan oleh Google API dan layanan Google.

  • Konfigurasi dasar: Pastikan Anda memiliki rute default dengan next hop default-internet-gateway dan rentang tujuan 0.0.0.0/0 (untuk traffic IPv4) dan ::/0 (untuk traffic IPv6, jika diperlukan). Buat rute tersebut jika tidak ada.
  • Konfigurasi kustom: Buat rute untuk rentang alamat IP yang digunakan oleh Google API dan layanan Google.

Pastikan aturan firewall Anda mengizinkan traffic keluar ke rentang alamat IP yang digunakan oleh Google API dan layanan Google.

Aturan firewall izinkan traffic keluar default mengizinkan traffic ini, jika tidak ada aturan prioritas yang lebih tinggi yang memblokirnya.

private.googleapis.com

Konfigurasikan data DNS di zona DNS pribadi untuk mengirim permintaan ke alamat IP berikut:

Untuk traffic IPv4:

  • 199.36.153.8/30

Untuk traffic IPv6:

  • 2600:2d00:0002:2000::/64

Pastikan jaringan VPC Anda memiliki rute ke rentang IP berikut:

Untuk traffic IPv4:

  • 199.36.153.8/30
  • 34.126.0.0/18

Untuk traffic IPv6:

  • 2600:2d00:0002:2000::/64
  • 2001:4860:8040::/42

Pastikan aturan firewall Anda mengizinkan traffic keluar ke rentang IP berikut:

Untuk traffic IPv4:

  • 199.36.153.8/30
  • 34.126.0.0/18

Untuk traffic IPv6:

  • 2600:2d00:0002:2000::/64
  • 2001:4860:8040::/42
restricted.googleapis.com

Konfigurasikan data DNS untuk mengirim permintaan ke alamat IP berikut:

Untuk traffic IPv4:

  • 199.36.153.4/30

Untuk traffic IPv6:

  • 2600:2d00:0002:1000::/64

Pastikan jaringan VPC Anda memiliki rute ke rentang IP berikut:

Untuk traffic IPv4:

  • 199.36.153.4/30
  • 34.126.0.0/18

Untuk traffic IPv6:

  • 2600:2d00:0002:1000::/64
  • 2001:4860:8040::/42

Pastikan aturan firewall Anda mengizinkan traffic keluar ke rentang IP berikut:

Untuk traffic IPv4:

  • 199.36.153.4/30
  • 34.126.0.0/18

Untuk traffic IPv6:

  • 2600:2d00:0002:1000::/64
  • 2001:4860:8040::/42

Konfigurasi jaringan

Bagian ini menjelaskan persyaratan jaringan dasar yang harus Anda penuhi agar VM di jaringan VPC Anda dapat mengakses Google API dan layanan Google.

Opsi domain

Pilih domain yang ingin Anda gunakan untuk mengakses Google API dan layanan Google.

Alamat IP virtual (VIP) private.googleapis.com dan restricted.googleapis.com hanya mendukung protokol berbasis HTTP melalui TCP (HTTP, HTTPS, dan HTTP/2). Semua protokol lainnya, termasuk MQTT dan ICMP, tidak didukung.

Domain dan rentang alamat IP Layanan yang didukung Contoh penggunaan

Domain default.

Semua nama domain untuk Google API dan layanan Google kecuali untuk private.googleapis.com serta restricted.googleapis.com.

Beragam rentang alamat IP—Anda dapat menentukan sekumpulan rentang IP yang berisi kemungkinan alamat yang digunakan oleh domain default dengan mereferensikan alamat IP untuk domain default.

Mengaktifkan akses API ke sebagian besar Google API dan layanan Google terlepas dari apakah keduanya didukung oleh Kontrol Layanan VPC. Mencakup akses API ke Google Maps, Google Ads, dan Google Cloud. Mencakup aplikasi web Google Workspace seperti Gmail dan Google Dokumen, serta aplikasi web lainnya.

Domain default digunakan jika Anda tidak mengonfigurasi data DNS untuk private.googleapis.com dan restricted.googleapis.com.

private.googleapis.com

199.36.153.8/30

2600:2d00:0002:2000::/64

Mengaktifkan akses API ke sebagian besar Google API dan layanan Google terlepas dari apakah keduanya didukung oleh Kontrol Layanan VPC. Mencakup akses API ke Google Maps, Google Ads, Google Cloud, dan sebagian besar Google API lainnya, termasuk di daftar berikut. Tidak mendukung aplikasi web Google Workspace seperti Gmail dan Google Dokumen. Tidak mendukung situs interaktif apa pun.

Nama domain yang cocok:

  • accounts.google.com (hanya jalur yang diperlukan untuk autentikasi OAuth)
  • *.aiplatform-notebook.cloud.google.com
  • *.aiplatform-notebook.googleusercontent.com
  • appengine.google.com
  • *.appspot.com
  • *.backupdr.cloud.google.com
  • backupdr.cloud.google.com
  • *.backupdr.googleusercontent.com
  • backupdr.googleusercontent.com
  • *.cloudfunctions.net
  • *.cloudproxy.app
  • *.composer.cloud.google.com
  • *.composer.googleusercontent.com
  • *.datafusion.cloud.google.com
  • *.datafusion.googleusercontent.com
  • *.dataproc.cloud.google.com
  • dataproc.cloud.google.com
  • *.dataproc.googleusercontent.com
  • dataproc.googleusercontent.com
  • dl.google.com
  • gcr.io atau *.gcr.io
  • *.googleapis.com
  • *.gke.goog
  • *.gstatic.com
  • *.kernels.googleusercontent.com
  • *.ltsapis.goog
  • *.notebooks.cloud.google.com
  • *.notebooks.googleusercontent.com
  • packages.cloud.google.com
  • pkg.dev atau *.pkg.dev
  • pki.goog atau *.pki.goog
  • *.run.app
  • source.developers.google.com
  • storage.cloud.google.com

Gunakan private.googleapis.com untuk mengakses Google API dan layanan Google menggunakan kumpulan alamat IP yang hanya dapat dirutekan dari dalam Google Cloud.

Pilih private.googleapis.com dalam situasi berikut:

  • Anda tidak menggunakan Kontrol Layanan VPC.
  • Meskipun menggunakan Kontrol Layanan VPC, Anda juga perlu mengakses Google API dan layanan Google yang tidak didukung oleh Kontrol Layanan VPC.1

restricted.googleapis.com

199.36.153.4/30

2600:2d00:0002:1000::/64

Mengaktifkan akses API ke Google API dan layanan Google yang didukung oleh Kontrol Layanan VPC.

Memblokir akses ke Google API dan layanan Google yang tidak mendukung Kontrol Layanan VPC. Tidak mendukung Google Workspace API atau aplikasi web Google Workspace seperti Gmail dan Google Dokumen.

Gunakan restricted.googleapis.com untuk mengakses Google API dan layanan Google menggunakan kumpulan alamat IP yang hanya dapat dirutekan dari dalam Google Cloud.

Pilih restricted.googleapis.com saat Anda hanya memerlukan akses ke Google API dan layanan Google yang didukung oleh Kontrol Layanan VPC.

Domain restricted.googleapis.com tidak mengizinkan akses ke Google API dan layanan yang tidak mendukung Kontrol Layanan VPC.1

1 Jika Anda harus membatasi pengguna hanya ke Google API dan layanan Google yang mendukung Kontrol Layanan VPC, gunakan restricted.googleapis.com, karena menyediakan mitigasi risiko tambahan untuk pemindahan data yang tidak sah. Penggunaan restricted.googleapis.com akan menolak akses ke Google API dan layanan Google yang tidak didukung oleh Kontrol Layanan VPC. Lihat Menyiapkan konektivitas pribadi dalam dokumentasi Kontrol Layanan VPC untuk mengetahui detail selengkapnya.

Dukungan IPv6 untuk private.googleapis.com dan restricted.googleapis.com

Rentang alamat IP IPv6 berikut dapat digunakan untuk mengarahkan traffic dari klien IPv6 ke Google API dan layanan Google:

  • private.googleapis.com: 2600:2d00:0002:2000::/64
  • restricted.googleapis.com: 2600:2d00:0002:1000::/64

Pertimbangkan untuk mengonfigurasi alamat IPv6 jika Anda ingin menggunakan domain private.googleapis.com atau restricted.googleapis.com, dan Anda memiliki klien yang menggunakan alamat IPv6 juga. Klien IPv6 yang juga telah mengonfigurasi alamat IPv4 dapat menjangkau Google API dan layanan Google menggunakan alamat IPv4. Tidak semua layanan menerima traffic dari klien IPv6.

Konfigurasi DNS

Untuk konektivitas ke Google API dan layanan Google, Anda dapat memilih untuk mengirim paket ke alamat IP yang terkait dengan VIP private.googleapis.com atau restricted.googleapis.com. Untuk menggunakan VIP, Anda harus mengonfigurasi DNS sehingga VM di jaringan VPC Anda menjangkau layanan menggunakan alamat VIP, bukan alamat IP publik.

Bagian berikut menjelaskan cara menggunakan zona DNS untuk mengirim paket ke alamat IP yang terkait dengan VIP yang Anda pilih. Ikuti petunjuk untuk semua skenario yang berlaku untuk Anda:

Saat mengonfigurasi data DNS untuk VIP, hanya gunakan alamat IP yang dijelaskan pada langkah berikut. Jangan mencampur alamat dari VIP private.googleapis.com dan restricted.googleapis.com. Hal ini dapat menyebabkan kegagalan berkala karena layanan yang ditawarkan berbeda berdasarkan tujuan paket.

Mengonfigurasi DNS untuk googleapis.com

Membuat zona dan data DNS untuk googleapis.com:

  1. Membuat zona DNS pribadi untuk googleapis.com. Pertimbangkan untuk membuat zona pribadi Cloud DNS untuk tujuan ini.
  2. Di zona googleapis.com, buat data DNS pribadi berikut untuk private.googleapis.com atau restricted.googleapis.com, bergantung pada domain yang Anda pilih untuk digunakan.

    • Untuk private.googleapis.com:

      1. Buat data A untuk private.googleapis.com yang mengarah ke alamat IP berikut: 199.36.153.8, 199.36.153.9, 199.36.153.10, 199.36.153.11.

      2. Untuk terhubung ke API menggunakan alamat IPv6, konfigurasikan juga data AAAA untuk private.googleapis.com yang mengarah ke 2600:2d00:0002:2000::.

    • Untuk restricted.googleapis.com:

      1. Buat data A untuk restricted.googleapis.com yang mengarah ke alamat IP berikut: 199.36.153.4, 199.36.153.5, 199.36.153.6, 199.36.153.7.

      2. Agar terhubung ke API menggunakan alamat IPv6, buat juga data AAAA untuk restricted.googleapis.com yang mengarah ke 2600:2d00:0002:1000::.

    Untuk membuat data DNS pribadi di Cloud DNS, lihat menambahkan data.

  3. Di zona googleapis.com, buat data CNAME untuk *.googleapis.com yang mengarah ke domain yang telah Anda konfigurasi: private.googleapis.com atau restricted.googleapis.com.

Mengonfigurasi DNS untuk domain lain

Beberapa Google API dan layanan Google disediakan menggunakan nama domain tambahan, termasuk *.gcr.io, *.gstatic.com, *.pkg.dev, pki.goog, dan *.run.app. Lihat tabel domain dan rentang alamat IP di Opsi domain untuk menentukan apakah layanan domain tambahan dapat diakses menggunakan private.googleapis.com atau restricted.googleapis.com. Kemudian, untuk setiap domain tambahan:

  1. Buat zona DNS untuk DOMAIN (misalnya, gcr.io). Jika Anda menggunakan Cloud DNS, pastikan zona ini berada di project yang sama dengan googleapis.com zona pribadi Anda.

  2. Di zona DNS ini, buat data DNS pribadi berikut untuk baik private.googleapis.com maupun restricted.googleapis.com, bergantung pada domain yang Anda pilih untuk digunakan.

    • Untuk private.googleapis.com:

      1. Buat data A untuk DOMAIN yang mengarah ke alamat IP berikut: 199.36.153.8, 199.36.153.9, 199.36.153.10, 199.36.153.11.

      2. Agar terhubung ke API menggunakan alamat IPv6, buat juga data AAAA untuk DOMAIN yang mengarah ke 2600:2d00:0002:2000::.

    • Untuk restricted.googleapis.com:

      1. Buat data A untuk DOMAIN yang mengarah ke alamat IP berikut: 199.36.153.4, 199.36.153.5, 199.36.153.6, 199.36.153.7.

      2. Agar terhubung ke API menggunakan alamat IPv6, buat juga data AAAA untuk restricted.googleapis.com yang mengarah ke 2600:2d00:0002:1000::.

  3. Di zona DOMAIN, buat data CNAME untuk *.DOMAIN yang mengarah ke DOMAIN. Misalnya, buat data CNAME untuk *.gcr.io yang mengarah ke gcr.io.

Mengonfigurasi DNS untuk nama domain kustom Cloud Storage

Jika Anda menggunakan bucket Cloud Storage, dan mengirim permintaan ke nama domain kustom Cloud Storage, konfigurasi data DNS untuk nama domain kustom Cloud Storage agar mengarah ke alamat IP untuk private.googleapis.com atau restricted.googleapis.com tidak cukup untuk mengizinkan akses ke bucket Cloud Storage.

Jika ingin mengirim permintaan ke nama domain kustom Cloud Storage, Anda juga harus secara eksplisit menetapkan header Host dan TLS SNI permintaan HTTP ke storage.googleapis.com Alamat IP untuk private.googleapis.com dan restricted.googleapis.com tidak mendukung nama host Cloud Storage kustom di header Host permintaan HTTP dan TLS SNI.

Opsi pemilihan rute

Jaringan VPC Anda harus memiliki rute yang sesuai dengan next hop yang merupakan gateway internet default. Google Cloud tidak mendukung pemilihan rute traffic ke Google API dan layanan Google melalui instance VM lain atau next hop kustom. Meskipun disebut sebagai gateway internet default, paket yang dikirim dari VM di jaringan VPC Anda ke Google API dan layanan Google tetap berada dalam jaringan Google.

  • Jika Anda memilih domain default, instance VM Anda akan terhubung ke Google API dan layanan Google menggunakan sebagian alamat IP eksternal Google. Alamat IP ini dapat dirutekan secara publik, tetapi jalur dari VM dalam jaringan VPC ke alamat tersebut tetap berada dalam jaringan Google.

  • Google tidak memublikasikan rute di internet ke alamat IP mana pun yang digunakan oleh domain private.googleapis.com atau restricted.googleapis.com. Akibatnya, domain ini hanya dapat diakses oleh VM di jaringan VPC atau sistem lokal yang terhubung ke jaringan VPC.

Jika jaringan VPC Anda berisi rute default yang next hop-nya adalah gateway internet default, Anda dapat menggunakan rute tersebut untuk mengakses Google API dan layanan Google, tanpa perlu membuat rute kustom. Lihat pemilihan rute dengan rute default untuk mengetahui detailnya.

Jika Anda telah mengganti rute default (tujuan 0.0.0.0/0 atau ::0/0) dengan rute kustom yang next hop-nya bukan gateway internet default, Anda dapat memenuhi persyaratan pemilihan rute untuk Google API dan layanan Google menggunakan pemilihan rute kustom.

Jika jaringan VPC Anda tidak memiliki rute default IPv6, Anda tidak akan memiliki konektivitas IPv6 ke Google API dan layanan Google. Tambahkan rute default IPv6 untuk mengizinkan konektivitas IPv6.

Pemilihan rute dengan rute default

Setiap jaringan VPC berisi rute default IPv4 (0.0.0.0/0) saat dibuat. Jika Anda mengaktifkan alamat IPv6 eksternal di subnet, rute default IPv6 yang dihasilkan sistem (::/0) akan ditambahkan ke jaringan VPC tersebut.

Rute default menyediakan jalur ke alamat IP untuk tujuan berikut:

  • Domain default.

  • private.googleapis.com: 199.36.153.8/30 dan 2600:2d00:0002:2000::/64.

  • restricted.googleapis.com: 199.36.153.4/30 dan 2600:2d00:0002:1000::/64.

Untuk memeriksa konfigurasi rute default di jaringan tertentu, ikuti petunjuk berikut.

Konsol

  1. Di Konsol Google Cloud, buka halaman Routes.

    Buka Rute

  2. Filter daftar rute untuk hanya menampilkan rute untuk jaringan yang perlu Anda periksa.

  3. Cari rute yang tujuannya 0.0.0.0/0 untuk traffic IPv4 atau ::/0 untuk traffic IPv6 dan yang next hop-nya adalah gateway internet default.

gcloud

Gunakan perintah gcloud berikut, dengan mengganti NETWORK_NAME dengan nama jaringan yang akan diperiksa:

gcloud compute routes list \
    --filter="default-internet-gateway NETWORK_NAME"

Jika Anda perlu membuat rute IPv4 default pengganti, lihat Menambahkan rute statis.

Jika Anda perlu membuat rute IPv6 default pengganti, lihat Menambahkan rute default IPv6.

Pemilihan rute kustom

Sebagai alternatif rute default, Anda dapat menggunakan rute statis kustom, yang masing-masing memiliki tujuan yang lebih spesifik, dan menggunakan next hop gateway internet default. Jumlah rute yang Anda butuhkan dan alamat IP tujuannya bergantung pada domain yang Anda pilih.

Selain itu, sebaiknya tambahkan rute untuk 34.126.0.0/18 dan 2001:4860:8040::/42. Untuk informasi selengkapnya, lihat Ringkasan opsi konfigurasi.

Untuk memeriksa konfigurasi rute kustom untuk Google API dan layanan Google di jaringan tertentu, ikuti petunjuk berikut.

Konsol

  1. Di Konsol Google Cloud, buka halaman Routes.

    Buka Rute

  2. Gunakan kolom teks Filter table untuk memfilter daftar rute menggunakan kriteria berikut, yang mengganti NETWORK_NAME dengan nama jaringan VPC Anda.

    • Jaringan: NETWORK_NAME
    • Jenis next hop: default internet gateway
  3. Lihat kolom Destination IP range untuk setiap rute. Jika Anda memilih domain default, periksa beberapa rute statis kustom, satu rute untuk setiap rentang alamat IP yang digunakan oleh domain default. Jika Anda memilih private.googleapis.com atau restricted.googleapis.com, cari rentang IP domain tersebut.

gcloud

Gunakan perintah gcloud berikut, dengan mengganti NETWORK_NAME dengan nama jaringan yang akan diperiksa:

gcloud compute routes list \
    --filter="default-internet-gateway NETWORK_NAME"

Rute dicantumkan dalam format tabel kecuali jika Anda menyesuaikan perintah dengan flag --format. Lihat di kolom DEST_RANGE untuk tujuan setiap rute. Jika Anda memilih domain default, periksa beberapa rute statis kustom, satu rute untuk setiap rentang alamat IP yang digunakan oleh domain default. Jika Anda memilih private.googleapis.com atau restricted.googleapis.com, cari rentang IP domain tersebut.

Jika Anda perlu membuat rute, lihat Menambahkan rute statis.

Konfigurasi firewall

Konfigurasi firewall jaringan VPC Anda harus mengizinkan akses dari VM ke alamat IP yang digunakan oleh Google API dan layanan Google. Aturan allow egress tersirat memenuhi persyaratan ini.

Di beberapa konfigurasi firewall, Anda harus membuat aturan izinkan traffic keluar khusus. Misalnya, anggaplah Anda telah membuat aturan tolak traffic keluar yang memblokir traffic ke semua tujuan (0.0.0.0 untuk IPv4 atau ::/0 untuk IPv6). Dalam hal ini, Anda harus membuat satu aturan firewall izinkan traffic keluar yang prioritasnya lebih tinggi daripada aturan tolak traffic keluar untuk setiap rentang alamat IP yang digunakan oleh domain yang Anda pilih untuk Google API dan layanan Google.

Selain itu, sebaiknya sertakan 34.126.0.0/18 dan 2001:4860:8040::/42 dalam aturan firewall izinkan keluar. Untuk informasi selengkapnya, lihat Ringkasan opsi konfigurasi.

Untuk membuat aturan firewall, baca artikel Membuat aturan firewall. Anda dapat membatasi VM yang menerapkan aturan firewall saat Anda menentukan target dari setiap aturan izinkan traffic keluar.

Alamat IP untuk domain default

Bagian ini menjelaskan cara membuat daftar rentang IP domain default yang digunakan oleh Google API dan layanan Google, seperti *.googleapis.com dan *.gcr.io. Rentang ini dialokasikan secara dinamis dan sering berubah, sehingga tidak mungkin untuk menentukan rentang IP tertentu untuk setiap layanan atau API. Untuk mempertahankan daftar yang akurat, siapkan otomatisasi untuk menjalankan skrip setiap hari. Sebagai alternatif untuk mempertahankan daftar rentang alamat IP, pertimbangkan untuk menggunakan private.googleapis.com VIP atau Private Service Connect.

  • Google akan memublikasikan daftar lengkap rentang IP yang disediakannya bagi pengguna di internet di goog.json.

  • Google juga memublikasikan daftar rentang alamat IP eksternal global dan regional yang tersedia untuk resource Google Cloud pelanggan di cloud.json.

Alamat IP yang digunakan oleh domain default untuk Google API dan layanan Google sesuai dengan daftar rentang yang dihitung dengan menghapus semua rentang di cloud.json dari rentang di goog.json. Daftar ini sering diupdate.

Anda dapat menggunakan skrip Python berikut untuk membuat daftar rentang alamat IP yang mencakup rentang yang digunakan oleh domain default untuk Google API dan layanan Google.

Untuk informasi tentang cara menjalankan skrip ini, lihat Cara menjalankan.

from __future__ import print_function

import json

try:
    from urllib import urlopen
except ImportError:
    from urllib.request import urlopen
    from urllib.error import HTTPError

import netaddr

IPRANGE_URLS = {
    "goog": "https://www.gstatic.com/ipranges/goog.json",
    "cloud": "https://www.gstatic.com/ipranges/cloud.json",
}


def read_url(url):
    try:
        return json.loads(urlopen(url).read())
    except (IOError, HTTPError):
        print("ERROR: Invalid HTTP response from %s" % url)
    except json.decoder.JSONDecodeError:
        print("ERROR: Could not parse HTTP response from %s" % url)


def get_data(link):
    data = read_url(link)
    if data:
        print("{} published: {}".format(link, data.get("creationTime")))
        cidrs = netaddr.IPSet()
        for e in data["prefixes"]:
            if "ipv4Prefix" in e:
                cidrs.add(e.get("ipv4Prefix"))
            if "ipv6Prefix" in e:
                cidrs.add(e.get("ipv6Prefix"))
        return cidrs


def main():
    cidrs = {group: get_data(link) for group, link in IPRANGE_URLS.items()}
    if len(cidrs) != 2:
        raise ValueError("ERROR: Could process data from Google")
    print("IP ranges for Google APIs and services default domains:")
    for ip in (cidrs["goog"] - cidrs["cloud"]).iter_cidrs():
        print(ip)


if __name__ == "__main__":
    main()