Akun layanan Dataproc

Halaman ini menjelaskan akun layanan dan cakupan akses VM, serta cara penggunaannya dengan Dataproc.

Apa yang dimaksud dengan akun layanan?

Akun layanan adalah akun khusus yang dapat digunakan oleh layanan dan aplikasi yang berjalan di instance virtual machine (VM) Compute Engine untuk berinteraksi dengan Google Cloud API lainnya. Aplikasi dapat menggunakan kredensial akun layanan untuk mengotorisasi dirinya sendiri ke kumpulan API dan melakukan tindakan pada VM dalam izin yang diberikan ke akun layanan.

Akun layanan Dataproc

Akun layanan berikut diberi izin yang diperlukan untuk melakukan tindakan Dataproc dalam project tempat cluster Anda berada.

  • Akun layanan Agen Layanan Dataproc: Dataproc membuat akun layanan ini dengan peran Agen Layanan Dataproc di project Google Cloud pengguna Dataproc. Akun layanan ini tidak dapat diganti dengan akun layanan VM kustom saat Anda membuat cluster. Akun agen layanan ini digunakan untuk menjalankan operasi bidang kontrol Dataproc, seperti pembuatan, pembaruan, dan penghapusan VM cluster (lihat Agen Layanan Dataproc (identitas Bidang Kontrol)).

    Secara default, Dataproc menggunakan service-[project-number]@dataproc-accounts.iam.gserviceaccount.com sebagai akun agen layanan. Jika akun layanan tersebut tidak memiliki izin, Dataproc akan menggunakan akun agen layanan Google API, [project-number]@cloudservices.gserviceaccount.com, untuk operasi bidang kontrol.

Jaringan VPC Bersama: Jika cluster menggunakan jaringan VPC Bersama, Admin VPC Bersama harus memberikan peran Pengguna Jaringan untuk project host VPC Bersama. Untuk informasi selengkapnya, lihat:

Cakupan akses VM Dataproc

Cakupan VM Access dan peran IAM bekerja sama untuk membatasi akses VM ke Google Cloud API. Misalnya, jika VM cluster hanya diberi cakupan https://www.googleapis.com/auth/storage-full, aplikasi yang berjalan di VM cluster dapat memanggil Cloud Storage API, tetapi tidak dapat membuat permintaan ke BigQuery, meskipun dijalankan sebagai akun layanan VM yang telah diberi peran BigQuery dengan izin yang luas.

