Dokumen ini menjelaskan cara menyelesaikan tugas-tugas berikut:
- Mengonfigurasi instance virtual machine (VM) Dataflow untuk akses internet
- Gunakan tag untuk mengamankan jaringan worker VM.
- Menentukan aturan firewall untuk jaringan yang terkait dengan tugas Dataflow Anda
Dokumen ini mengharuskan Anda memiliki pengetahuan dasar tentang jaringan Google Cloud . Untuk menentukan jaringan untuk tugas Dataflow Anda, lihat Menentukan jaringan dan subnetwork Anda. Untuk mengetahui informasi selengkapnya tentang cara memecahkan masalah jaringan, lihat Memecahkan masalah jaringan Dataflow.
Akses ke API Google Cloud untuk Dataflow
Virtual machine (VM) worker Dataflow harus menjangkau API dan layananGoogle Cloud . Kumpulan endpoint Google Cloud dependen dapat berubah dari waktu ke waktu, tetapi semuanya mendukung Kontrol Layanan VPC. Gunakan salah satu metode berikut untuk mengonfigurasi akses ke API Google Cloud :
Konfigurasikan Akses Google Pribadi. Dengan Akses Google Pribadi, VM yang hanya memiliki alamat IP internal dapat mengakses alamat IP untuk Google Cloud dan layanan Google.
Konfigurasikan alamat IP endpoint Private Service Connect untuk mengakses API dan layanan Google Cloud .
Konfigurasikan worker VM dengan alamat IP eksternal.
Secara default, aturan firewall dan konfigurasi DNS mengizinkan akses ke APIGoogle Cloud . Namun, Anda mungkin secara aktif membatasi akses ke
subgrup API Google Cloud , misalnya jika Anda menggunakan
Kontrol Layanan VPC.
Dalam hal ini, minimal berikan akses ke
restricted.googleapis.com. Jika Anda menggunakan Private Service Connect,
berikan akses ke paket vpc-sc.
Memberikan akses ke domain yang lebih permisif, seperti private.googleapis.com, juga menyediakan fungsi yang diperlukan.
Untuk mengizinkan akses ke API Google Cloud yang diperlukan melalui domain tertentu, lingkungan Anda harus memenuhi persyaratan berikut:
Aturan firewall harus mengizinkan egress ke semua rentang alamat di domain yang dipilih.
DNS harus me-resolve
*.googleapis.comke domain yang Anda pilih.
Misalnya, jika aturan firewall Anda membatasi egress ke rentang alamat restricted.googleapis.com, *.googleapis.com harus di-resolve ke alamat dalam rentang tersebut.
Untuk mengetahui informasi selengkapnya, lihat
Mengonfigurasi DNS untuk googleapis.com.
Demikian pula, jika Anda menggunakan Private Service Connect,
Anda harus membuat data DNS
untuk domain default googleapis.com guna memastikan akses ke setidaknya
semua layanan dalam paket
vpc-sc.
Akses internet untuk Dataflow
Bergantung pada kasus penggunaan Anda, VM Anda mungkin juga memerlukan akses ke resource di luarGoogle Cloud. Gunakan salah satu metode berikut untuk mengonfigurasi akses internet untuk Dataflow:
Konfigurasikan worker VM dengan alamat IP eksternal agar memenuhi persyaratan akses internet.
Konfigurasikan solusi NAT, seperti Cloud NAT. Opsi ini ditujukan untuk menjalankan tugas yang mengakses API dan layanan di luar Google Cloud yang memerlukan akses internet. Misalnya, tugas Python SDK mungkin memerlukan akses ke Python Package Index (PyPI) untuk mendownload dependensi pipeline. Dalam hal ini, Anda harus mengonfigurasi worker VM dengan alamat IP eksternal atau menggunakan Cloud NAT. Anda juga dapat menyediakan dependensi pipeline Python selama pengiriman tugas. Misalnya, Anda dapat menggunakan container kustom untuk menyediakan dependensi pipeline Python, sehingga tidak perlu mengakses PyPI saat runtime.
Untuk mengetahui informasi selengkapnya, lihat Mengelola Dependensi Pipeline Python dalam dokumentasi Apache Beam.
Menonaktifkan alamat IP eksternal
Secara default, Dataflow menetapkan alamat IP eksternal dan internal ke worker. Jika Anda menonaktifkan alamat IP eksternal, tugas Dataflow hanya dapat mengakses resource di tempat berikut:
- Instance lain dalam jaringan VPC yang sama
- Jaringan VPC Bersama
- Jaringan dengan Peering Jaringan VPC diaktifkan
Tanpa alamat IP eksternal, Anda masih dapat melakukan tugas administratif dan pemantauan. Anda dapat mengakses worker menggunakan SSH melalui opsi yang tercantum dalam daftar sebelumnya. Namun, pipeline tidak dapat mengakses internet, dan host internet tidak dapat mengakses worker Dataflow Anda.
Dengan tidak menggunakan alamat IP eksternal, Anda dapat mengamankan infrastruktur pemrosesan data secara lebih baik. Anda juga dapat mengurangi jumlah alamat IP eksternal yang Anda gunakan dari kuota projectGoogle Cloud.
Jika Anda menonaktifkan alamat IP eksternal, tugas Dataflow Anda tidak dapat mengakses API dan layanan di luar Google Cloud yang memerlukan akses internet.
Untuk menonaktifkan alamat IP eksternal, lakukan salah satu hal berikut:
Java
- Aktifkan Akses Google Pribadi untuk jaringan atau subnetwork Anda.
- Dalam parameter tugas Dataflow, tentukan
--usePublicIps=falsedan--network=NETWORK-NAMEatau--subnetwork=SUBNETWORK-NAME.Bergantung pada pilihan Anda, ganti salah satu dari hal berikut:
- NETWORK-NAME: nama jaringan Compute Engine Anda
- SUBNETWORK-NAME: nama subnetwork Compute Engine Anda
Python
- Untuk melakukan staging semua dependensi paket Python, ikuti petunjuk dependensi pipeline Apache Beam.
- Aktifkan Akses Google Pribadi untuk jaringan atau subnetwork Anda.
-
Dalam parameter tugas Dataflow, tentukan
--no_use_public_ipsdan--network=NETWORKatau--subnetwork=SUBNETWORK.Bergantung pada pilihan Anda, ganti salah satu dari hal berikut:
- NETWORK-NAME: nama jaringan Compute Engine Anda
- SUBNETWORK-NAME: nama subnetwork Compute Engine Anda
Go
- Aktifkan Akses Google Pribadi untuk jaringan atau subnetwork Anda.
-
Dalam parameter tugas Dataflow, tentukan
--no_use_public_ipsdan--network=NETWORKatau--subnetwork=SUBNETWORK.Bergantung pada pilihan Anda, ganti salah satu dari hal berikut:
- NETWORK-NAME: nama jaringan Compute Engine Anda
- SUBNETWORK-NAME: nama subnetwork Compute Engine Anda
gcloud
Aktifkan Akses Google Pribadi untuk jaringan atau subnetwork Anda.
Saat meluncurkan tugas Dataflow, sertakan flag
--disable-public-ipsdan tentukan flag--networkatau--subnetwork. Anda dapat menggunakan salah satu perintah berikut:Contoh berikut menggunakan perintah
gcloud dataflow jobs run:gcloud dataflow jobs run JOB_NAME \ --gcs-location=gs://TEMPLATE_BUCKET/templates/TEMPLATE_NAME \ --region=REGION \ --staging-location=gs://TEMP_BUCKET/staging \ --network=NETWORK_NAME \ --subnetwork=SUBNETWORK_NAME \ --disable-public-ipsGanti nilai berikut:
JOB_NAME: nama unik untuk tugas Dataflow Anda.TEMPLATE_BUCKETdanTEMPLATE_NAME: bucket Cloud Storage dan jalur ke file template Anda.REGION: region Dataflow tempat Anda ingin men-deploy tugas, sepertius-central1.TEMP_BUCKET: bucket Cloud Storage untuk file sementara dan biner.NETWORK_NAME: nama jaringan VPC Anda.SUBNETWORK_NAME: nama atau URL subnetwork VPC Anda.
API
Aktifkan Akses Google Pribadi untuk jaringan atau subnetwork Anda.
Saat meluncurkan tugas atau template Dataflow menggunakan metode
projects.locations.templates.launchdari Dataflow REST API, di objekenvironment, tetapkan kolomipConfigurationkeWORKER_IP_PRIVATEdan tentukannetworkatausubnetwork:POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/REGION/templates:launch?gcsPath=gs://TEMPLATE_BUCKET/templates/TEMPLATE_NAME { "jobName": "JOB_NAME", "parameters": { "PARAM_KEY": "PARAM_VALUE" }, "environment": { "tempLocation": "gs://TEMP_BUCKET/temp", "network": "NETWORK_NAME", "subnetwork": "SUBNETWORK_NAME", "ipConfiguration": "WORKER_IP_PRIVATE" } }Ganti nilai berikut:
PROJECT_ID: Project ID Google Cloud Anda.REGION: region Dataflow tempat Anda ingin men-deploy tugas, sepertius-central1.TEMPLATE_BUCKETdanTEMPLATE_NAME: bucket Cloud Storage dan jalur ke file template Anda.JOB_NAME: nama unik untuk tugas Dataflow Anda.PARAM_KEYdanPARAM_VALUE: parameter template apa pun yang diperlukan oleh pipeline Anda.TEMP_BUCKET: nama bucket Cloud Storage Anda untuk file sementara.NETWORK_NAME: nama jaringan VPC Anda.SUBNETWORK_NAME: URL atau jalur lengkap subnetwork VPC Anda.
Kolom
ipConfigurationberjenisWorkerIPAddressConfigurationdan mendukung nilai enum berikut:WORKER_IP_PRIVATE: worker hanya diberi alamat IP internal. Alamat IP publik dinonaktifkan. Memerlukan Akses Google Pribadi.WORKER_IP_PUBLIC: worker diberi alamat IP publik dan internal.WORKER_IP_UNSPECIFIED: menggunakan konfigurasi default (worker menerima alamat IP publik dan IP internal).
Menggunakan tag untuk mengamankan jaringan worker VM
Dengan tag, Anda dapat menerapkan aturan firewall jaringan ke instance VM tertentu. Saat menjalankan tugas Dataflow, Anda dapat menentukan tag untuk worker VM Dataflow yang menjalankan tugas tersebut. Setiap aturan firewall untuk tag tersebut kemudian diterapkan ke worker VM Dataflow.
Dataflow mendukung dua jenis tag untuk jaringan VM:
Menggunakan tag aman dengan Dataflow
Tag aman, yang juga disebut tag yang diatur Identity and Access Management (IAM), adalah key-value pair yang Anda buat dan kelola di Resource Manager. Tidak seperti tag jaringan, tag aman mendukung kontrol akses menggunakan IAM.
Manfaat menggunakan tag aman, bukan tag jaringan, meliputi hal berikut:
Tag aman mencegah modifikasi tag yang tidak sah dan perubahan yang tidak diinginkan pada aturan firewall.
Kebijakan firewall jaringan global dan regional mendukung tag aman. Dengan menggunakan tag aman, Anda dapat mengelompokkan beberapa aturan firewall dan mengupdatenya secara bersamaan, dengan update yang diatur oleh kontrol akses IAM.
Tag aman diwarisi dari resource induk dalam hierarki Google Cloud , sehingga Anda dapat menentukan tag di tingkat yang lebih tinggi, seperti tingkat organisasi. Untuk mengetahui informasi selengkapnya, lihat Pewarisan tag.
Dengan tag aman, aturan firewall masuk dapat menyertakan sumber di jaringan VPC yang terhubung menggunakan Peering Jaringan VPC. Untuk tugas Dataflow, artinya aturan firewall dapat mencakup sumber di jaringan VM worker dan jaringan VPC yang di-peering.
Untuk mengetahui informasi selengkapnya tentang perbedaan antara tag aman dan tag jaringan, lihat Perbandingan Tag dan tag jaringan.
Untuk menerapkan tag aman ke tugas Dataflow, lakukan langkah-langkah berikut:
Konfigurasikan tag aman untuk kebijakan firewall Anda. Untuk mengetahui informasi selengkapnya, lihat Mengonfigurasi tag aman.
Berikan peran Tag User (
roles/resourcemanager.tagUser) ke akun layanan Dataflow pada resource (nilai tag). Untuk mengetahui informasi selengkapnya tentang izin yang diperlukan, lihat Mengelola tag pada resource.Saat Anda membuat tugas Dataflow, gunakan opsi layanan
use_vm_tagsdengan format berikut:
Java
--dataflowServiceOptions=use_vm_tags=tagKeys/KEY1:tagValues/VALUE1;tagKeys/KEY2:tagValues/VALUE2
Python
--dataflow_service_options=use_vm_tags=tagKeys/KEY1:tagValues/VALUE1;tagKeys/KEY2:tagValues/VALUE2
Go
--dataflow_service_options=use_vm_tags=tagKeys/KEY1:tagValues/VALUE1;tagKeys/KEY2:tagValues/VALUE2
gcloud
Gunakan perintah gcloud dataflow jobs run dengan opsi additional-experiments. Jika Anda menggunakan Template Flex, gunakan perintah gcloud dataflow flex-template run.
--additional-experiments=use_vm_tags=tagKeys/KEY1:tagValues/VALUE1;tagKeys/KEY2:tagValues/VALUE2
Menggunakan tag jaringan dengan Dataflow
Tag jaringan adalah atribut teks yang dapat Anda tetapkan pada aturan firewall dan lampirkan ke VM Compute Engine. Tidak seperti tag aman, tag jaringan adalah string teks; tag ini bukan resource yang dikelola oleh Resource Manager.
Untuk menerapkan tag jaringan ke tugas Dataflow, gunakan
use_network_tags
eksperimen, sebagai
berikut:
Java
--dataflowServiceOptions=use_network_tags=TAG_NAME
Python
--dataflow_service_options=use_network_tags=TAG_NAME
Go
--dataflow_service_options=use_network_tags=TAG_NAME
gcloud
Gunakan perintah gcloud dataflow jobs run dengan opsi additional-experiments. Jika Anda menggunakan Template Flex, gunakan perintah gcloud dataflow flex-template run.
--additional-experiments=use_network_tags=TAG_NAME
Menentukan tag jaringan juga akan menambahkan tag jaringan default
Dataflow ke VM peluncur template Flex.
Ganti TAG_NAME dengan nama tag Anda. Jika Anda menambahkan
lebih dari satu tag, pisahkan setiap tag dengan titik koma (;), seperti berikut:
TAG_NAME_1;TAG_NAME_2;TAG_NAME_3;....
Setelah tugas dimulai, Anda tidak dapat menambahkan tag jaringan lainnya ke tugas tersebut.
Dataflow selalu menambahkan tag jaringan default dataflow ke setiap worker VM yang dibuatnya.
Lihat batasan yang berlaku untuk tag jaringan.
Aturan firewall untuk Dataflow
Dengan aturan firewall, Anda dapat mengizinkan atau menolak traffic ke dan dari VM Anda. Jika tugas Dataflow Anda menggunakan Dataflow Shuffle atau Streaming Engine, Anda hanya perlu memastikan bahwa aturan firewall mengizinkan akses ke API Google Cloud .
Jika tidak, Anda harus mengonfigurasi aturan firewall tambahan agar VM Dataflow dapat mengirim dan menerima traffic jaringan di port TCP 12345 untuk tugas streaming dan di port TCP 12346 untuk tugas batch.
Project Owner, Editor, atau Security Administrator
harus membuat aturan firewall yang diperlukan di jaringan VPC yang digunakan oleh
VM Dataflow Anda.
Sebelum mengonfigurasi aturan firewall untuk Dataflow, baca dokumen berikut:
Ringkasan aturan firewall VPC dan Menggunakan aturan firewall VPC
Ringkasan kebijakan firewall hierarkis dan Menggunakan kebijakan dan aturan firewall hierarkis
Saat Anda membuat aturan firewall untuk Dataflow, tentukan tag jaringan Dataflow. Jika tidak, aturan firewall akan berlaku untuk semua VM di jaringan VPC.
Jika berlaku, Kebijakan firewall hierarkis dievaluasi terlebih dahulu dan aturan ini mendahului aturan firewall VPC. Jika tugas Dataflow berada dalam project yang merupakan bagian dari folder atau organisasi tempat Kebijakan firewall hierarkis digunakan, peran compute.orgFirewallPolicyAdmin diperlukan untuk melakukan modifikasi kebijakan.
Jika Anda tidak membuat tag jaringan kustom saat menjalankan kode pipeline, VM Dataflow akan menggunakan tag dataflow default. Jika tidak ada tag jaringan kustom, buat aturan firewall dengan tag dataflow default.
Jika Anda membuat tag jaringan kustom saat menjalankan kode pipeline, VM Dataflow akan menggunakan tag tersebut. Buat aturan firewall dengan tag kustom.
Beberapa jaringan VPC, seperti jaringan default yang dibuat secara otomatis, menyertakan aturan default-allow-internal yang memenuhi persyaratan firewall untuk Dataflow.
Contoh aturan ingress firewall
Aturan firewall masuk mengizinkan VM Dataflow untuk menerima paket dari satu sama lain. Anda harus selalu membuat aturan firewall izinkan traffic masuk atau traffic akan selalu diblokir, meskipun aturan traffic keluar mengizinkan traffic tersebut.
Dalam contoh berikut, aturan ingress firewall dibuat untuk Dataflow, dengan semua worker VM memiliki tag jaringan default dataflow. Project owner, editor, atau security admin dapat menggunakan perintah gcloud berikut untuk membuat aturan izin masuk yang mengizinkan traffic di port TCP 12345 dan 12346 dari VM dengan tag jaringan dataflow ke VM lain dengan tag yang sama:
gcloud compute firewall-rules create FIREWALL_RULE_NAME_INGRESS \
--action=allow \
--direction=ingress \
--network=NETWORK \
--target-tags=CUSTOM_TAG \
--source-tags=CUSTOM_TAG \
--priority=PRIORITY_NUM \
--rules tcp:12345-12346
Ganti kode berikut:
FIREWALL_RULE_NAME_INGRESS: nama untuk aturan firewallNETWORK: nama jaringan yang digunakan worker VM AndaCUSTOM_TAG: daftar tag jaringan yang dipisahkan komaBerikut adalah daftar panduan untuk menggunakan tag jaringan:
Jika Anda menghilangkan
--target-tags, aturan akan berlaku untuk semua VM di jaringan VPC.Jika Anda menghapus
--source-tagsdan semua spesifikasi sumber lainnya, traffic dari sumber mana pun akan diizinkan.Jika Anda belum menentukan tag jaringan kustom dan ingin aturan tersebut khusus untuk VM Dataflow, gunakan
dataflowsebagai tag jaringan.Jika Anda telah menentukan tag jaringan kustom dan ingin aturan tersebut khusus untuk VM Dataflow, gunakan tag jaringan kustom Anda.
PRIORITY_NUM: prioritas aturan firewallAngka yang lebih kecil memiliki prioritas yang lebih tinggi, dan
0adalah prioritas tertinggi.
Contoh aturan egress firewall
Aturan firewall egress mengizinkan VM Dataflow untuk saling mengirim paket. Jika Anda telah membuat aturan firewall tolak egress, Anda mungkin perlu membuat aturan firewall izinkan egress kustom di jaringan VPC Anda.
Dalam contoh ini, aturan egress firewall dibuat untuk Dataflow,
dengan semua worker VM memiliki tag jaringan default dataflow. Project owner, editor, atau administrator keamanan dapat menggunakan perintah gcloud berikut untuk membuat aturan izin egress yang mengizinkan traffic dari port TCP 12345 dan 12346 di VM dengan tag jaringan dataflow ke VM lain dengan tag yang sama:
gcloud compute firewall-rules create FIREWALL_RULE_NAME_EGRESS \
--network=NETWORK \
--action=allow \
--direction=egress \
--target-tags=CUSTOM_TAG \
--source-tags=CUSTOM_TAG \
--destination-ranges=DESTINATION-RANGES\
--priority=PRIORITY_NUM \
--rules tcp:12345-12346
Ganti kode berikut:
FIREWALL_RULE_NAME_EGRESS: nama untuk aturan firewallNETWORK: nama jaringan yang digunakan worker VM AndaCUSTOM_TAG: daftar tag jaringan yang dipisahkan komaBerikut adalah daftar panduan untuk menggunakan tag jaringan:
Jika Anda menghilangkan
--target-tags, aturan akan berlaku untuk semua VM di jaringan VPC.Jika Anda menghapus
--source-tagsdan semua spesifikasi sumber lainnya, traffic dari sumber mana pun akan diizinkan.Jika Anda belum menentukan tag jaringan kustom dan ingin aturan tersebut khusus untuk VM Dataflow, gunakan
dataflowsebagai tag jaringan.Jika Anda telah menentukan tag jaringan kustom dan ingin aturan tersebut khusus untuk VM Dataflow, gunakan tag jaringan kustom Anda.
DESTINATION-RANGES: daftar CIDR yang dipisahkan komaSertakan rentang alamat IP utama subnetwork yang dipilih.
PRIORITY_NUM: prioritas aturan firewallAngka yang lebih kecil memiliki prioritas yang lebih tinggi, dan
0adalah prioritas tertinggi.
Untuk port TCP tertentu yang digunakan oleh Dataflow, Anda dapat melihat manifes container project. Manifes container secara eksplisit menentukan port untuk memetakan port host ke dalam container.
Akses SSH ke worker VM
Dataflow tidak memerlukan SSH; namun, SSH berguna untuk memecahkan masalah.
Jika worker VM Anda memiliki alamat IP eksternal, Anda dapat
terhubung ke VM melalui
konsol Google Cloud atau menggunakan Google Cloud CLI. Untuk terhubung
menggunakan SSH, Anda harus memiliki aturan firewall yang mengizinkan koneksi masuk di TCP
port 22 dari setidaknya alamat IP sistem tempat Anda menjalankan
gcloud atau sistem yang menjalankan browser web yang Anda gunakan untuk mengakses
Google Cloud console.
Anda dapat melihat konfigurasi dan aktivitas jaringan dengan membuka sesi SSH di salah satu worker Anda dan menjalankan iproute2. Untuk mengetahui informasi selengkapnya, lihat
halaman iproute2 di
wiki Linux Foundation.
Jika Anda perlu terhubung ke worker VM yang hanya memiliki alamat IP internal, lihat Memilih opsi koneksi untuk VM khusus internal.
Langkah berikutnya
- Pelajari Connectivity Tests. Uji Konektivitas adalah alat diagnostik yang memungkinkan Anda memeriksa konektivitas di antara endpoint jaringan.
- Membuat dan menjalankan Uji Konektivitas.