TSSW2024 / Sprint-5-Frontend

MIT License
1 stars 0 forks source link

(Spike - Infraestructure) workload identity #13

Open zkodah opened 2 weeks ago

zkodah commented 2 weeks ago

Descripción

se pide investigar que es un workload identity en GCP

Tareas

Fecha de Vencimiento

Se ha definido la fecha de entrega para el día 16-06-2024

JoseMalcaR commented 2 weeks ago

Workload Identity

Workload Identity es una funcionalidad de Google Cloud que permite a los servicios de Kubernetes autenticar a las API de Google Cloud sin necesidad de almacenar y gestionar las claves de las cuentas de servicio manualmente. Workload Identity proporciona una forma mas segura y manejable de asignar identidades a las carhas de trabajo de Kubernetes, aprovechando la infraestrucura de IAM(Identity and Access Management) de Google Cloud.

Habilitar Workload Identity para cargas de trabajo para GKe en un cluster existente, ejecuta el siguient comando:

 gcloud container clusters update CLUSTER_NAME \
    --location=LOCATION \
    --workload-pool=PROJECT_ID.svc.id.goog

Crea un espacio de nombres de Kubernetes:

kubectl create namespace NAMESPACE

Crea una ServiceAccount de Kubernetes:

kubectl create serviceaccount KSA_NAME \
    --namespace=NAMESPACE

Crea una cuenta de servicio de IAM. También puedes usar cualquier cuenta de servicio de IAM existente en cualquier proyecto de tu organización.

gcloud iam service-accounts create IAM_SA_NAME \
    --project=IAM_SA_PROJECT_ID

Otorgar los permisos necesarios a la cuenta de servicio:

gcloud projects add-iam-policy-binding IAM_SA_PROJECT_ID \
    --member "serviceAccount:IAM_SA_NAME@IAM_SA_PROJECT_ID.iam.gserviceaccount.com" \
    --role "ROLE_NAME"

Reemplazar ROLE_NAME por el nombre del rol, como roles/storage.objectViewer

Crea una política de permisos de IAM que otorgue a la cuenta de servicio de Kubernetes acceso para actuar en nombre de la cuenta de servicio de IAM:

gcloud iam service-accounts add-iam-policy-binding IAM_SA_NAME@IAM_SA_PROJECT_ID.iam.gserviceaccount.com \
    --role roles/iam.workloadIdentityUser \
    --member "serviceAccount:PROJECT_ID.svc.id.goog[NAMESPACE/KSA_NAME]"

Anota la cuenta de servicio de Kubernetes para que GKE vea el vínculo entre las cuentas de servicio:

kubectl annotate serviceaccount KSA_NAME \
    --namespace NAMESPACE \
    iam.gke.io/gcp-service-account=IAM_SA_NAME@IAM_SA_PROJECT_ID.iam.gserviceaccount.com

Documentacion en GCP: https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity?hl=es-419