Praktik terbaik adalah memberikan cakupan cloud-platform (https://www.googleapis.com/auth/cloud-platform) yang luas ke VM, lalu membatasi akses VM dengan memberikan peran IAM tertentu ke akun layanan VM.

Cakupan VM Dataproc default. Jika cakupan tidak ditentukan saat cluster dibuat (lihat gcloud dataproc cluster create --scopes), VM Dataproc memiliki kumpulan cakupan default berikut:

https://www.googleapis.com/auth/cloud-platform (clusters created with image version 2.1+).
https://www.googleapis.com/auth/bigquery
https://www.googleapis.com/auth/bigtable.admin.table
https://www.googleapis.com/auth/bigtable.data
https://www.googleapis.com/auth/cloud.useraccounts.readonly
https://www.googleapis.com/auth/devstorage.full_control
https://www.googleapis.com/auth/devstorage.read_write
https://www.googleapis.com/auth/logging.write

Jika Anda menentukan cakupan saat membuat cluster, VM cluster akan memiliki cakupan yang Anda tentukan dan serangkaian minimum cakupan yang diperlukan berikut (meskipun Anda tidak menentukannya):

https://www.googleapis.com/auth/cloud-platform (clusters created with image version 2.1+).
https://www.googleapis.com/auth/cloud.useraccounts.readonly
https://www.googleapis.com/auth/devstorage.read_write
https://www.googleapis.com/auth/logging.write

Membuat cluster dengan akun layanan VM kustom

Saat membuat cluster, Anda dapat menentukan akun layanan VM kustom yang akan digunakan cluster Anda untuk operasi bidang data Dataproc, bukan akun layanan VM default (Anda tidak dapat mengubah akun layanan VM setelah cluster dibuat). Dengan menggunakan akun layanan VM dengan peran IAM yang ditetapkan, Anda dapat memberikan akses terperinci ke resource project kepada cluster Anda.

Langkah awal

  1. Buat akun layanan VM kustom dalam project tempat cluster akan dibuat.

  2. Berikan peran Pekerja Dataproc pada project tersebut dan peran tambahan apa pun yang dibutuhkan oleh tugas Anda, seperti peran Reader and Writer BigQuery (lihat Izin dataproc dan peran IAM).

    Contoh gcloud CLI:

    • Contoh perintah berikut memberikan peran Dataproc Worker di level project kepada akun layanan VM kustom dalam project cluster:
    gcloud projects add-iam-policy-binding CLUSTER_PROJECT_ID \
        --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
        --role="roles/dataproc.worker"
     
    • Pertimbangkan peran khusus: Daripada memberikan peran Worker Dataproc yang telah ditentukan kepada akun layanan, Anda dapat memberi akun layanan peran khusus yang berisi izin peran Pekerja, tetapi membatasi izin storage.objects.*.
      • Peran khusus setidaknya harus memberikan izin storage.objects.create, storage.objects.get, dan storage.objects.update pada akun layanan VM pada bucket sementara dan staging Dataproc serta pada bucket tambahan yang dibutuhkan oleh tugas yang akan berjalan di cluster.

Membuat cluster

  • Buat cluster di project Anda.

Perintah gcloud

Gunakan perintah gcloud dataproc cluster create untuk membuat cluster dengan akun layanan VM kustom.

gcloud dataproc clusters create CLUSTER_NAME \
    --region=REGION \
    --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
    --scopes=SCOPE

Ganti kode berikut:

  • CLUSTER_NAME: Nama cluster, yang harus unik dalam project. Nama harus dimulai dengan huruf kecil, dan dapat berisi hingga 51 huruf kecil, angka, dan tanda hubung. Tidak boleh diakhiri dengan tanda hubung. Nama cluster yang dihapus dapat digunakan kembali.
  • REGION: Region tempat cluster akan berada.
  • SERVICE_ACCOUNT_NAME: Nama akun layanan.
  • PROJECT_ID: Project ID Google Cloud untuk project yang berisi akun layanan VM Anda. Ini akan menjadi ID project tempat cluster Anda akan dibuat atau ID project lain jika Anda membuat cluster dengan akun layanan VM kustom di cluster lain.
  • SCOPE: Cakupan akses untuk instance VM cluster (misalnya, https://www.googleapis.com/auth/cloud-platform).

REST API

Saat menyelesaikan GceClusterConfig sebagai bagian dari permintaan API clusters.create, tetapkan kolom berikut:

Konsol

Penyetelan akun layanan VM Dataproc di Google Cloud Console tidak didukung. Anda dapat menetapkan cloud-platform cakupan akses pada VM cluster saat membuat cluster dengan mengklik "Enables the cloud-platform scope for this cluster" di bagian Project access pada panel Kelola keamanan di halaman Create a cluster Dataproc di Google Cloud Console.

Membuat cluster dengan akun layanan VM kustom dari project lain

Saat membuat cluster, Anda dapat menentukan akun layanan VM kustom yang akan digunakan cluster Anda untuk operasi bidang data Dataproc, bukan menggunakan akun layanan VM default (Anda tidak dapat menentukan akun layanan VM kustom setelah cluster dibuat). Dengan menggunakan akun layanan VM kustom dengan peran IAM yang ditetapkan, Anda dapat memberikan akses terperinci ke resource project kepada cluster Anda.

Langkah awal

  1. Di project akun layanan (project tempat akun layanan VM kustom berada):

    1. Aktifkan akun layanan untuk dilampirkan di seluruh project.

    2. Enable the Dataproc API.

      Enable the API

  2. Berikan peran Service Account User ke akun email Anda (pengguna yang membuat cluster) pada project akun layanan atau, untuk kontrol yang lebih terperinci, pada akun layanan VM kustom dalam project akun layanan tersebut.

    Untuk informasi selengkapnya: Lihat bagian Mengelola akses ke project, folder, dan organisasi untuk memberikan peran di level project dan Mengelola akses ke akun layanan memberikan peran di tingkat akun layanan.

    Contoh gcloud CLI:

    • Contoh perintah berikut memberikan peran Service Account User kepada pengguna di level 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.

  3. Berikan peran Pekerja Dataproc kepada akun layanan VM kustom tersebut di project cluster.

    Contoh gcloud CLI:

    gcloud projects add-iam-policy-binding CLUSTER_PROJECT_ID \
        --member=serviceAccount:SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com \
        --role="roles/dataproc.worker"
     
  4. Berikan peran Service Account User dan Service Account Token Creator kepada akun layanan Agen Layanan Dataproc di project cluster pada project akun layanan atau, untuk kontrol yang lebih terperinci, akun layanan VM kustom di project akun layanan. Dengan melakukannya, Anda mengizinkan akun layanan agen layanan Dataproc di project cluster untuk membuat token untuk akun layanan VM Dataproc kustom dalam project akun layanan.

    Untuk informasi selengkapnya: Lihat bagian Mengelola akses ke project, folder, dan organisasi untuk memberikan peran di level project dan Mengelola akses ke akun layanan memberikan peran di tingkat akun layanan.

    Contoh gcloud CLI:

    • Perintah contoh berikut memberikan peran Pembuat Token Akun Layanan dan Pengguna Akun Layanan di level project kepada akun layanan Dataproc Service Agent di project cluster:
    gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \
        --member=serviceAccount:service-CLUSTER_PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com \
        --role="roles/iam.serviceAccountUser"
     
    gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \
        --member=serviceAccount:service-CLUSTER_PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com \
        --role="roles/iam.serviceAccountTokenCreator"
    
    • Contoh perintah berikut memberikan peran Pengguna Akun Layanan dan Pembuat Token Akun Layanan kepada akun layanan Dataproc dalam project cluster di tingkat akun layanan VM:
    gcloud iam service-accounts add-iam-policy-binding VM_SERVICE_ACCOUNT_EMAIL \
        --member=serviceAccount:service-CLUSTER_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-CLUSTER_PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com \
        --role="roles/iam.serviceAccountTokenCreator"
    
  5. Berikan peran Service Account Token Creator kepada akun layanan Compute Engine Service Agent pada project cluster di project akun layanan atau, untuk kontrol yang lebih terperinci, pada akun layanan VM kustom di project akun layanan. Dengan melakukan hal ini, Anda memberi akun layanan Agen Layanan Compute Agent di project cluster kemampuan untuk membuat token untuk akun layanan VM Dataproc kustom di project akun layanan.

    Untuk informasi selengkapnya: Lihat bagian Mengelola akses ke project, folder, dan organisasi untuk memberikan peran di level project dan Mengelola akses ke akun layanan memberikan peran di tingkat akun layanan.

    Contoh gcloud CLI:

    • Perintah contoh berikut memberikan peran Service Account Token Creator di level project kepada akun layanan Agen Layanan Compute Engine dalam project cluster:
    gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \
        --member=serviceAccount:service-CLUSTER_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com \
        --role="roles/iam.serviceAccountTokenCreator"
     
    • Perintah contoh berikut memberikan peran Service Account Token Creator di level akun layanan VM kepada akun layanan Agen Layanan Compute Engine dalam project cluster:
    gcloud iam service-accounts add-iam-policy-binding VM_SERVICE_ACCOUNT_EMAIL \
        --member=serviceAccount:service-CLUSTER_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com \
        --role="roles/iam.serviceAccountTokenCreator"
     

Membuat cluster

Langkah selanjutnya