Keamanan dan izin Dataflow

Anda dapat menjalankan pipeline Dataflow secara lokal atau di resource Google Cloud terkelola 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 di layanan Dataflow dan dalam keamanan data

Sebelum memulai

Baca tentang ID project Google Cloud di ringkasan Google Cloud. ID ini mencakup nama project, project ID, dan nomor project.

Mengupgrade dan menerapkan patch pada VM Dataflow

Dataflow menggunakan Container-Optimized OS. Proses keamanan Container-Optimized OS juga berlaku untuk Dataflow.

Pipeline batch dibatasi waktu dan tidak memerlukan pemeliharaan. Saat pipeline batch baru dimulai, image 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 dengan image Dataflow terbaru.

Image penampung Dataflow tersedia di konsol Google Cloud.

Keamanan dan izin untuk pipeline lokal

Saat Anda menjalankannya secara lokal, pipeline Apache Beam akan berjalan sebagai akun Google Cloud yang Anda konfigurasi dengan file yang dapat dieksekusi Google Cloud CLI. Jalankan operasi Apache Beam SDK secara lokal dan akun Google Cloud Anda memiliki akses ke file dan resource yang sama.

Untuk menampilkan daftar akun Google Cloud yang Anda pilih sebagai default, jalankan perintah gcloud config list.

Pipeline lokal dapat menghasilkan output 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 konfigurasikan sebagai default Google Cloud CLI. Untuk petunjuk tentang cara mengautentikasi dengan kredensial akun Google Cloud Anda, 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, 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 tingkat resource terendah. Misalnya, daripada 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 staging untuk 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.

Akun layanan ini dibuat dan dikelola oleh Google dan ditetapkan ke project Anda secara otomatis setelah penggunaan pertama resource Dataflow Job.

Sebagai bagian dari menjalankan pipeline Dataflow, Dataflow akan memanipulasi resource atas nama Anda. Misalnya, VM tambahan akan dibuat. Saat Anda menjalankan pipeline dengan Dataflow, akun layanan ini akan digunakan.

Akun ini diberi peran Agen Layanan Dataflow di project. Peran ini memiliki izin yang diperlukan untuk menjalankan tugas Dataflow dalam project, termasuk memulai pekerja 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 Konsol Google Cloud atau Google Cloud CLI.

Konsol

  1. Buka halaman Roles.

    Buka Peran

  2. Jika berlaku, pilih project Anda.

  3. Dalam daftar, klik judul Cloud Dataflow Service Agent. Halaman akan terbuka yang 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 diharapkan memiliki 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 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 lainnya 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 dapat menjalankan tugas, akun layanan pekerja 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 perlu 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 mencakup:

Akun layanan pekerja 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@

Akun layanan ini otomatis dibuat saat Anda mengaktifkan Compute Engine API untuk project dari Library API di konsol Google Cloud.

Meskipun Anda dapat menggunakan akun layanan default Compute Engine sebagai akun layanan pekerja Dataflow, sebaiknya Anda membuat akun layanan pekerja Dataflow khusus yang hanya memiliki peran dan izin yang Anda perlukan.

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 akan 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.

  1. Jika Anda tidak memiliki akun layanan yang dikelola pengguna, buat akun layanan.

  2. Tetapkan peran IAM yang diperlukan untuk akun layanan Anda.

    • Agar dapat menjalankan tugas, akun layanan pekerja 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 mengetahui daftar izin yang diperlukan, lihat Peran.
    • Akun layanan Anda mungkin memerlukan peran tambahan untuk menggunakan resource Google Cloud seperti yang diperlukan 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 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.
  3. Dalam project yang berisi akun layanan pekerja yang dikelola pengguna, Akun Layanan Dataflow (service-PROJECT_NUMBER@dataflow-service-producer-prod.) dan Agen Layanan Compute Engine (service-PROJECT_NUMBER@compute-system.) harus memiliki peran berikut. PROJECT_NUMBER adalah ID project tempat tugas Dataflow Anda berjalan. Kedua akun ini adalah agen layanan.

    Dalam project tempat tugas Dataflow Anda berjalan, akun memiliki peran ini secara default. Jika akun layanan pekerja yang dikelola pengguna dan tugas berada di project yang berbeda, berikan juga peran ini ke akun layanan yang dikelola Google yang digunakan oleh akun layanan pekerja yang dikelola pengguna. Untuk memberikan peran ini, ikuti langkah-langkah di bagian Berikan satu peran di halaman Mengelola akses ke akun layanan.

  4. 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.

  5. Saat 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.

    Gunakan opsi --service-account-email dan tentukan akun layanan saat Anda menjalankan tugas pipeline sebagai template Flex: --service-account-email=SERVICE_ACCOUNT_NAME@PROJECT_ID.

    Python

    Gunakan opsi --service_account_email dan tentukan akun layanan saat Anda menjalankan tugas pipeline: --service_account_email=SERVICE_ACCOUNT_NAME@PROJECT_ID.

    Go

    Gunakan opsi --service_account_email dan tentukan akun layanan saat Anda menjalankan tugas pipeline: --service_account_email=SERVICE_ACCOUNT_NAME@PROJECT_ID.

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 dalam project Anda, ikuti langkah-langkah berikut.

