Cloud Dataflow pipelines dapat dijalankan beberapa cara:
- Locally, dijalankan pada local machine. Biasanya dilakukan untuk test dan debug driver program dengan menggunakan dataset yang kecil. Untuk keperluan ini, Anda perlu install Apache Beam SDK pada local machine.
- Cloud Dataflow managed service, kita lakukan setelah testing pada local machine berhasil. Pipeline yang disubmit akan menjadi Cloud Dataflow Job.
Ketika pipeline disubmit ke Cloud Dataflow, akan digunakan GCP service accounts untuk mengatur security dan permissions.
- Cloud Dataflow service menggunakan Dataflow service account.
- Worker instance menggunakan Controller service account.
Sebelum membahas lebih jauh, kita lihat dahulu Dataflow secara high level konsep. Ketika pipeline disubmit ke GCP Cloud Dataflow Service. Dataflow service akan membuat Dataflow Job. Job ini akan membuat dan memanage workers yang menjalankan tugas untuk menjalankan pipeline. Dalam menjalankan tugasnya, workers akan mengakses keberbagai resource misalnya, Cloud storage.
Cloud Dataflow Job dapat dimonitor menggunakan Cloud Dataflow Monitoring Interface atau melalui Command-line interface.

Service Account
Cloud Dataflow Service Account digunakan oleh Cloud dataflow service. Berikut beberapa point penting:
- Service account ini dibuat otomatis ketika Cloud dataflow project dibuat.
- Cloud dataflow service account akan memanage service, contohnya menambah atau mengurangi workers ketika memproses pipeline.
- Memiliki Read dan write access ke project resources. Disarankan untuk tidak mengubah hak akses dari Cloud Dataflow Service Account.
Cloud Dataflow Service Account memiliki format seperti berikut:
service<project-number>@dataflow-service-provider-prod.iam.gserviceaccount.com
Controller Service Account
Digunakan oleh workers. Secara default workers akan menggunakan compute engine service account dari project sebagai Controller service aacount. Compute engine service account otomatis dibuat ketika API Compute Engine diaktifkan.
Compute engines instances akan menjalankan Pipeline dan mengakses pipeline resources dan melakukan Metadata operations, contohnya menentukan ukuran file dalam cloud storage.
Anda dapat menggunakan user-managed controller service account.
Controller service account memiliki format seperti berikut:
<project-number>compute@developer.gserviceaccount.com
Access dan Security
- Untuk submit pipeline diperlukan permission.
- Evaluation pipeline, temporary data yang dibuat dalam masa evaluation di enkripsi dan tidak persistent. Komunikasi antara workers menggunakan private network dan menggunakan project permission dan firewall rule.
- Mengakses telemetry atau metrics di kontrol project permission dan terenkripsi.
Anda dapat menggunakan Cloud Dataflow IAM roles untuk mengatur akses terhadap cloud dataflow resources.