Identité du plan de données
Dataproc sur GKE utilise l'identité de charge de travail GKE pour permettre aux pods du cluster Dataproc sur GKE d'agir avec l'autorité du compte de service de VM Dataproc (identité de plan de données) par défaut. Workload Identity doit disposer des autorisations suivantes pour mettre à jour les stratégies IAM sur le système Google Search Appliance utilisé par votre cluster virtuel Dataproc sur GKE:
compute.projects.get
iam.serviceAccounts.getIamPolicy
iam.serviceAccounts.setIamPolicy
L'identité de la charge de travail GKE associe les comptes de service GKE (KSA) suivants au compte de service de la VM Dataproc :
agent
KSA (interagit avec le plan de contrôle Dataproc):
serviceAccount:${PROJECT}.svc.id.goog[${DPGKE_NAMESPACE}/agent]
spark-driver
KSA (exécute des pilotes Spark):serviceAccount:${PROJECT}.svc.id.goog[${DPGKE_NAMESPACE}/spark-driver]
spark-executor
KSA (exécute les exécuteurs Spark):serviceAccount:${PROJECT}.svc.id.goog[${DPGKE_NAMESPACE}/spark-executor]
Attribuer des rôles
Accordez des autorisations au compte de service de la VM Dataproc pour permettre à spark-driver
et spark-executor
d'accéder aux ressources du projet, aux sources de données, aux récepteurs de données et à tout autre service requis par votre charge de travail.
Exemple :
La commande suivante attribue des rôles au compte de service de VM Dataproc par défaut pour permettre aux charges de travail Spark exécutées sur Dataproc sur des VM de cluster GKE d'accéder aux buckets Cloud Storage et aux ensembles de données BigQuery du projet.
gcloud projects add-iam-policy-binding \ --role=roles/storage.objectAdmin \ --role=roles/bigquery.dataEditor \ --member="project-number-compute@developer.gserviceaccount.com" \ "${PROJECT}"
Configuration IAM personnalisée
Dataproc sur GKE utilise l'identité de charge de travail GKE pour associer le compte de service de VM Dataproc (identité de plan de données) par défaut aux trois comptes de service GKE (KSA).
Pour créer et utiliser un autre compte de service Google (GSA) à associer aux KSA:
Créez le compte de service Google (consultez la page Créer et gérer des comptes de service).
Exemple avec gcloud CLI:
gcloud iam service-accounts create "dataproc-${USER}" \ --description "Used by Dataproc on GKE workloads."
Remarques :- Le nom du système Google Search Appliance est défini sur "dataproc-${USER}" dans l'exemple, mais vous pouvez en utiliser un autre.
Définissez des variables d'environnement:
PROJECT=project-id \ DPGKE_GSA="dataproc-${USER}@${PROJECT}.iam.gserviceaccount.com" DPGKE_NAMESPACE=GKE namespace
Remarques :DPGKE_GSA
: les exemples définissent et utilisentDPGKE_GSA
comme nom de la variable contenant l'adresse e-mail de votre système Google Search Appliance. Vous pouvez définir et utiliser un nom de variable différent.DPGKE_NAMESPACE
: l'espace de noms GKE par défaut est le nom de votre cluster Dataproc sur GKE.
Lorsque vous créez le cluster Dataproc sur GKE, ajoutez les propriétés suivantes pour que Dataproc utilise votre compte GSA au lieu du compte GSA par défaut:
--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}" \
Exécutez les commandes suivantes pour attribuer les autorisations Workload Identity nécessaires aux comptes de service:
- Attribuez le rôle
dataproc.worker
à votre compte GSA pour lui permettre d'agir en tant qu'agent:gcloud projects add-iam-policy-binding \ --role=roles/dataproc.worker \ --member="serviceAccount:${DPGKE_GSA}" \ "${PROJECT}"
Attribuez le rôle
iam.workloadIdentityUser
au KSAagent
pour lui permettre de jouer le rôle de votre compte GSA:gcloud iam service-accounts add-iam-policy-binding \ --role=roles/iam.workloadIdentityUser \ --member="serviceAccount:${PROJECT}.svc.id.goog[${DPGKE_NAMESPACE}/agent]" \ "${DPGKE_GSA}"
Attribuez au KSA
spark-driver
le rôleiam.workloadIdentityUser
pour qu'il puisse agir en tant que compte Google Search Appliance:gcloud iam service-accounts add-iam-policy-binding \ --role=roles/iam.workloadIdentityUser \ --member="serviceAccount:${PROJECT}.svc.id.goog[${DPGKE_NAMESPACE}/spark-driver]" \ "${DPGKE_GSA}"
Attribuez au KSA
spark-executor
le rôleiam.workloadIdentityUser
pour qu'il puisse agir en tant que compte Google Search Appliance:gcloud iam service-accounts add-iam-policy-binding \ --role=roles/iam.workloadIdentityUser \ --member="serviceAccount:${PROJECT}.svc.id.goog[${DPGKE_NAMESPACE}/spark-executor]" \ "${DPGKE_GSA}"
- Attribuez le rôle