Workload Identity

איחוד זהויות של עומסי עבודה ל-GKE (WIF) הוא מנגנון שמאפשר לעומסי העבודה באשכול שלכם לגשת למשאבי ענן חיצוניים באמצעות חשבונות שירות של Kubernetes. הדרך המומלצת לאפליקציות שפועלות באשכולות GKE מצורפים לגשת לשירותי Google Cloud היא באמצעות WIF. כשרושמים את האשכול, GKE attached clusters API יוצר את כל התשתית שנדרשת ל-WIF, עם תמיכה באשכולות שמשתמשים במונפי OIDC ציבוריים או פרטיים.

כל רכיבי GKE שמתחברים בחזרה אל Google Cloud, כמו Connect וסוכני טלמטריה, משתמשים באיחוד זהויות של עומסי עבודה ל-GKE.

חשבונות שירות של Kubernetes ואיחוד זהויות של עומסי עבודה ל-GKE

כשקבוצת Pod פועלת, היא משתמשת בחשבון שירות של Kubernetes כדי לאשר את הגישה שלה למשאבים שמארחים בתוך האשכול שלה. באמצעות WIF, הפוד יכול להשתמש באותו חשבון שירות של Kubernetes ‏ (KSA) כדי לקבל אסימון לטווח קצר לגישה למשאבים שמתארחים מחוץ לאשכול.

כדי להשתמש ב-WIF, צריך ליצור יחסי אמון בין ספק הזהויות של OIDC בתוך האשכול לבין ספק המשאבים החיצוני, כמו Google Cloud IAM. כשרושמים אשכול מצורף, תהליך הרישום יוצר באופן אוטומטי את יחסי האמון האלה על ידי הוספת שירות ה-OIDC של האשכול למאגר ברירת המחדל של זהויות עומסי העבודה שקשור ל Google Cloud פרויקט.

מאגר הזהויות של עומסי העבודה הוא מאגר ספקי הזהויות המהימנים של Google Cloud הפרויקט שלכם, והשם שלו הוא PROJECT_ID.svc.id.goog, כאשר PROJECT_ID הוא מזהה הפרויקטGoogle Cloud שמשויך לאשכול המצורף.

אתם יכולים להשתמש במדיניות IAM רגילה כדי לשלוט בגישה של חשבונות שירות של Kubernetes לשירותי Google Cloud . חשבונות משתמשים של שירות Kubernetes הם הייצוג של KSA במאגר הזהויות של עומסי העבודה. הפורמט שלהן הוא:

principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/WORKLOAD_IDENTITY_POOL_NAME/subject/ns/KSA_NAMESPACE/sa/KSA_NAME

כדי להעניק תפקיד לחשבון שירות ב-Kubernetes, משתמשים בפקודה הבאה:

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/subject/ns/KSA_NAMESPACE/sa/KSA_NAME" \
  --role=IAM_ROLE

מחליפים את מה שכתוב בשדות הבאים:

  • ‫PROJECT_ID: מזהה הפרויקט ב- Google Cloud
  • ‫PROJECT_NUMBER: מספר הפרויקט ב- Google Cloud
  • ‫KSA_NAMESPACE: מרחב השמות של האשכול שחשבון השירות הזה נמצא בו
  • ‫KSA_NAME: השם של חשבון השירות של Kubernetes שרוצים להעניק לו הרשאות
  • ‫IAM_ROLE: תפקיד ה-IAM שרוצים לתת ל-KSA הזה