Dokumen ini menjelaskan cara melihat dan mengelola peran akun layanan Identity and Access Management. Workload batch atau sesi interaktif Serverless untuk Apache Spark dijalankan sebagai akun layanan default Compute Engine, kecuali jika Anda menentukan akun layanan kustom saat Anda mengirimkan workload batch, membuat sesi, atau membuat template runtime sesi.
Persyaratan keamanan: Anda harus memiliki
izin ActAs
akun layanan
untuk menjalankan workload atau sesi Serverless for Apache Spark. Peran
Service Account User
berisi izin ini. Untuk mengetahui informasi mendetail tentang izin akun layanan, lihat Peran untuk autentikasi akun layanan.
Peran Pekerja Dataproc yang diperlukan
Akun layanan workload atau sesi Serverless untuk Apache Spark harus memiliki peran IAM
Dataproc Worker. Akun layanan default Compute Engine,
project_number-compute@developer.gserviceaccount.com
,
yang digunakan Serverless for Apache Spark memiliki peran ini secara default. Jika Anda menentukan akun layanan yang berbeda saat membuat workload batch, sesi, atau template sesi, Anda harus memberikan peran Dataproc Worker ke akun layanan tersebut.
Peran tambahan mungkin diperlukan untuk operasi lain, seperti membaca dan
menulis data dari dan ke Cloud Storage atau BigQuery.
Di beberapa project, akun layanan batch workload atau sesi mungkin telah otomatis diberi peran Editor project, yang mencakup izin peran Dataproc Worker serta izin tambahan yang tidak diperlukan oleh Serverless untuk Apache Spark. Untuk mengikuti prinsip praktik terbaik keamanan hak istimewa terendah, ganti peran Editor akun layanan dengan peran Pekerja Dataproc.
Memecahkan masalah kegagalan berbasis izin
Izin yang salah atau tidak memadai untuk akun layanan yang digunakan oleh beban kerja atau sesi batch Serverless untuk Apache Spark dapat menyebabkan kegagalan pembuatan batch atau sesi yang melaporkan pesan error "Driver compute node failed to initialize for batch in 600 seconds". Error ini menunjukkan bahwa driver Spark tidak dapat dimulai dalam periode waktu tunggu yang dialokasikan, sering kali karena kurangnya akses yang diperlukan ke resource Google Cloud .
Untuk memecahkan masalah ini, pastikan akun layanan Anda memiliki peran atau izin minimum berikut:
- Peran Dataproc Worker (
roles/dataproc.worker
): Peran ini memberikan izin yang diperlukan agar Serverless untuk Apache Spark dapat mengelola dan menjalankan workload serta sesi Spark. - Storage Object Viewer (
roles/storage.objectViewer
), Storage Object Creator (roles/storage.objectCreator
), atau Storage Object Admin (roles/storage.admin
): Jika aplikasi Spark Anda membaca dari atau menulis ke bucket Cloud Storage, akun layanan memerlukan izin yang sesuai untuk mengakses bucket. Misalnya, jika data input Anda berada di bucket Cloud Storage,Storage Object Viewer
diperlukan. Jika aplikasi Anda menulis output ke bucket Cloud Storage,Storage Object Creator
atauStorage Object Admin
diperlukan. - BigQuery Data Editor (
roles/bigquery.dataEditor
) atau BigQuery Data Viewer (roles/bigquery.dataViewer
): Jika aplikasi Spark berinteraksi dengan BigQuery, pastikan akun layanan memiliki peran BigQuery yang sesuai. - Izin Cloud Logging: Akun layanan memerlukan izin untuk menulis log ke Cloud Logging agar proses debug efektif. Biasanya, peran
Logging Writer
(roles/logging.logWriter
) sudah cukup.
Kegagalan umum terkait izin atau akses
Peran
dataproc.worker
tidak ada: Tanpa peran inti ini, infrastruktur Serverless untuk Apache Spark tidak dapat menyediakan dan mengelola node driver dengan benar.Izin Cloud Storage yang tidak memadai: Jika aplikasi Spark Anda mencoba membaca data input dari atau menulis output ke bucket Cloud Storage tanpa izin akun layanan yang diperlukan, driver dapat gagal diinisialisasi karena tidak memiliki akses ke resource penting.
Masalah jaringan atau firewall: Kontrol Layanan VPC atau aturan firewall dapat secara tidak sengaja memblokir akses akun layanan ke API atau resource. Google Cloud
Untuk memverifikasi dan memperbarui izin akun layanan:
- Buka halaman IAM & Admin > IAM di konsol Google Cloud .
- Temukan akun layanan yang digunakan untuk batch workload atau sesi Serverless for Apache Spark Anda.
- Pastikan peran yang diperlukan telah ditetapkan. Jika tidak ada, tambahkan.
Untuk mengetahui daftar peran dan izin Serverless untuk Apache Spark, lihat Izin dan peran IAM Serverless untuk Apache Spark.
Melihat dan mengelola peran akun layanan IAM
Untuk melihat dan mengelola peran yang diberikan ke akun layanan batch workload atau sesi Serverless for Apache Spark, lakukan hal berikut:
Di konsol Google Cloud , buka halaman IAM.
Klik Sertakan pemberian peran yang disediakan Google.
Lihat peran yang tercantum untuk akun layanan batch workload atau sesi. Gambar berikut menunjukkan peran Dataproc Worker yang diperlukan yang tercantum untuk akun layanan default Compute Engine,
project_number-compute@developer.gserviceaccount.com
, yang digunakan Serverless untuk Apache Spark secara default sebagai akun layanan beban kerja atau sesi.Peran Dataproc Worker yang ditetapkan ke akun layanan default Compute Engine di bagian IAM pada konsol Google Cloud . Anda dapat mengklik ikon pensil yang ditampilkan di baris akun layanan untuk memberikan atau menghapus peran akun layanan.
Akun layanan lintas project
Anda dapat mengirimkan workload batch Serverless untuk Apache Spark yang menggunakan akun layanan dari project yang berbeda dengan project workload batch (project tempat batch dikirimkan). Di bagian ini, project tempat
akun layanan berada disebut service account project
, dan
project tempat batch dikirimkan disebut batch project
.
Mengapa menggunakan akun layanan lintas project untuk menjalankan beban kerja batch? Salah satu kemungkinan alasannya adalah jika akun layanan di project lain telah diberi peran IAM yang memberikan akses terperinci ke resource dalam project tersebut.
Langkah penyiapan
Di project akun layanan:
Mengaktifkan akun layanan untuk dilampirkan di seluruh project.
Enable the Dataproc API.
Berikan peran Service Account User kepada akun email Anda (pengguna yang membuat cluster) di project akun layanan atau, untuk kontrol yang lebih terperinci, akun layanan di project akun layanan.
Untuk mengetahui informasi selengkapnya, lihat Mengelola akses ke project, folder, dan organisasi untuk memberikan peran di tingkat project dan Mengelola akses ke akun layanan untuk memberikan peran di tingkat akun layanan.
Contoh gcloud CLI:
Contoh perintah berikut memberikan peran Service Account User kepada pengguna di tingkat project:
gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \ --member=USER_EMAIL \ --role="roles/iam.serviceAccountUser"
Catatan:
USER_EMAIL
: Berikan alamat email akun pengguna Anda, dalam format:user:user-name@example.com
.
Contoh perintah berikut memberikan peran Service Account User kepada pengguna di tingkat akun layanan:
gcloud iam service-accounts add-iam-policy-binding VM_SERVICE_ACCOUNT_EMAIL \ --member=USER_EMAIL \ --role="roles/iam.serviceAccountUser"
Catatan:
USER_EMAIL
: Berikan alamat email akun pengguna Anda, dalam format:user:user-name@example.com
.
Beri akun layanan peran Dataproc Worker di project batch.
Contoh gcloud CLI:
gcloud projects add-iam-policy-binding BATCH_PROJECT_ID \ --member=serviceAccount:SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com \ --role="roles/dataproc.worker"
Dalam project batch:
Berikan peran Service Account User dan Service Account Token Creator kepada akun layanan agen layanan Dataproc di project akun layanan atau, untuk kontrol yang lebih terperinci, di akun layanan dalam project akun layanan. Dengan melakukannya, Anda mengizinkan akun layanan agen layanan Dataproc di project batch untuk membuat token bagi akun layanan di project akun layanan.
Untuk mengetahui informasi selengkapnya, lihat Mengelola akses ke project, folder, dan organisasi untuk memberikan peran di tingkat project dan Mengelola akses ke akun layanan untuk memberikan peran di tingkat akun layanan.
Contoh gcloud CLI:
Perintah berikut memberikan peran Service Account User dan Service Account Token Creator kepada akun layanan agen layanan Dataproc di project batch pada tingkat project:
gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \ --member=serviceAccount:service-BATCH_PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com \ --role="roles/iam.serviceAccountUser"
gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \ --member=serviceAccount:service-BATCH_PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com \ --role="roles/iam.serviceAccountTokenCreator"
Contoh perintah berikut memberikan peran Service Account User dan Service Account Token Creator kepada akun layanan Dataproc Service Agent di project batch pada tingkat akun layanan:
gcloud iam service-accounts add-iam-policy-binding VM_SERVICE_ACCOUNT_EMAIL \ --member=serviceAccount:service-BATCH_PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com \ --role="roles/iam.serviceAccountUser"
gcloud iam service-accounts add-iam-policy-binding VM_SERVICE_ACCOUNT_EMAIL \ --member=serviceAccount:service-BATCH_PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com \ --role="roles/iam.serviceAccountTokenCreator"
Berikan peran akun layanan Agen Layanan Compute Engine di project batch Service Account Token Creator pada project akun layanan atau, untuk kontrol yang lebih terperinci, akun layanan di project akun layanan. Dengan melakukannya, Anda memberikan kemampuan kepada akun layanan Compute Agent Service Agent di project batch untuk membuat token bagi akun layanan di project akun layanan.
Untuk mengetahui informasi selengkapnya, lihat Mengelola akses ke project, folder, dan organisasi untuk memberikan peran di tingkat project dan Mengelola akses ke akun layanan untuk memberikan peran di tingkat akun layanan.
Contoh gcloud CLI:
Contoh perintah berikut memberikan peran Service Account Token Creator di tingkat project kepada akun layanan Agen Layanan Compute Engine di project batch:
gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \ --member=serviceAccount:service-BATCH_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com \ --role="roles/iam.serviceAccountTokenCreator"
Contoh perintah berikut memberikan peran Service Account Token Creator kepada akun layanan Compute Engine Service Agent di project cluster pada tingkat akun layanan:
gcloud iam service-accounts add-iam-policy-binding VM_SERVICE_ACCOUNT_EMAIL \ --member=serviceAccount:service-BATCH_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com \ --role="roles/iam.serviceAccountTokenCreator"
Kirimkan workload batch
Setelah menyelesaikan langkah-langkah penyiapan, Anda dapat mengirimkan workload batch. Pastikan untuk menentukan akun layanan di project akun layanan sebagai akun layanan yang akan digunakan untuk beban kerja batch.