בדף הזה מוסבר איך לאבטח מכונה של Google Kubernetes Engine (GKE) באמצעות שרת proxy לאימות זהויות (IAP).
סקירה כללית
IAP משולב דרך Ingress ב-GKE. השילוב הזה מאפשר לכם לשלוט בגישה של העובדים ברמת המשאב, במקום להשתמש ב-VPN.
באשכול GKE, התנועה הנכנסת מטופלת על ידי איזון עומסים ב-HTTP(S), רכיב של Cloud Load Balancing. בדרך כלל, מאזן העומסים מסוג HTTP(S) מוגדר על ידי בקר ה-Ingress של Kubernetes. בקר ה-Ingress מקבל מידע על ההגדרות מאובייקט Ingress של Kubernetes שמשויך לאובייקט Service אחד או יותר. כל אובייקט Service מכיל מידע על ניתוב שמשמש להפניית בקשה נכנסת ל-Pod וליציאה מסוימים.החל מגרסה 1.10.5-gke.3 של Kubernetes, אפשר להוסיף הגדרות למאזן העומסים על ידי שיוך של שירות לאובייקט BackendConfig. BackendConfig הוא הגדרה של משאב בהתאמה אישית שמוגדרת במאגר kubernetes/ingress-gce.
בקר ה-Ingress של Kubernetes קורא את פרטי ההגדרות מ-BackendConfig ומגדיר את מאזן העומסים בהתאם. BackendConfig מכיל פרטי הגדרה ספציפיים ל-Cloud Load Balancing, ומאפשר להגדיר הגדרה נפרדת לכל שירות לקצה העורפי של איזון עומסי HTTP(S).לפני שמתחילים
כדי להפעיל את IAP ל-GKE, צריך:
- פרויקט במסוף Google Cloud שהחיוב מופעל בו.
- קבוצה של מכונות GKE אחת או יותר, שמופעלות על ידי מאזן עומסים מסוג HTTPS. מאזן העומסים אמור להיווצר באופן אוטומטי כשיוצרים אובייקט Ingress באשכול GKE.
- מידע ולמידה על יצירת Ingress ל-HTTPS
- שם דומיין שרשום בכתובת של מאזן העומסים.
- קוד האפליקציה כדי לוודא שלכל הבקשות יש זהות.
- מידע ולמידה על קבלת זהות המשתמש.
הפעלת IAP
אם עדיין לא הגדרתם את מסך ההסכמה ל-OAuth בפרויקט, תתבקשו לעשות זאת. כדי להגדיר את מסך ההסכמה ל-OAuth, קראו את המאמר הגדרת מסך ההסכמה ל-OAuth.
אם אתם מריצים את GKE בגרסה 1.24 ואילך, אתם יכולים להגדיר את IAP ו-GKE באמצעות Kubernetes Gateway API. כדי לעשות זאת, מבצעים את השלבים הבאים ואז פועלים לפי ההוראות במאמר הגדרת IAP.
לא להגדיר את BackendConfig.
הגדרת גישה ל-IAP
-
נכנסים לדף Identity-Aware Proxy.
כניסה לדף Identity-Aware Proxy - בוחרים את הפרויקט שרוצים לאבטח באמצעות IAP.
-
מסמנים את התיבה לצד המשאב שרוצים לתת גישה אליו.
אם המשאב לא מופיע, צריך לוודא שהוא נוצר ושה-BackendConfig ובקר ה-Ingress של Compute Engine מסונכרנים.
כדי לוודא ששירות הקצה העורפי זמין, מריצים את הפקודה הבאה של gcloud:
gcloud compute backend-services list - בחלונית שבצד שמאל, לוחצים על Add principal.
-
בתיבת הדו-שיח Add principals שמופיעה, מזינים את כתובות האימייל של הקבוצות או המשתמשים שצריכים לקבל את התפקיד משתמש באפליקציית אינטרנט שמאובטחת באמצעות IAP בפרויקט.
אפשר להקצות את התפקיד הזה לחשבונות המשתמשים הבאים:
- חשבון Google: user@gmail.com
- קבוצת Google: admins@googlegroups.com
- חשבון שירות: server@example.gserviceaccount.com
- דומיין ב-Google Workspace: example.com
חשוב להוסיף חשבון Google שיש לכם גישה אליו.
- ברשימה הנפתחת Roles, בוחרים באפשרות Cloud IAP > IAP-secured Web App User.
- לוחצים על Save.
הגדרת BackendConfig
כדי להגדיר BackendConfig ל-IAP, מוסיפים בלוק iap.
הוספת בלוק iap ל-BackendConfig
כדי להגדיר את BackendConfig ל-IAP, צריך לציין את הערך של enabled. מוודאים שיש לכם את ההרשאה compute.backendServices.update ומוסיפים את הבלוק iap ל-BackendConfig.
בגרסאות GKE 1.16.8-gke.3 ואילך, צריך להשתמש בגרסת ה-API cloud.google.com/v1.
אם אתם משתמשים בגרסה קודמת של GKE, השתמשו ב-cloud.google.com/v1beta1.
apiVersion: cloud.google.com/v1
kind: BackendConfig
metadata:
name: CONFIG_DEFAULT
namespace: my-namespace
spec:
iap:
enabled: trueשיוך יציאת שירות ל-BackendConfig
כדי להפעיל את IAP, צריך גם לשייך את יציאות השירות ל-BackendConfig. אחת מהדרכים ליצור את השיוך הזה היא להגדיר את כל היציאות של השירות כברירת מחדל ל-BackendConfig. כדי לעשות את זה, מוסיפים את ההערה הבאה למשאב השירות:
metadata:
annotations:
cloud.google.com/backend-config: '{"default": "CONFIG_DEFAULT"}'אימות ה-BackendConfig
כדי לבדוק את ההגדרה, מריצים את kubectl get event. אם מופיעה ההודעה "no BackendConfig for service port exists", סימן ששייכתם בהצלחה יציאת שירות ל-BackendConfig, אבל המשאב של BackendConfig לא נמצא. השגיאה הזו יכולה להתרחש אם לא יצרתם את המשאב BackendConfig, אם יצרתם אותו במרחב השמות הלא נכון או אם אייתתם לא נכון את ההפניה בהערה של השירות.
השבתת IAP
כדי להשבית את IAP, צריך להגדיר את enabled לערך false ב-BackendConfig. אם תמחקו את הבלוק של IAP מ-BackendConfig, ההגדרות יישמרו. לדוגמה, אם IAP מופעל ומוחקים את הבלוק, IAP עדיין יופעל.
המאמרים הבאים
- איך מגדירים את Cloud CDN ב-GKE
- איך מגדירים את Cloud Armor ל-GKE
- מידע נוסף על המשאב BackendConfig
- איך מבצעים אימות באמצעות JWT של חשבון שירות