Konsol

  1. Di konsol Google Cloud, buka halaman IAM.

    Buka IAM

  2. Pilih project Anda.

  3. Pada baris yang berisi akun pengguna Anda, klik Edit akun utama, lalu klik Tambahkan peran lain.

  4. Di menu drop-down, pilih peran Service Account User.

  5. Pada baris yang berisi akun layanan pekerja, klik Edit akun utama, lalu klik Tambahkan peran lain.

  6. Di menu drop-down, pilih peran Dataflow Worker.

  7. Jika akun layanan pekerja Anda memerlukan peran Admin Dataflow, ulangi untuk Admin Dataflow.

  8. 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

  1. 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.
  2. 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 IAM roles/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@" --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 perintah gcloud projects describe.
    • Ganti SERVICE_ACCOUNT_ROLE dengan setiap peran individual.

Mengakses resource Google Cloud

Pipeline Apache Beam Anda dapat mengakses resource Google Cloud, baik dalam project Google Cloud yang sama atau dalam project lainnya. Referensi ini mencakup:

Untuk memastikan pipeline Apache Beam dapat mengakses resource ini, Anda harus menggunakan mekanisme kontrol akses masing-masing resource untuk secara eksplisit memberikan akses ke akun layanan pekerja project Dataflow Anda.

Jika Anda menggunakan fitur Assured Workloads dengan Dataflow, seperti Region Uni Eropa dan Dukungan dengan Kontrol Kedaulatan, semua Cloud Storage, BigQuery, Pub/Sub, konektor I/O, dan resource lainnya 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 menganggap bahwa akun layanan default Compute Engine digunakan, tetapi Anda juga dapat menggunakan akun layanan pekerja yang dikelola pengguna.

Mengakses repositori Artifact Registry

Saat menggunakan penampung 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 pekerja yang menjalankan tugas Dataflow.

Semua konten repositori dienkripsi menggunakan kunci milik dan dikelola Google atau kunci enkripsi yang dikelola pelanggan. Artifact Registry menggunakan kunci yang dimiliki dan dikelola Google secara default, dan tidak memerlukan konfigurasi untuk opsi ini.

Mengakses bucket Cloud Storage

Untuk memberikan akses project Dataflow 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 serta kontennya. Anda dapat menggunakan izin IAM untuk Cloud Storage untuk memberikan akses yang diperlukan.

Untuk memberi akun layanan pekerja 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@" --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 project Google 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 kontrol yang lebih besar atas izin, buat peran khusus.

  • Jika Anda menggunakan ACL untuk mengontrol akses, pastikan izin akun layanan pekerja Anda konsisten dengan setelan IAM. Karena inkonsistensi 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 error umum.

Mengakses set data BigQuery

Anda dapat menggunakan BigQueryIO API untuk mengakses set data BigQuery, baik di project yang sama dengan tempat Anda menggunakan Dataflow atau di project yang berbeda. Agar sumber dan sink BigQuery 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 secara eksplisit memberikan akses 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 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 diperlukan untuk menggunakan data.
  • roles/pubsub.editor diperlukan untuk membuat langganan Pub/Sub.
  • roles/pubsub.viewer direkomendasikan agar Dataflow dapat membuat kueri konfigurasi topic dan subscription. 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 sebesar 10 detik, performa akan meningkat. Dataflow berulang kali memperpanjang batas waktu ack untuk pesan saat sedang diproses oleh pipeline. Tanpa izin pubsub.viewer, Dataflow tidak dapat mengkueri batas waktu 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 membuat kueri konfigurasi. Dalam hal ini, aturan masuk berdasarkan akun layanan pekerja diperlukan.

Untuk 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@) 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 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. 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 berfungsi 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 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, 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. 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 Google Cloud Anda mengontrol akses ke layanan Dataflow. Setiap akun utama yang diberi hak editor atau pemilik pada project Anda dapat mengirimkan pipeline ke layanan. Untuk mengirimkan pipeline, Anda harus melakukan autentikasi menggunakan Google Cloud CLI. Setelah Anda melakukan autentikasi, pipeline akan dikirim menggunakan protokol HTTPS. Untuk mengetahui petunjuk tentang cara mengautentikasi dengan kredensial akun Google Cloud Anda, lihat panduan memulai 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 dalam penyimpanan dan tidak dipertahankan 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 akan 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 akan 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 akan 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 secara utama 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, jangan tentukan opsi pipeline zona. Sebagai gantinya, tentukan wilayah dan tetapkan nilai ke salah satu wilayah tempat Shuffle atau Streaming tersedia. Dataflow 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.

Sebaiknya gunakan mekanisme keamanan yang tersedia di resource cloud yang mendasari pipeline Anda. Mekanisme ini mencakup kemampuan keamanan data dari sumber dan sink data seperti BigQuery dan Cloud Storage. Sebaiknya jangan mencampurkan berbagai tingkat kepercayaan dalam satu project.