Ruoli e identità IAM di Dataproc su GKE

Identità del piano dati

Dataproc su GKE utilizza l'identità dei carichi di lavoro GKE per consentire ai pod all'interno del cluster Dataproc su GKE di agire con l'autorità dell'account di servizio VM Dataproc (identità piano dati) predefinito. Workload Identity richiede le seguenti autorizzazioni per aggiornare i criteri IAM sulla configurazione di Google Workspace utilizzata dal cluster virtuale di Dataproc su GKE:

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

L'identità del carico di lavoro GKE collega i seguenti account di servizio GKE (KSA) all'account di servizio VM Dataproc:

  1. agent Arabia Saudita (interagis con il piano di controllo Dataproc):
    serviceAccount:${PROJECT}.svc.id.goog[${DPGKE_NAMESPACE}/agent]
  2. spark-driver Arabia Saudita (esegue driver Spark):
    serviceAccount:${PROJECT}.svc.id.goog[${DPGKE_NAMESPACE}/spark-driver]
  3. spark-executor Arabia Saudita (con esecutori Spark):
    serviceAccount:${PROJECT}.svc.id.goog[${DPGKE_NAMESPACE}/spark-executor]

Assegna ruoli

Concedi le autorizzazioni all'account di servizio VM Dataproc per consentire a spark-driver e spark-executor di accedere a risorse di progetto, origini dati, sink di dati e qualsiasi altro servizio richiesto dal carico di lavoro.

Esempio:

Il seguente comando assegna ruoli all'account di servizio VM Dataproc predefinito per consentire ai carichi di lavoro Spark in esecuzione su Dataproc su VM dei cluster GKE di accedere ai bucket Cloud Storage e ai set di dati BigQuery nel progetto.

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

Configurazione IAM personalizzata

Dataproc su GKE utilizza l'identità dei carichi di lavoro GKE per collegare l'account di servizio VM Dataproc (identità piano dati) predefinito ai tre account di servizio GKE (KSA).

Per creare e utilizzare un altro account di servizio Google (GSA) per il collegamento agli Arabia Saudita:

  1. Crea l'SDK (consulta la sezione Creazione e gestione degli account di servizio).

    Esempio della gcloud CLI:

    gcloud iam service-accounts create "dataproc-${USER}" \
        --description "Used by Dataproc on GKE workloads."
    
    Note:

    • L'esempio imposta il nome di Google Search come "dataproc-${USER}", ma puoi utilizzare un nome diverso.
  2. Imposta le variabili ambientali:

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

    • DPGKE_GSA: gli esempi impostano e utilizzano DPGKE_GSA come nome della variabile che contiene l'indirizzo email della tua Google Search Ads 360. Puoi impostare e utilizzare un nome di variabile diverso.
    • DPGKE_NAMESPACE: lo spazio dei nomi GKE predefinito è il nome del tuo cluster Dataproc su GKE.
  3. Quando crei il cluster Dataproc su GKE, aggiungi le seguenti proprietà in modo che Dataproc utilizzi la tua Google Search Console anziché la versione predefinita di Google Search Ads 360:

    --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. Esegui i comandi seguenti per assegnare le autorizzazioni Workload Identity necessarie agli account di servizio:

    1. Assegna il ruolo dataproc.worker a Google Search Ads 360 per consentirle di agire come agente:
      gcloud projects add-iam-policy-binding \
          --role=roles/dataproc.worker \
          --member="serviceAccount:${DPGKE_GSA}" \
          "${PROJECT}"
      
    2. Assegna all'unità organizzativa agent il ruolo iam.workloadIdentityUser per consentirgli di agire come Google Search Ads 360:

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

    3. Concedi all'insegnante spark-driver il ruolo iam.workloadIdentityUser per consentirgli di agire come Google Search Ads 360:

      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. Concedi all'insegnante spark-executor il ruolo iam.workloadIdentityUser per consentirgli di agire come Google Search Ads 360:

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