Anda dapat menjalankan pipeline Dataflow secara lokal atau di resource terkelola Google Cloud menggunakan runner Dataflow. Baik menjalankan pipeline secara lokal maupun di cloud, pipeline dan pekerjanya menggunakan sistem izin untuk mempertahankan akses yang aman ke file dan resource pipeline. Izin Dataflow ditetapkan sesuai dengan peran yang digunakan untuk mengakses resource pipeline. Dokumen ini menjelaskan konsep berikut:
- Mengupgrade VM Dataflow
- Peran dan izin yang diperlukan untuk menjalankan pipeline lokal dan Google Cloud
- Peran dan izin yang diperlukan untuk mengakses resource pipeline
- Jenis data yang digunakan dalam layanan Dataflow dan dalam keamanan data
Sebelum memulai
Baca tentang ID project di ringkasanGoogle Cloud . Google Cloud ID ini mencakup nama project, project ID, dan nomor project.
Mengupgrade dan mem-patch VM Dataflow
Dataflow menggunakan Container-Optimized OS. Proses keamanan Container-Optimized OS juga berlaku untuk Dataflow.
Pipeline batch terikat waktu dan tidak memerlukan pemeliharaan. Saat pipeline batch baru dimulai, image Dataflow terbaru akan digunakan.
Untuk pipeline streaming, jika patch keamanan diperlukan segera,
Google Cloud memberi tahu Anda menggunakan buletin keamanan. Untuk pipeline streaming, sebaiknya gunakan opsi --update
untuk memulai ulang tugas dengan image Dataflow terbaru.
Image container Dataflow tersedia di konsolGoogle Cloud .
Lingkungan runtime
Untuk lingkungan runtime kode pengguna pipeline, Dataflow menggunakan image Apache Beam bawaan, atau container kustom jika disediakan.
Pengguna untuk eksekusi penampung dipilih oleh layanan Dataflow. Resource pipeline dialokasikan per tugas; tidak ada berbagi VM dan resource lain antar-pipeline.
Siklus proses lingkungan runtime terikat dengan siklus proses pipeline. Dimulai saat pipeline dimulai, dan dihentikan saat pipeline dihentikan; lingkungan runtime dapat dimulai ulang satu atau beberapa kali selama eksekusi pipeline.
Keamanan dan izin untuk pipeline lokal
Saat Anda menjalankan secara lokal, pipeline Apache Beam Anda akan berjalan sebagai Google Cloud akun yang Anda konfigurasi dengan file yang dapat dieksekusi Google Cloud CLI. Operasi Apache Beam SDK yang dijalankan secara lokal dan akun Google Cloud Anda memiliki akses ke file dan resource yang sama.
Untuk mencantumkan akun Google Cloud yang Anda pilih sebagai akun default, jalankan perintah
gcloud config list
.
Pipeline lokal dapat menghasilkan data ke tujuan lokal, seperti file lokal, atau ke tujuan cloud, seperti Cloud Storage atau BigQuery. Jika pipeline yang dijalankan secara lokal menulis file ke resource berbasis cloud seperti Cloud Storage, pipeline tersebut akan menggunakan kredensial akun Google Cloud dan project Google Cloud yang Anda konfigurasi sebagai default Google Cloud CLI. Untuk mengetahui petunjuk tentang cara melakukan autentikasi dengan kredensial akun Google Cloud , lihat tutorial untuk bahasa yang Anda gunakan: Java, Python, atau Go.
Keamanan dan izin untuk pipeline di Google Cloud
Saat Anda menjalankan pipeline, Dataflow menggunakan dua akun layanan untuk mengelola keamanan dan izin:
Akun layanan Dataflow. Layanan Dataflow menggunakan akun layanan Dataflow sebagai bagian dari permintaan pembuatan tugas, seperti untuk memeriksa kuota project dan membuat instance pekerja atas nama Anda. Dataflow juga menggunakan akun layanan Dataflow selama eksekusi tugas untuk mengelola tugas. Akun ini juga dikenal sebagai agen layanan Dataflow.
Akun layanan pekerja. Instance pekerja menggunakan akun layanan pekerja untuk mengakses resource input dan output setelah Anda mengirimkan tugas. Secara default, pekerja menggunakan akun layanan default Compute Engine yang terkait dengan project Anda sebagai akun layanan pekerja. Sebagai praktik terbaik, sebaiknya tentukan akun layanan yang dikelola pengguna, bukan menggunakan akun layanan pekerja default.
Untuk meniru identitas
akun layanan, akun yang meluncurkan pipeline harus memiliki peran berikut:
iam.serviceAccounts.actAs
.
Bergantung pada izin project lainnya, akun pengguna Anda mungkin juga memerlukan peran roles/dataflow.developer
. Jika Anda adalah pemilik atau editor project, Anda sudah memiliki izin yang tercakup dalam peran roles/dataflow.developer
.
Praktik terbaik
- Jika memungkinkan, untuk akun layanan pekerja, tentukan akun layanan yang dikelola pengguna, bukan menggunakan akun layanan pekerja default.
- Saat memberikan izin pada resource, berikan peran yang berisi izin minimum yang diperlukan untuk tugas tersebut. Anda dapat membuat peran khusus yang hanya menyertakan izin yang diperlukan.
- Saat memberikan peran untuk mengakses resource, gunakan tingkat resource
serendah mungkin. Misalnya, alih-alih memberikan peran
roles/bigquery.dataEditor
di project atau folder, berikan peran di tabel BigQuery. - Buat bucket yang dimiliki oleh project Anda untuk digunakan sebagai bucket penyiapan Dataflow. Izin bucket default memungkinkan Dataflow menggunakan bucket untuk melakukan staging file yang dapat dieksekusi dari pipeline.
Akun layanan Dataflow
Semua project yang telah menggunakan resource Dataflow Job
memiliki Akun Layanan Dataflow,
yang juga dikenal sebagai agen layanan Dataflow,
yang memiliki email berikut:
service-PROJECT_NUMBER@dataflow-service-producer-prod.iam.gserviceaccount.com
Akun layanan ini dibuat dan dikelola oleh Google serta ditetapkan ke project Anda secara otomatis saat penggunaan pertama resource Dataflow Job
.
Sebagai bagian dari menjalankan pipeline Dataflow, Dataflow memanipulasi resource atas nama Anda. Misalnya, membuat VM tambahan. Saat Anda menjalankan pipeline dengan Dataflow, akun layanan ini akan digunakan.
Akun ini diberi peran Dataflow Service Agent di project. Akun ini memiliki izin yang diperlukan untuk menjalankan tugas Dataflow di project, termasuk memulai worker Compute Engine. Akun ini digunakan secara eksklusif oleh Dataflow dan khusus untuk project Anda.
Anda dapat meninjau peran yang ditetapkan ke akun layanan Dataflow di konsolGoogle Cloud atau Google Cloud CLI.
Konsol
Buka halaman Roles.
Jika berlaku, pilih project Anda.
Dalam daftar, klik judul Agen Layanan Cloud Dataflow. Halaman yang mencantumkan izin yang ditetapkan ke akun layanan Dataflow akan terbuka.
gcloud CLI
Melihat izin akun layanan Dataflow:
gcloud iam roles describe roles/dataflow.serviceAgent
Karena layanan Google Cloud mengharapkan akses baca dan tulis ke project dan resource-nya, sebaiknya Anda tidak mengubah izin default yang ditetapkan secara otomatis untuk project Anda. Jika akun layanan Dataflow kehilangan izin ke suatu project, Dataflow tidak dapat meluncurkan VM atau melakukan tugas pengelolaan lainnya.
Jika Anda menghapus izin untuk akun layanan dari kebijakan Identity and Access Management (IAM), akun tersebut akan tetap ada karena dimiliki oleh layanan Dataflow.
Akun layanan pekerja
Instance Compute Engine menjalankan operasi Apache Beam SDK di cloud. Pekerja ini menggunakan akun layanan pekerja project Anda untuk mengakses file dan resource lain yang terkait dengan pipeline. Akun layanan pekerja digunakan sebagai identitas untuk semua VM pekerja, dan semua permintaan yang berasal dari VM menggunakan akun layanan pekerja. Akun layanan ini juga digunakan untuk berinteraksi dengan resource seperti bucket Cloud Storage dan topik Pub/Sub.
- Agar akun layanan pekerja dapat menjalankan tugas, akun tersebut harus memiliki peran
roles/dataflow.worker
. - Agar akun layanan pekerja dapat membuat atau memeriksa tugas, akun layanan tersebut harus
memiliki peran
roles/dataflow.admin
.
Selain itu, saat pipeline Apache Beam Anda mengakses Google Cloud resource,
Anda harus memberikan peran yang diperlukan ke akun layanan worker project Dataflow Anda. Akun layanan worker harus dapat
mengakses resource saat menjalankan
tugas Dataflow. Misalnya, jika tugas Anda menulis ke
BigQuery, akun layanan Anda juga harus memiliki setidaknya peran
roles/bigquery.dataEditor
di tabel BigQuery. Contoh resource mencakup:
Akun layanan worker default
Secara default, pekerja menggunakan akun layanan default Compute Engine project Anda sebagai akun layanan pekerja. Akun layanan ini memiliki email berikut:
PROJECT_NUMBER-compute@developer.gserviceaccount.com
Akun layanan ini dibuat secara otomatis saat Anda mengaktifkan Compute Engine API untuk project dari API Library di konsol Google Cloud .
Meskipun Anda dapat menggunakan akun layanan default Compute Engine sebagai akun layanan worker Dataflow, sebaiknya Anda membuat akun layanan worker Dataflow khusus yang hanya memiliki peran dan izin yang Anda butuhkan.
Bergantung pada konfigurasi kebijakan organisasi Anda, akun layanan default mungkin
secara otomatis diberi peran Editor di project
Anda. Sebaiknya Anda menonaktifkan pemberian peran otomatis dengan
menerapkan batasan kebijakan organisasi iam.automaticIamGrantsForDefaultServiceAccounts
. Jika Anda membuat organisasi setelah 3 Mei 2024, batasan ini diterapkan secara default.
Jika Anda menonaktifkan pemberian peran otomatis, Anda harus menentukan peran mana yang akan diberikan ke akun layanan default, lalu memberikan peran tersebut secara manual.
Jika akun layanan default sudah memiliki peran Editor, sebaiknya ganti peran Editor dengan peran yang kurang permisif.Untuk mengubah peran akun layanan dengan aman, gunakan Policy Simulator untuk melihat dampak perubahan, lalu berikan dan cabut peran yang sesuai.
Menentukan akun layanan pekerja yang dikelola pengguna
Jika ingin membuat dan menggunakan resource dengan kontrol akses terperinci, Anda dapat membuat akun layanan yang dikelola pengguna. Gunakan akun ini sebagai akun layanan pekerja.
Jika Anda tidak memiliki akun layanan yang dikelola pengguna, buat akun layanan.
Tetapkan peran IAM yang diperlukan untuk akun layanan Anda.
- Agar akun layanan pekerja dapat menjalankan tugas, akun tersebut harus memiliki peran
roles/dataflow.worker
. - Agar akun layanan pekerja dapat membuat atau memeriksa tugas, akun layanan tersebut harus
memiliki peran
roles/dataflow.admin
. - Atau, buat peran IAM kustom dengan izin yang diperlukan. Untuk daftar izin yang diperlukan, lihat Peran.
- Akun layanan Anda mungkin memerlukan peran tambahan untuk menggunakan resource sebagaimana yang diperlukan oleh tugas Anda, seperti BigQuery, Pub/Sub, atau Cloud Storage. Google Cloud
Misalnya, jika tugas Anda membaca dari
BigQuery, akun layanan Anda juga harus memiliki setidaknya peran
roles/bigquery.dataViewer
di tabel BigQuery. - Pastikan akun layanan yang dikelola pengguna Anda memiliki akses baca dan tulis ke lokasi sementara dan staging yang ditentukan dalam tugas Dataflow.
- Untuk meniru identitas akun layanan, akun pengguna Anda harus memiliki izin
iam.serviceAccounts.actAs
.
- Agar akun layanan pekerja dapat menjalankan tugas, akun tersebut harus memiliki peran
Di project yang berisi akun layanan worker yang dikelola pengguna, Akun Layanan Dataflow (
service-PROJECT_NUMBER@dataflow-service-producer-prod.iam.gserviceaccount.com
) dan Agen Layanan Compute Engine (service-PROJECT_NUMBER@compute-system.iam.gserviceaccount.com
) harus memiliki peran berikut. PROJECT_NUMBER adalah ID project tempat tugas Dataflow Anda berjalan. Kedua akun ini adalah agen layanan.- Peran Service Account Token Creator
(
iam.serviceAccountTokenCreator
) - Peran Service Account User
(
iam.serviceAccountUser
)
Dengan asumsi bahwa tugas Dataflow berjalan di project A dan akun layanan worker dihosting di project B, pastikan agen layanan dari project A memiliki peran
iam.serviceAccountTokenCreator
daniam.serviceAccountUser
di project B. Di project tempat tugas Dataflow Anda berjalan, akun tersebut memiliki peran ini secara default. Untuk memberikan peran ini, ikuti langkah-langkah di bagian Memberikan satu peran di halaman Mengelola akses ke akun layanan.- Peran Service Account Token Creator
(
Jika akun layanan pekerja yang dikelola pengguna dan tugas berada di project yang berbeda, pastikan batasan boolean
iam.disableCrossProjectServiceAccountUsage
tidak diterapkan untuk project yang memiliki akun layanan yang dikelola pengguna. Untuk mengetahui informasi selengkapnya, lihat Mengaktifkan akun layanan untuk dilampirkan di seluruh project.Saat menjalankan tugas pipeline, tentukan akun layanan Anda.
Java
Gunakan opsi
--serviceAccount
dan tentukan akun layanan Anda saat menjalankan tugas pipeline dari command line:--serviceAccount=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
Gunakan opsi
--service-account-email
dan tentukan akun layanan Anda saat menjalankan tugas pipeline sebagai template Flex:--service-account-email=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
Python
Gunakan opsi
--service_account_email
dan tentukan akun layanan Anda saat menjalankan tugas pipeline:--service_account_email=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
Go
Gunakan opsi
--service_account_email
dan tentukan akun layanan Anda saat menjalankan tugas pipeline:--service_account_email=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
Akun layanan yang dikelola pengguna dapat berada dalam project yang sama dengan tugas Anda, atau dalam project yang berbeda. Jika akun layanan dan tugas berada dalam project yang berbeda, Anda harus mengonfigurasi akun layanan sebelum menjalankan tugas.
Menambahkan peran
Untuk menambahkan peran di project Anda, ikuti langkah-langkah berikut.
Konsol
Di konsol Google Cloud , buka halaman IAM.
Pilih project Anda.
Di baris yang berisi akun pengguna Anda, klik
Edit akun utama, lalu klik Tambahkan peran lain.Di menu drop-down, pilih peran Service Account User.
Di baris yang berisi akun layanan pekerja Anda, klik
Edit akun utama, lalu klik Tambahkan peran lain.Di menu drop-down, pilih peran Dataflow Worker.
Jika akun layanan worker Anda memerlukan peran Admin Dataflow, ulangi langkah-langkah di atas untuk Admin Dataflow.
Ulangi untuk peran apa pun yang diperlukan oleh resource yang digunakan dalam tugas Anda, lalu klik Simpan.
Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Memberikan peran IAM menggunakan konsol.
gcloud CLI
Berikan peran
roles/iam.serviceAccountUser
ke akun pengguna Anda. Jalankan perintah berikut:gcloud projects add-iam-policy-binding PROJECT_ID --member="user:EMAIL_ADDRESS --role=roles/iam.serviceAccountUser
- Ganti
PROJECT_ID
dengan project ID Anda. - Ganti
EMAIL_ADDRESS
dengan alamat email untuk akun pengguna.
- Ganti
Berikan peran ke akun layanan pekerja Anda. Jalankan perintah berikut untuk peran IAM
roles/dataflow.worker
dan untuk peran apa pun yang diperlukan oleh resource yang digunakan dalam tugas Anda. Jika akun layanan pekerja Anda memerlukan peran Admin Dataflow, ulangi untuk peran IAMroles/dataflow.admin
. Contoh ini menggunakan akun layanan default Compute Engine, tetapi sebaiknya gunakan akun layanan yang dikelola pengguna.gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" --role=SERVICE_ACCOUNT_ROLE
- Ganti
PROJECT_ID
dengan project ID Anda. - Ganti
PROJECT_NUMBER
dengan nomor project Anda. Untuk menemukan nomor project Anda, lihat Mengidentifikasi project atau gunakan perintahgcloud projects describe
. - Ganti
SERVICE_ACCOUNT_ROLE
dengan setiap peran individual.
- Ganti
Mengakses Google Cloud resource
Pipeline Apache Beam Anda dapat mengakses resource, baik di project yang sama maupun di project lain. Google Cloud Google Cloud Referensi ini mencakup:
- Repositori Artifact Registry
- Bucket Cloud Storage
- Set data BigQuery
- Topik dan langganan Pub/Sub
- Set data Firestore
Untuk memastikan pipeline Apache Beam Anda dapat mengakses resource ini, Anda harus menggunakan mekanisme kontrol akses masing-masing resource untuk memberikan akses secara eksplisit ke akun layanan worker project Dataflow Anda.
Jika Anda menggunakan fitur Assured Workloads dengan Dataflow, seperti Dukungan dan Wilayah Uni Eropa dengan Kontrol Kedaulatan, semua konektor I/O, Pub/Sub, BigQuery, Cloud Storage, dan resource lain yang diakses pipeline Anda harus berada di project atau folder Assured Workloads organisasi Anda.
Jika Anda menggunakan akun layanan pekerja yang dikelola pengguna atau mengakses resource di project lain, tindakan tambahan mungkin diperlukan. Contoh berikut mengasumsikan bahwa akun layanan default Compute Engine digunakan, tetapi Anda juga dapat menggunakan akun layanan pekerja yang dikelola pengguna.
Mengakses repositori Artifact Registry
Saat menggunakan container kustom dengan Dataflow, Anda dapat mengupload artefak ke repositori Artifact Registry.
Untuk menggunakan Artifact Registry dengan Dataflow, Anda harus memberikan setidaknya
akses Penulis Artifact Registry
(role/artifactregistry.writer
)
ke akun layanan worker
yang menjalankan tugas Dataflow.
Semua konten repositori dienkripsi menggunakan kunci enkripsi yang dikelola Google atau kunci enkripsi yang dikelola pelanggan. Google-owned and Google-managed encryption keys Artifact Registry menggunakan Google-owned and Google-managed encryption keys secara default dan tidak memerlukan konfigurasi untuk opsi ini.
Mengakses bucket Cloud Storage
Untuk memberi project Dataflow Anda akses ke bucket Cloud Storage, buat bucket dapat diakses oleh akun layanan pekerja project Dataflow Anda. Setidaknya, akun layanan Anda memerlukan izin baca dan tulis ke bucket dan isinya. Anda dapat menggunakan izin IAM untuk Cloud Storage untuk memberikan akses yang diperlukan.
Untuk memberi akun layanan pekerja Anda izin yang diperlukan untuk membaca dari dan menulis ke bucket, gunakan perintah
gcloud storage buckets add-iam-policy-binding
. Perintah ini menambahkan akun layanan project Dataflow Anda ke kebijakan tingkat bucket.
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" --role=SERVICE_ACCOUNT_ROLE
Ganti kode berikut:
- BUCKET_NAME: nama bucket Cloud Storage Anda
- PROJECT_NUMBER: nomor project Dataflow Anda. Untuk menemukan nomor project Anda, lihat Mengidentifikasi project atau gunakan perintah
gcloud projects describe
. - SERVICE_ACCOUNT_ROLE: peran IAM, misalnya
storage.objectViewer
Untuk mengambil daftar bucket Cloud Storage dalam projectGoogle Cloud , gunakan perintah gcloud storage buckets list
:
gcloud storage buckets list --project= PROJECT_ID
Ganti PROJECT_ID dengan ID project.
Kecuali jika Anda dibatasi oleh kebijakan organisasi yang membatasi berbagi resource, Anda dapat mengakses bucket yang berada di project yang berbeda dengan pipeline Dataflow Anda. Untuk mengetahui informasi selengkapnya tentang batasan domain, lihat Membatasi identitas berdasarkan domain.
Jika Anda belum memiliki bucket, buat bucket baru. Kemudian, beri akun layanan pekerja Anda izin yang diperlukan untuk membaca dari dan menulis ke bucket.
Anda juga dapat menetapkan izin bucket dari konsol Google Cloud . Untuk mengetahui informasi selengkapnya, lihat Menetapkan izin bucket.
Cloud Storage menawarkan dua sistem untuk memberi pengguna akses ke bucket dan objek Anda: IAM dan Access Control Lists (ACL). Pada umumnya, IAM adalah metode yang direkomendasikan untuk mengontrol akses ke resource Anda.
IAM mengontrol pemberian izin di seluruh Google Cloud dan memungkinkan Anda memberikan izin di level bucket dan project. Untuk mengetahui daftar peran IAM yang terkait dengan Cloud Storage dan izin yang terdapat dalam setiap peran, lihat Peran IAM untuk Cloud Storage. Jika Anda memerlukan lebih banyak kontrol atas izin, buat peran khusus.
Jika Anda menggunakan ACL untuk mengontrol akses, pastikan izin akun layanan pekerja Anda konsisten dengan setelan IAM Anda. Karena ketidakkonsistenan antara kebijakan IAM dan ACL, bucket Cloud Storage mungkin tidak dapat diakses oleh tugas Dataflow Anda saat bucket Cloud Storage dimigrasikan dari akses terperinci ke akses level bucket yang seragam. Untuk mengetahui informasi selengkapnya, lihat Panduan kesalahan umum.
Mengakses set data BigQuery
Anda dapat menggunakan BigQueryIO
API untuk mengakses set data BigQuery, baik di
project yang sama tempat Anda menggunakan Dataflow atau di project
lain. Agar sumber dan tujuan BigQuery dapat beroperasi dengan benar, dua akun berikut harus memiliki akses ke set data BigQuery yang dibaca atau ditulis oleh tugas Dataflow Anda:
- Akun Google Cloud yang Anda gunakan untuk menjalankan tugas Dataflow
- Akun layanan pekerja yang menjalankan tugas Dataflow
Anda mungkin perlu mengonfigurasi BigQuery untuk memberikan akses secara eksplisit ke akun ini. Lihat Kontrol Akses BigQuery untuk mengetahui informasi selengkapnya tentang pemberian akses ke set data BigQuery menggunakan halaman BigQuery atau BigQuery API.
Di antara izin BigQuery yang diperlukan, izin IAM bigquery.datasets.get
diperlukan oleh pipeline untuk mengakses set data BigQuery. Biasanya, sebagian besar peran IAM BigQuery mencakup izin bigquery.datasets.get
, tetapi peran roles/bigquery.jobUser
adalah pengecualian.
Mengakses topik dan langganan Pub/Sub
Untuk mengakses topik atau langganan Pub/Sub, gunakan fitur Identity and Access Management Pub/Sub untuk menyiapkan izin bagi akun layanan pekerja.
Izin dari peran Pub/Sub berikut relevan:
roles/pubsub.subscriber
wajib untuk menggunakan data.roles/pubsub.editor
diperlukan untuk membuat langganan Pub/Sub.roles/pubsub.viewer
direkomendasikan agar Dataflow dapat membuat kueri konfigurasi topik dan langganan. Konfigurasi ini memiliki dua manfaat:- Dataflow dapat memeriksa setelan yang tidak didukung pada langganan yang mungkin tidak berfungsi seperti yang diharapkan.
- Jika langganan tidak menggunakan batas waktu pengakuan
default 10 detik, performa akan meningkat. Dataflow berulang kali
memperpanjang batas waktu pengiriman konfirmasi untuk pesan saat diproses oleh
pipeline. Tanpa izin
pubsub.viewer
, Dataflow tidak dapat membuat kueri batas waktu pengiriman konfirmasi, sehingga harus mengasumsikan batas waktu default. Konfigurasi ini menyebabkan Dataflow mengeluarkan lebih banyak permintaan modifyAckDeadline daripada yang diperlukan. - Jika Kontrol Layanan VPC diaktifkan di project yang memiliki langganan atau topik, aturan traffic masuk berbasis alamat IP tidak mengizinkan Dataflow untuk mengkueri konfigurasi. Dalam hal ini, diperlukan aturan masuk berdasarkan akun layanan pekerja.
Untuk mengetahui informasi selengkapnya dan beberapa contoh kode yang menunjukkan cara menggunakan fitur Identity and Access Management Pub/Sub, lihat Contoh kasus penggunaan: komunikasi lintas project.
Mengakses Firestore
Untuk mengakses database Firestore (dalam mode Native atau
mode Datastore), tambahkan akun layanan worker Dataflow Anda
(misalnya, PROJECT_NUMBER-compute@developer.gserviceaccount.com
)
sebagai editor project yang memiliki database,
atau gunakan peran Datastore yang lebih ketat seperti roles/datastore.viewer
.
Selain itu, aktifkan Firestore API di kedua project dari
API Library
di konsol Google Cloud .
Mengakses image untuk project dengan kebijakan image tepercaya
Jika Anda telah menyiapkan kebijakan image tepercaya untuk project dan image booting Anda berada di project lain, pastikan kebijakan image tepercaya dikonfigurasi untuk memiliki akses ke image tersebut.
Misalnya, jika Anda menjalankan tugas Dataflow yang dibuat dari template, pastikan file kebijakan menyertakan akses ke project dataflow-service-producer-prod
.
Project Google Cloud ini berisi gambar untuk tugas template.
Akses dan keamanan data
Layanan Dataflow bekerja dengan dua jenis data:
Data pengguna akhir. Data ini diproses oleh pipeline Dataflow. Pipeline biasa membaca data dari satu atau beberapa sumber, menerapkan transformasi data, dan menulis hasilnya ke satu atau beberapa tujuan. Semua sumber dan tujuan adalah layanan penyimpanan yang tidak dikelola langsung oleh Dataflow.
Data operasional. Data ini mencakup semua metadata yang diperlukan untuk mengelola pipeline Dataflow. Data ini mencakup metadata yang disediakan pengguna seperti nama tugas atau opsi pipeline dan juga metadata yang dibuat sistem seperti ID tugas.
Layanan Dataflow menggunakan beberapa mekanisme keamanan untuk menjaga keamanan dan privasi data Anda. Mekanisme ini berlaku untuk skenario berikut:
- Mengirimkan pipeline ke layanan
- Mengevaluasi pipeline
- Meminta akses ke telemetri dan metrik selama dan setelah eksekusi pipeline
- Menggunakan layanan Dataflow seperti Shuffle atau Streaming Engine
Lokalitas data
Semua pemrosesan data inti untuk Dataflow terjadi di region yang ditentukan dalam kode pipeline. Jika region tidak ditentukan,
region default us-central1
akan digunakan. Jika Anda menentukan opsi tersebut dalam
kode pipeline, tugas pipeline dapat secara opsional membaca dan menulis dari sumber dan
sink di region lain. Namun, pemrosesan data yang sebenarnya hanya terjadi di region
yang ditentukan untuk menjalankan VM Dataflow.
Logika pipeline dievaluasi pada setiap instance VM pekerja. Anda dapat menentukan zona tempat instance ini dan jaringan pribadi yang digunakan untuk berkomunikasi berada. Komputasi tambahan untuk platform bergantung pada metadata seperti lokasi Cloud Storage atau ukuran file.
Dataflow adalah layanan regional. Untuk mengetahui informasi selengkapnya tentang lokalitas dan region data, lihat Region Dataflow.
Data dalam pengiriman pipeline
Izin IAM untuk project Anda mengontrol akses ke layanan Dataflow. Google Cloud Akun utama yang diberi hak editor atau pemilik ke project Anda dapat mengirimkan pipeline ke layanan. Untuk mengirimkan pipeline, Anda harus melakukan autentikasi menggunakan Google Cloud CLI. Setelah Anda melakukan autentikasi, alur kerja Anda akan dikirimkan menggunakan protokol HTTPS. Untuk mengetahui petunjuk tentang cara mengautentikasi dengan kredensial akun Google Cloud Anda, lihat panduan memulai cepat untuk bahasa yang Anda gunakan.
Data dalam evaluasi pipeline
Sebagai bagian dari evaluasi pipeline, data sementara dapat dibuat dan disimpan secara lokal di instance VM pekerja atau di Cloud Storage. Data sementara dienkripsi saat tidak digunakan dan tidak akan bertahan setelah evaluasi pipeline selesai. Data tersebut juga dapat disimpan di layanan Shuffle atau layanan Streaming Engine (jika Anda telah memilih layanan tersebut) di region yang sama yang ditentukan dalam pipeline Dataflow.
Java
Secara default, VM Compute Engine dihapus saat
tugas Dataflow selesai, terlepas dari apakah
tugas berhasil atau gagal. Akibatnya, Persistent Disk terkait, dan data perantara apa pun yang mungkin disimpan di dalamnya, akan dihapus. Data perantara yang disimpan di Cloud Storage dapat ditemukan di sublokasi
jalur Cloud Storage yang Anda berikan sebagai --stagingLocation
atau
--tempLocation
. Jika Anda menulis output ke file Cloud Storage, file sementara mungkin dibuat di lokasi output sebelum operasi `write` diselesaikan.
Python
Secara default, VM Compute Engine dihapus saat
tugas Dataflow selesai, terlepas dari apakah
tugas berhasil atau gagal. Akibatnya, Persistent Disk terkait, dan data perantara apa pun yang mungkin disimpan di dalamnya, akan dihapus. Data perantara yang disimpan di Cloud Storage dapat ditemukan di sublokasi
jalur Cloud Storage yang Anda berikan sebagai --staging_location
atau
--temp_location
. Jika Anda menulis output ke file Cloud Storage, file sementara mungkin dibuat di lokasi output sebelum operasi `write` diselesaikan.
Go
Secara default, VM Compute Engine dihapus saat
tugas Dataflow selesai, terlepas dari apakah
tugas berhasil atau gagal. Akibatnya, Persistent Disk terkait, dan data perantara apa pun yang mungkin disimpan di dalamnya, akan dihapus. Data perantara yang disimpan di Cloud Storage dapat ditemukan di sublokasi
jalur Cloud Storage yang Anda berikan sebagai --staging_location
atau
--temp_location
. Jika Anda menulis output ke file Cloud Storage, file sementara mungkin dibuat di lokasi output sebelum operasi `write` diselesaikan.
Data dalam log dan telemetri pipeline
Informasi yang disimpan di Cloud Logging sebagian besar dihasilkan oleh kode dalam program Dataflow Anda. Layanan Dataflow juga dapat menghasilkan data peringatan dan error di Cloud Logging, tetapi data ini adalah satu-satunya data perantara yang ditambahkan layanan ke log. Cloud Logging adalah layanan global.
Data telemetri dan metrik terkait dienkripsi saat tidak digunakan, dan akses ke data ini dikontrol oleh izin baca project Anda. Google Cloud
Data di layanan Dataflow
Jika Anda menggunakan Dataflow Shuffle atau Dataflow Streaming untuk pipeline, jangan tentukan opsi pipeline zona. Sebagai gantinya, tentukan wilayah dan tetapkan nilai ke salah satu wilayah tempat Shuffle atau Streaming tersedia. Dataflow akan otomatis memilih zona di region yang Anda tentukan. Data pengguna akhir dalam transit tetap berada di dalam VM pekerja dan di zona yang sama. Tugas Dataflow ini masih dapat membaca dan menulis ke sumber dan tujuan yang berada di luar zona VM. Data dalam transit juga dapat dikirim ke layanan Dataflow Shuffle atau Dataflow Streaming, tetapi data akan selalu berada di region yang ditentukan dalam kode pipeline.
Praktik yang direkomendasikan
Sebaiknya gunakan mekanisme keamanan yang tersedia di resource cloud pokok pipeline Anda. Mekanisme ini mencakup kemampuan keamanan data sumber dan tujuan data seperti BigQuery dan Cloud Storage. Sebaiknya jangan mencampur berbagai tingkat kepercayaan dalam satu project.