Peran dan identitas Identity and Access Management Google Kubernetes Engine

Identitas bidang data

Managed Service untuk Apache Spark di GKE menggunakan identitas beban kerja GKE untuk memungkinkan pod dalam Managed Service untuk Apache Spark di cluster GKE bertindak dengan otoritas akun layanan VM Managed Service untuk Apache Spark default (identitas bidang data). Identitas beban kerja memerlukan izin berikut untuk memperbarui kebijakan IAM di GSA yang digunakan oleh cluster virtual Managed Service untuk Apache Spark di GKE:

  • compute.projects.get
  • iam.serviceAccounts.getIamPolicy
  • iam.serviceAccounts.setIamPolicy

Identitas beban kerja GKE menautkan Akun Layanan GKE (KSA) berikut ke Akun Layanan VM Managed Service untuk Apache Spark:

  1. agent KSA (berinteraksi dengan bidang kontrol Managed Service untuk Apache Spark):
    serviceAccount:${PROJECT}.svc.id.goog[${DPGKE_NAMESPACE}/agent]
  2. spark-driver KSA (menjalankan driver Spark):
    serviceAccount:${PROJECT}.svc.id.goog[${DPGKE_NAMESPACE}/spark-driver]
  3. spark-executor KSA (menjalankan executor Spark):
    serviceAccount:${PROJECT}.svc.id.goog[${DPGKE_NAMESPACE}/spark-executor]

Tetapkan peran

Berikan izin ke akun layanan VM Managed Service untuk Apache Spark agar spark-driver dan spark-executor dapat mengakses resource project, sumber data, sink data, dan layanan lain yang diperlukan oleh beban kerja Anda.

Contoh:

Perintah berikut menetapkan peran ke akun layanan VM Managed Service untuk Apache Spark default agar beban kerja Spark yang berjalan di VM cluster Managed Service untuk Apache Spark di GKE dapat mengakses bucket Cloud Storage dan set data BigQuery di project.

gcloud projects add-iam-policy-binding \
    --role=roles/storage.objectAdmin \
    --role=roles/bigquery.dataEditor \
    --member="project-number-compute@developer.gserviceaccount.com" \
    "${PROJECT}"

Konfigurasi IAM kustom

Managed Service untuk Apache Spark di GKE menggunakan identitas beban kerja GKE untuk menautkan akun layanan VM Managed Service untuk Apache Spark default (identitas bidang data) ke tiga akun layanan GKE (KSA).

Untuk membuat dan menggunakan akun layanan Google (GSA) yang berbeda untuk ditautkan ke KSA:

  1. Buat GSA (lihat Membuat dan mengelola akun layanan).

    Contoh gcloud CLI:

    gcloud iam service-accounts create "dataproc-${USER}" \
        --description "Used by Managed Service for Apache Spark on GKE workloads."
    
    Catatan:

    • Contoh ini menetapkan nama GSA sebagai "dataproc-${USER}", tetapi Anda dapat menggunakan nama yang berbeda.
  2. Tetapkan variabel lingkungan:

    PROJECT=project-id \
      DPGKE_GSA="dataproc-${USER}@${PROJECT}.iam.gserviceaccount.com"
      DPGKE_NAMESPACE=GKE namespace
    
    Catatan:

    • DPGKE_GSA: Contoh ini menetapkan dan menggunakan DPGKE_GSA sebagai nama variabel yang berisi alamat email GSA Anda. Anda dapat menetapkan dan menggunakan nama variabel yang berbeda.
    • DPGKE_NAMESPACE: Namespace GKE default adalah nama cluster Managed Service untuk Apache Spark di GKE.
  3. Saat Anda membuat Managed Service untuk Apache Spark di cluster GKE, tambahkan properti berikut untuk Managed Service untuk Apache Spark agar menggunakan GSA Anda, bukan GSA default:

    --properties "dataproc:dataproc.gke.agent.google-service-account=${DPGKE_GSA}" \
    --properties "dataproc:dataproc.gke.spark.driver.google-service-account=${DPGKE_GSA}" \
    --properties "dataproc:dataproc.gke.spark.executor.google-service-account=${DPGKE_GSA}" \
    

  4. Jalankan perintah berikut untuk menetapkan izin Workload Identity yang diperlukan ke akun layanan:

    1. Tetapkan peran dataproc.worker ke GSA Anda agar dapat bertindak sebagai agen:
      gcloud projects add-iam-policy-binding \
          --role=roles/dataproc.worker \
          --member="serviceAccount:${DPGKE_GSA}" \
          "${PROJECT}"
      
    2. Tetapkan peran iam.workloadIdentityUser ke KSA agent agar dapat bertindak sebagai GSA Anda:

      gcloud iam service-accounts add-iam-policy-binding \
          --role=roles/iam.workloadIdentityUser \
          --member="serviceAccount:${PROJECT}.svc.id.goog[${DPGKE_NAMESPACE}/agent]" \
          "${DPGKE_GSA}"
      

    3. Berikan peran iam.workloadIdentityUser ke KSA spark-driver agar dapat bertindak sebagai GSA Anda:

      gcloud iam service-accounts add-iam-policy-binding \
          --role=roles/iam.workloadIdentityUser \
          --member="serviceAccount:${PROJECT}.svc.id.goog[${DPGKE_NAMESPACE}/spark-driver]" \
          "${DPGKE_GSA}"
      

    4. Berikan peran iam.workloadIdentityUser ke KSA spark-executor agar dapat bertindak sebagai GSA Anda:

      gcloud iam service-accounts add-iam-policy-binding \
          --role=roles/iam.workloadIdentityUser \
          --member="serviceAccount:${PROJECT}.svc.id.goog[${DPGKE_NAMESPACE}/spark-executor]" \
          "${DPGKE_GSA}"