Secara default, layanan keluar di lingkungan standar App Engine, seperti URL Fetch, Sockets, dan Mail API, menggunakan kumpulan alamat IP dinamis regional yang digunakan bersama di semua workload serverless. Rentang alamat IP dalam kumpulan ini berubah secara rutin, sehingga dua panggilan berurutan dari aplikasi yang sama dapat berasal dari alamat IP yang berbeda.
Karena workload serverless lainnya menggunakan kumpulan alamat IP default ini, jangan mengandalkannya saat Anda memerlukan alamat IP asal yang dapat diprediksi atau reputasi IP yang terisolasi. Sebagai gantinya, siapkan alamat IP keluar statis untuk layanan Anda dalam situasi berikut:
- Anda terhubung ke database atau API eksternal yang menggunakan daftar yang diizinkan atau firewall alamat IP.
- Anda terhubung ke endpoint eksternal yang sensitif terhadap reputasi, seperti gateway pembayaran, database yang dihosting, atau API partner yang dilindungi oleh firewall aplikasi web (WAF) pihak ketiga. Traffic yang bising dari tenant lain di kumpulan IP bersama default dapat menurunkan reputasi IP dan menyebabkan WAF eksternal memblokir atau membatasi permintaan Anda.
- Anda menjalankan workload pemindaian jaringan yang diizinkan, enumerasi port, pelacakan sidik jari host, pemeriksaan kerentanan, web scraping, atau pengujian beban.
Jika Anda hanya perlu mencari rentang alamat IP yang terkait dengan traffic keluar default dari layanan, Anda dapat menemukan rentang alamat IP saat ini yang mencakup alamat IP App Engine.
Alamat IP untuk layanan App Engine
Anda dapat menemukan rentang alamat IP saat ini untuk layanan App Engine dengan menggunakan dua file json yang dipublikasikan oleh Google:
Google memublikasikan daftar alamat IP milik Google di goog.json.
Google juga memublikasikan daftar rentang alamat IP eksternal global dan regional yang tersedia untuk resource Google Cloud pelanggan di cloud.json.
Menghapus semua rentang di cloud.json dari rentang di goog.json akan menghasilkan
sekumpulan besar alamat IP yang digunakan oleh Google API global dan layanan Google
lainnya, termasuk produk yang ditampilkan kepada pelanggan di luar Google Cloud.
Daftar ini sering diupdate.
Anda dapat menggunakan skrip Python berikut untuk membuat daftar rentang alamat IP yang mencakup rentang alamat IP yang digunakan oleh Google API dan layanan Google.
Untuk mengetahui informasi tentang cara menjalankan skrip ini, lihat Cara menjalankan.
Menyiapkan alamat IP keluar statis
Untuk menyiapkan alamat IP statis untuk layanan lingkungan standar App Engine, rutekan traffic keluar Anda ke jaringan Virtual Private Cloud (VPC) menggunakan traffic keluar VPC Langsung atau Akses VPC Serverless dengan Cloud Router dan Cloud NAT. Menambahkan gateway Cloud NAT ke jaringan VPC akan merutekan traffic keluar App Engine Anda melalui alamat IP statis yang dicadangkan.
Jika layanan Anda diskalakan ke banyak instance atau membuka banyak koneksi serentak, seperti selama pemindaian jaringan yang diizinkan, tetapkan beberapa alamat IP statis ke Cloud NAT. Anda juga dapat meningkatkan port minimum per instance atau mengaktifkan alokasi port dinamis untuk mencegah kehabisan port. Pelajari lebih lanjut cara gateway Cloud NAT menggunakan alamat IP dan port.
Mengarahkan traffic Anda melalui Cloud NAT tidak menambahkan hop tambahan pada stack jaringan Anda karena gateway Cloud NAT dan Cloud Router hanya menyediakan bidang kontrol, dan paket tidak melewati gateway Cloud NAT atau Cloud Router.
Langkah-langkah berikut menunjukkan cara menyiapkan alamat IP keluar statis untuk layanan lingkungan standar App Engine Anda.
Pastikan Anda memiliki peran roles/compute.networkAdmin atau peran khusus dengan izin yang sama.
Buat subnetwork (subnet) di dalam jaringan VPC Anda untuk traffic App Engine. Tindakan ini memastikan bahwa resource lain di jaringan VPC Anda tidak dapat menggunakan alamat IP statis.
gcloud compute networks subnets create SUBNET_NAME \ --range=RANGE \ --network=NETWORK_NAME \ --region=REGION
Ganti kode berikut:
- SUBNET_NAME: nama untuk subnet.
- RANGE:
rentang IP dalam format CIDR
yang ingin Anda tetapkan ke subnet ini (misalnya,
10.124.0.0/28). Traffic keluar VPC Langsung memerlukan rentang/26atau lebih besar. Konektor Akses VPC Serverless memerlukan rentang/28. - NETWORK_NAME: nama jaringan VPC Anda.
- REGION: region layanan App Engine Anda.
Hubungkan layanan App Engine Anda ke subnet menggunakan salah satu metode berikut:
- Egress VPC Langsung: Ikuti langkah-langkah untuk mengonfigurasi
Egress VPC Langsung,
dan tentukan nama subnet yang Anda buat di langkah sebelumnya
di kolom
subnet. - Konektor Akses VPC Serverless: Ikuti langkah-langkah untuk terhubung ke jaringan VPC, dan tentukan nama subnet yang Anda buat di langkah sebelumnya untuk subnet konektor.
- Egress VPC Langsung: Ikuti langkah-langkah untuk mengonfigurasi
Egress VPC Langsung,
dan tentukan nama subnet yang Anda buat di langkah sebelumnya
di kolom
Buat Cloud Router baru. Cloud Router adalah komponen bidang kontrol yang diperlukan untuk Cloud NAT.
gcloud compute routers create ROUTER_NAME \ --network=NETWORK_NAME \ --region=REGION
Ganti kode berikut:
- ROUTER_NAME: nama untuk resource Cloud Router yang ingin Anda buat.
- NETWORK_NAME: nama jaringan VPC Anda.
- REGION: region tempat Anda ingin membuat gateway NAT.
Sediakan alamat IP statis.
Ini adalah alamat yang akan digunakan layanan Anda untuk mengirim traffic keluar. Resource alamat IP yang dicadangkan mempertahankan alamat IP dasar saat resource yang terkait dengannya dihapus dan dibuat ulang. Alamat IP ini mengurangi kuota alamat IP statis di project Google Cloud Anda.
gcloud compute addresses create ORIGIN_IP_NAME \ --region=REGION
Ganti kode berikut:
- ORIGIN_IP_NAME: nama yang ingin Anda tetapkan ke resource alamat IP.
- REGION: region yang akan menjalankan router Cloud NAT. Idealnya, gunakan region yang sama dengan layanan App Engine Anda untuk meminimalkan latensi dan biaya jaringan.
Gunakan perintah
compute addresses describeuntuk melihat hasilnya:gcloud compute addresses describe ORIGIN_IP_NAME
Buat gateway Cloud NAT dan tentukan alamat IP Anda.
Traffic yang berasal dari subnet Anda akan melewati gateway ini dan menggunakan alamat IP statis yang Anda cadangkan di langkah sebelumnya.
gcloud compute routers nats create NAT_NAME \ --router=ROUTER_NAME \ --region=REGION \ --nat-custom-subnet-ip-ranges=SUBNET_NAME \ --nat-external-ip-pool=ORIGIN_IP_NAME
Ganti kode berikut:
- NAT_NAME: nama untuk resource gateway Cloud NAT yang ingin Anda buat.
- ROUTER_NAME: nama Cloud Router Anda.
- REGION: region tempat Anda ingin membuat gateway NAT.
- ORIGIN_IP_NAME: nama resource alamat IP yang dicadangkan yang Anda buat di langkah sebelumnya.
Tetapkan setelan egress ke
all-traffic.Secara default, layanan App Engine hanya mengirim traffic internal ke jaringan VPC Anda. Untuk mengirim traffic dengan tujuan eksternal melalui jaringan VPC Anda agar menggunakan alamat IP statis yang Anda tentukan, Anda harus mengubah setelan egress.
Tentukan setelan egress dalam file
app.yamluntuk layanan Anda.Jika Anda menggunakan traffic keluar VPC Langsung, tetapkan
vpc_egresskeall-traffic:vpc_access: network_interface: network: NETWORK_NAME subnet: SUBNET_NAME vpc_egress: all-traffic
Ganti kode berikut:
- NETWORK_NAME: nama jaringan VPC Anda.
- SUBNET_NAME: nama subnet yang Anda buat.
Jika Anda menggunakan konektor Akses VPC Serverless, tetapkan setelan egress ke
all-traffic:vpc_access_connector: name: projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME egress_setting: all-traffic
Ganti kode berikut:
- PROJECT_ID: Project ID Google Cloud Anda.
- REGION: region tempat konektor Anda berada.
- CONNECTOR_NAME: nama konektor Anda.
Men-deploy layanan:
gcloud app deploy