Anda dapat menjalankan pipeline Dataflow secara lokal atau di resource Google Cloud terkelola menggunakan layanan terkelola Dataflow. Baik berjalan secara lokal maupun di cloud, pipeline dan pekerjanya menggunakan sistem izin untuk mempertahankan akses yang aman ke resource dan file 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 keamanan data
Sebelum memulai
Baca ID project Google Cloud di ringkasan Google Cloud. ID ini mencakup nama project, project ID, dan nomor project.
Mengupgrade dan membuat patch VM Dataflow
Dataflow menggunakan OS yang Dioptimalkan untuk Container. Oleh karena itu, proses keamanan Container-Optimized OS juga berlaku untuk Dataflow.
Pipeline batch terikat waktu dan tidak memerlukan pemeliharaan. Saat pipeline batch baru dimulai, gambar Dataflow terbaru akan digunakan.
Untuk pipeline streaming, jika patch keamanan segera diperlukan, Google Cloud akan memberi tahu Anda menggunakan buletin keamanan. Untuk pipeline streaming, sebaiknya gunakan opsi --update
untuk memulai ulang tugas Anda dengan gambar Dataflow terbaru.
Image container Dataflow tersedia di Google Cloud Console.
Keamanan dan izin untuk pipeline lokal
Saat dijalankan secara lokal, pipeline Apache Beam akan berjalan sebagai akun Google Cloud yang Anda konfigurasi dengan file Google Cloud CLI yang dapat dieksekusi. Oleh karena itu, operasi Apache Beam SDK yang dijalankan secara lokal dan akun Google Cloud Anda akan memiliki akses ke file dan resource yang sama.
Untuk menampilkan daftar akun Google Cloud yang dipilih sebagai 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 Anda menulis file ke resource berbasis cloud seperti Cloud Storage, pipeline tersebut akan menggunakan kredensial akun Google Cloud Anda dan project Google Cloud yang Anda konfigurasikan sebagai default Google Cloud CLI. Untuk mendapatkan petunjuk tentang cara melakukan autentikasi dengan kredensial akun Google Cloud, lihat panduan memulai untuk bahasa yang Anda gunakan: Panduan memulai Java, Panduan memulai Python, atau Panduan memulai 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, berarti Anda sudah memiliki izin yang terdapat 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 level resource serendah mungkin. Misalnya, daripada memberikan peran
roles/bigquery.dataEditor
pada project atau folder, berikan peran tersebut di tabel BigQuery. - Buat bucket yang dimiliki project Anda untuk digunakan sebagai bucket staging untuk Dataflow. Izin bucket default memungkinkan Dataflow menggunakan bucket untuk mengatur 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 setelah resource Dataflow Job
digunakan pertama kali.
Sebagai bagian dari menjalankan pipeline Dataflow, layanan Dataflow memanipulasi resource untuk Anda. Misalnya, tindakan ini membuat VM tambahan. Saat Anda menjalankan pipeline di layanan Dataflow, layanan akan menggunakan akun layanan ini.
Akun ini diberi peran Agen Layanan Dataflow pada project. Project ini memiliki izin yang diperlukan untuk menjalankan tugas Dataflow dalam project, termasuk memulai pekerja Compute Engine. Akun ini digunakan secara eksklusif oleh layanan Dataflow dan khusus untuk project Anda.
Anda dapat meninjau izin akun layanan Dataflow di Google Cloud Console atau Google Cloud CLI.
Konsol
Buka halaman Peran.
Jika ada, pilih project Anda.
Dalam daftar, klik judul Agen Layanan Cloud Dataflow. Sebuah halaman akan terbuka dan mencantumkan izin yang ditetapkan ke akun layanan Dataflow.
gcloud CLI
Lihat izin akun layanan Dataflow:
gcloud iam roles describe roles/dataflow.serviceAgent
Karena layanan Google Cloud berharap memiliki akses baca dan tulis ke project dan resource-nya, sebaiknya Anda tidak mengubah izin default yang otomatis dibuat untuk project Anda. Jika akun layanan Dataflow kehilangan izin ke sebuah 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 akan 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 dapat membuat atau memeriksa tugas, akun layanan pekerja harus
memiliki peran
roles/dataflow.admin
.
Selain itu, saat pipeline Apache Beam mengakses resource Google Cloud, Anda harus memberikan peran yang diperlukan ke akun layanan pekerja project Dataflow. Akun layanan pekerja 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 referensi meliputi:
Akun layanan pekerja default
Secara default, pekerja menggunakan akun layanan default Compute Engine dari 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 Library API di Google Cloud Console.
Akun layanan default Compute Engine memiliki akses luas ke resource project, sehingga Anda dapat memulai Dataflow. Namun, untuk beban kerja produksi, sebaiknya Anda membuat akun layanan baru hanya dengan peran dan izin yang Anda butuhkan.
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 dapat membuat atau memeriksa tugas, akun layanan pekerja 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 Google Cloud seperti yang diwajibkan oleh tugas Anda, seperti BigQuery, Pub/Sub, atau Cloud Storage.
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 memiliki akses baca dan tulis ke staging dan lokasi sementara 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
Berikan peran berikut ke 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
). Kedua akun ini adalah akun layanan yang dikelola Google. Akun ini berada dalam project yang sama dengan akun layanan yang dikelola pengguna, meskipun tugas Dataflow berjalan dalam project yang berbeda.- Peran Service Account Token Creator
(
iam.serviceAccountTokenCreator
) - Peran Service Account User
(
iam.serviceAccountUser
)
Untuk mengetahui petunjuk yang menunjukkan cara memberikan peran ke akun layanan, lihat bagian Memberikan satu peran di halaman Mengelola akses ke akun layanan.
- Peran Service Account Token Creator
(
Saat Anda menjalankan tugas pipeline, tentukan akun layanan Anda.
Java
Gunakan opsi
--serviceAccount
dan tentukan akun layanan saat Anda menjalankan tugas pipeline dari command line:--serviceAccount=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
Gunakan opsi
--service-account-email
dan tentukan akun layanan saat Anda menjalankan tugas pipeline sebagai template Fleksibel:--service-account-email=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
Python
Gunakan opsi
--service_account_email
dan tentukan akun layanan saat Anda menjalankan tugas pipeline:--service_account_email=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
Go
Gunakan opsi
--service_account_email
dan tentukan akun layanan saat Anda menjalankan tugas pipeline:--service_account_email=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
Anda bisa mendapatkan daftar akun layanan yang terkait dengan project dari halaman Izin di Konsol Google Cloud.
Akun layanan yang dikelola pengguna dapat berada di project yang sama dengan tugas Anda, atau dalam project yang berbeda. Jika akun layanan dan tugas berada di project yang berbeda, Anda harus mengonfigurasi akun layanan sebelum menjalankan tugas tersebut.
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 principal, lalu klik Add another role.Di menu drop-down, pilih peran Dataflow Worker.
Jika akun layanan pekerja Anda memerlukan peran Dataflow Admin, ulangi untuk Dataflow Admin.
Ulangi untuk setiap peran yang diperlukan oleh resource yang digunakan dalam tugas Anda, lalu klik Save.
Untuk mengetahui informasi selengkapnya tentang memberikan peran, lihat Memberikan peran IAM dengan 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 Dataflow Admin, 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 resource Google Cloud
Pipeline Apache Beam Anda dapat mengakses resource Google Cloud, baik dalam project Google Cloud yang sama maupun dalam project lain. 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 dapat mengakses resource ini, Anda harus menggunakan mekanisme kontrol akses masing-masing resource untuk memberikan akses secara eksplisit ke akun layanan pekerja project Dataflow Anda.
Jika Anda menggunakan fitur Assured Workloads dengan Dataflow, seperti Region Uni Eropa dan Dukungan dengan Sovereignty Controls, semua konektor Cloud Storage, BigQuery, Pub/Sub, I/O, 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, Anda mungkin perlu melakukan tindakan tambahan. 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 Artifact Registry Writer (role/artifactregistry.writer
) ke akun layanan pekerja yang menjalankan tugas Dataflow.
Semua konten repositori dienkripsi menggunakan kunci enkripsi yang dikelola Google atau yang dikelola pelanggan. Artifact Registry menggunakan kunci enkripsi yang dikelola Google secara default dan tidak diperlukan 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 kontennya. Anda dapat menggunakan izin IAM untuk Cloud Storage guna memberikan akses yang diperlukan.
Untuk memberi akun layanan pekerja izin yang diperlukan untuk membaca dan menulis ke bucket, gunakan perintah gcloud storage buckets add-iam-policy-binding
. Perintah ini menambahkan akun layanan project Dataflow Anda ke kebijakan level 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 di project Google Cloud, gunakan perintah gcloud storage buckets list
:
gcloud storage buckets list --project= PROJECT_ID
Ganti PROJECT_ID dengan ID project.
Kecuali jika dibatasi oleh kebijakan organisasi yang membatasi berbagi resource, Anda dapat mengakses bucket yang berada di project yang berbeda dengan pipeline Dataflow Anda. Untuk informasi selengkapnya tentang pembatasan domain, lihat Membatasi identitas menurut domain.
Jika Anda belum memiliki bucket, buat bucket baru. Selanjutnya, beri akun layanan pekerja Anda izin yang diperlukan untuk membaca 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 Daftar Kontrol Akses (ACL). Dalam sebagian besar kasus, 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 kontrol lebih besar atas izin, buat peran khusus.
Jika Anda menggunakan ACL untuk mengontrol akses, pastikan izin akun layanan pekerja Anda konsisten dengan setelan IAM Anda. Karena ketidaksesuaian 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 seragam. Untuk informasi selengkapnya, lihat Panduan error umum.
Mengakses set data BigQuery
Anda dapat menggunakan BigQueryIO
API untuk mengakses set data BigQuery, baik di project yang sama tempat Anda menggunakan Dataflow maupun di project yang berbeda. Agar sumber dan sink BigQuery beroperasi dengan benar, dua akun berikut harus memiliki akses ke set data BigQuery yang membaca atau menulis 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 cara memberikan 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 menyertakan izin bigquery.datasets.get
, tetapi peran roles/bigquery.jobUser
merupakan pengecualian.
Mengakses topik dan langganan Pub/Sub
Untuk mengakses topik atau langganan Pub/Sub, gunakan fitur Identity and Access Management dari Pub/Sub guna menyiapkan izin untuk akun layanan pekerja.
Izin dari peran Pub/Sub berikut relevan:
roles/pubsub.subscriber
diperlukan untuk menggunakan data.roles/pubsub.editor
diperlukan untuk membuat langganan Pub/Sub.roles/pubsub.viewer
direkomendasikan agar Dataflow dapat mengkueri 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 ack default
10 detik, performa akan meningkat. Dataflow berulang kali memperpanjang batas waktu ack untuk suatu pesan saat sedang diproses oleh pipeline. Tanpa izin
pubsub.viewer
, Dataflow tidak dapat mengkueri batas waktu ack, sehingga harus mengasumsikan batas waktu default. Konfigurasi ini menyebabkan Dataflow mengeluarkan lebih banyak permintaan modifyAckDeadline daripada yang diperlukan. - Jika Kontrol Layanan VPC diaktifkan pada project yang memiliki langganan atau topik, aturan ingress berbasis alamat IP tidak akan mengizinkan Dataflow melakukan kueri konfigurasi. Dalam hal ini, aturan masuk berdasarkan akun layanan pekerja diperlukan.
Untuk mengetahui informasi selengkapnya dan beberapa contoh kode yang menunjukkan cara menggunakan fitur Identity and Access Management di Pub/Sub, lihat Contoh kasus penggunaan: komunikasi lintas project.
Mengakses Firestore
Untuk mengakses database Firestore (dalam mode Native atau mode Datastore), tambahkan akun layanan pekerja 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 Library API di Google Cloud Console.
Akses gambar untuk project dengan kebijakan gambar tepercaya
Jika Anda telah menyiapkan kebijakan image tepercaya untuk project dan image boot Anda terletak di project lain, pastikan kebijakan image tepercaya dikonfigurasi agar memiliki akses ke image.
Misalnya, jika Anda menjalankan tugas Dataflow dengan 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 standar membaca data dari satu atau beberapa sumber, menerapkan transformasi data, dan menulis hasilnya ke satu atau beberapa sink. Semua sumber dan sink adalah layanan penyimpanan yang tidak dikelola secara 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, juga metadata yang dihasilkan sistem seperti ID tugas.
Layanan Dataflow menggunakan beberapa mekanisme keamanan untuk menjaga data Anda tetap aman dan bersifat pribadi. 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 layanan Dataflow terjadi di region yang ditentukan dalam kode pipeline. Jika suatu wilayah tidak ditentukan, wilayah default us-central1
akan digunakan. Jika Anda menentukan opsi tersebut dalam kode pipeline, tugas pipeline dapat membaca dan menulis dari sumber dan sink di region lain secara opsional. Namun, pemrosesan data sebenarnya hanya terjadi di region yang ditetapkan untuk menjalankan VM Dataflow.
Logika pipeline dievaluasi pada setiap instance VM pekerja. Anda dapat menentukan zona tempat instance ini dan jaringan pribadi yang berkomunikasi dengan instance tersebut. Komputasi tambahan untuk platform bergantung pada metadata seperti lokasi Cloud Storage atau ukuran file.
Dataflow adalah layanan regional. Untuk informasi selengkapnya tentang lokalitas dan region data, lihat Region Dataflow.
Data dalam pengiriman pipeline
Izin IAM untuk project Google Cloud Anda mengontrol akses ke layanan Dataflow. Setiap akun utama yang diberi hak editor atau pemilik project Anda dapat mengirimkan pipeline ke layanan. Untuk mengirimkan pipeline, Anda harus melakukan autentikasi menggunakan Google Cloud CLI. Setelah diautentikasi, pipeline Anda akan dikirim menggunakan protokol HTTPS. Untuk mengetahui petunjuk cara melakukan autentikasi dengan kredensial akun Google Cloud, lihat quickstart untuk bahasa yang Anda gunakan.
Data dalam evaluasi pipeline
Sebagai bagian dari evaluasi pipeline, data sementara mungkin dibuat dan disimpan secara lokal di instance VM pekerja atau di Cloud Storage. Data sementara dienkripsi dalam penyimpanan dan tidak dipertahankan setelah evaluasi pipeline selesai. Data tersebut juga dapat disimpan di layanan Shuffle atau layanan Streaming Engine (jika Anda memilih untuk menggunakan layanan tersebut) di region yang sama seperti yang ditetapkan dalam pipeline Dataflow.
Java
Secara default, VM Compute Engine dihapus saat tugas Dataflow selesai, terlepas dari apakah tugas tersebut berhasil atau gagal. Akibatnya, Persistent Disk terkait, dan data perantara apa pun yang mungkin tersimpan di dalamnya, akan dihapus. Data perantara yang disimpan di Cloud Storage dapat ditemukan di sublokasi dari 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 Tulis diselesaikan.
Python
Secara default, VM Compute Engine dihapus saat tugas Dataflow selesai, terlepas dari apakah tugas tersebut berhasil atau gagal. Akibatnya, Persistent Disk terkait, dan data perantara apa pun yang mungkin tersimpan di dalamnya, akan dihapus. Data perantara yang disimpan di Cloud Storage dapat ditemukan di sublokasi dari 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 Tulis diselesaikan.
Go
Secara default, VM Compute Engine dihapus saat tugas Dataflow selesai, terlepas dari apakah tugas tersebut berhasil atau gagal. Akibatnya, Persistent Disk terkait, dan data perantara apa pun yang mungkin tersimpan di dalamnya, akan dihapus. Data perantara yang disimpan di Cloud Storage dapat ditemukan di sublokasi dari 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 Tulis diselesaikan.
Data dalam telemetri dan log pipeline
Informasi yang tersimpan di Cloud Logging terutama 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 dalam penyimpanan, dan akses ke data ini dikontrol oleh izin baca project Google Cloud Anda.
Data di layanan Dataflow
Jika Anda menggunakan Dataflow Shuffle atau Dataflow Streaming untuk pipeline Anda, jangan tentukan opsi pipeline zona. Sebagai gantinya, tentukan region dan setel nilai ke salah satu wilayah tempat Shuffle atau Streaming tersedia. Dataflow secara otomatis memilih zona di region yang Anda tentukan. Data pengguna akhir dalam pengiriman tetap berada dalam VM pekerja dan di zona yang sama. Tugas Dataflow ini masih dapat membaca dan menulis ke sumber dan sink yang berada di luar zona VM. Data dalam pengiriman juga dapat dikirim ke layanan Dataflow Shuffle atau Dataflow Streaming, tetapi data tersebut selalu tetap berada di region yang ditentukan dalam kode pipeline.
Praktik yang direkomendasikan
Sebaiknya gunakan mekanisme keamanan yang tersedia di resource cloud dasar dari pipeline Anda. Mekanisme ini mencakup kemampuan keamanan data dari sumber dan sink data, seperti BigQuery dan Cloud Storage. Sebaiknya Anda tidak mencampurkan tingkat kepercayaan yang berbeda dalam satu proyek.