Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

315
Views
No se pueden ejecutar los comandos "kubectl" después de usar la suplantación de identidad para obtener las credenciales del clúster de GKE

Mi objetivo

Quiero usar la suplantación de identidad de GCP para obtener mis credenciales de clúster de GKE. Y luego quiero ejecutar los comandos de kubectl .

Contexto inicial

  1. Tengo un proyecto de GCP llamado rakib-example-project
  2. Tengo 2 ServiceAccounts en el proyecto llamado:
    • propietario@rakib-example-project.iam.gserviceaccount.com
      • tiene los roles/owner , por lo que puede hacer cualquier cosa y todo dentro del proyecto GCP
    • executor@rakib-example-project.iam.gserviceaccount.com
      • solo tiene roles/iam.serviceAccountTokenCreator para todo el proyecto, por lo que puede hacerse pasar por el propietario ServiceAccount en el proyecto de GCP
  3. Tengo 1 clúster de GKE en el proyecto llamado my-gke-cluster

El problema

✅ Me he autenticado como ejecutor ServiceAccount:

 $ gcloud auth activate-service-account --key-file=my_executor_sa_key.json Activated service account credentials for: [executor@rakib-example-project.iam.gserviceaccount.com]

✅ Obtuve las credenciales del clúster de GKE haciéndome pasar por el propietario :

 $ gcloud container clusters get-credentials my-gke-cluster \ --zone asia-southeast1-a \ --project rakib-example-project \ --impersonate-service-account=owner@rakib-example-project.iam.gserviceaccount.com WARNING: This command is using service account impersonation. All API calls will be executed as [owner@rakib-example-project.iam.gserviceaccount.com]. WARNING: This command is using service account impersonation. All API calls will be executed as [owner@rakib-example-project.iam.gserviceaccount.com]. Fetching cluster endpoint and auth data. kubeconfig entry generated for my-gke-cluster.

❌ No puedo enumerar los nodos del clúster debido a que falta el permiso container.nodes.list :

 $ kubectl get nodes Error from server (Forbidden): nodes is forbidden: User "executor@rakib-example-project.iam.gserviceaccount.com" cannot list resource "nodes" in API group "" at the cluster scope: requires one of ["container.nodes.list"] permission(s).

Pero ya me he hecho pasar por la cuenta de servicio del propietario . ¿Por qué todavía le faltan permisos? 😧😧😧

Mis limitaciones

Funciona bien si concedo a mi ejecutor ServiceAccount el roles/container.admin . Sin embargo, no puedo otorgar tales funciones a mi ServiceAccount de albacea debido a los requisitos de cumplimiento. Solo puedo suplantar al propietario de la cuenta de servicio y ENTONCES hacer lo que quiera a través de ella, no directamente.

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Si echa un vistazo a su archivo kubeconfig en esta ubicación ~/.kube/config , puede ver la lista de autorización y los secretos, como

 - name: gke_gdglyon-cloudrun_us-central1-c_knative user: auth-provider: config: access-token: ya29.<secret>-9XQmaTQodj4kS39w cmd-args: config config-helper --format=json cmd-path: /usr/lib/google-cloud-sdk/bin/gcloud expiry: "2020-08-25T17:48:39Z" expiry-key: '{.credential.token_expiry}' token-key: '{.credential.access_token}' name: gcp

Verá referencias externas ( expiry-key y token-key ) y un cmd-path . La ruta del comando es interesante porque cuando se necesita generar un nuevo token, se llamará.

Sin embargo, ve alguna mención de la suplantación. Debe agregarlo en la ruta del comando, para que se use de manera predeterminada. Para esto, agréguelo en su configuración de esta manera:

 gcloud config set auth/impersonate_service_account owner@rakib-example-project.iam.gserviceaccount.com

Ahora, cada uso de gcloud CLI usará la cuenta de servicio de suplantación, y es lo que desea generar un access_token válido para llegar a su clúster de GKE.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!