בדף הזה מוסבר איך לאבטח מכונה של Google Kubernetes Engine (GKE) באמצעות שרת proxy לאימות זהויות (IAP).
כדי לאבטח משאבים שלא נמצאים ב- Google Cloud, אפשר לעיין במאמר אבטחת אפליקציות ומשאבים מקומיים.
סקירה כללית
רכישות מתוך האפליקציה משולבות דרך Ingress ב-GKE. השילוב הזה מאפשר לכם לשלוט בגישה ברמת המשאב לעובדים במקום להשתמש ב-VPN.
באשכול GKE, תעבורה נכנסת מטופלת על ידי איזון עומסים ב-HTTP(S), רכיב של Cloud Load Balancing. בדרך כלל, מאזן העומסים של HTTP(S) מוגדר על ידי בקר Kubernetes Ingress. בקר Ingress מקבל מידע על התצורה מאובייקט Ingress של Kubernetes שמשויך לאובייקט Service אחד או יותר. כל אובייקט Service מכיל נתוני ניתוב שמשמשים להפניית בקשה נכנסת ל-Pod ולפורט מסוימים.
החל מגרסה 1.10.5-gke.3 של Kubernetes, אפשר להוסיף הגדרה למאזן העומסים על ידי שיוך של Service לאובייקט BackendConfig. BackendConfig הוא הגדרת משאב בהתאמה אישית (CRD) שמוגדרת במאגר kubernetes/ingress-gce.
בקר ה-Ingress של Kubernetes קורא את פרטי ההגדרה מ-BackendConfig ומגדיר את מאזן העומסים בהתאם. קובץ BackendConfig מכיל פרטי הגדרה שספציפיים ל-Cloud Load Balancing, ומאפשר לכם להגדיר הגדרה נפרדת לכל שירות עורפי של איזון עומסים מסוג HTTP(S).
לפני שמתחילים
כדי להפעיל את IAP ב-GKE, צריך:
- פרויקט במסוף עם חיוב מופעל. Google Cloud
- קבוצה של מופעי GKE אחד או יותר, שמוגשים על ידי מאזן עומסים ב-HTTPS. מאזן העומסים אמור להיווצר באופן אוטומטי כשיוצרים אובייקט Ingress באשכול GKE.
- שם דומיין שרשום לכתובת של מאזן העומסים.
- קוד האפליקציה לאימות שלכל הבקשות יש זהות.
מערכת IAP משתמשת בלקוח OAuth שמנוהל על ידי Google כדי לאמת את המשתמשים. רק משתמשים בארגון יכולים לגשת לאפליקציה עם רכישות מתוך האפליקציה. אם רוצים לאפשר גישה למשתמשים מחוץ לארגון, אפשר לעיין במאמר בנושא הפעלת IAP לאפליקציות חיצוניות.
הפעלת IAP
אם לא הגדרתם את מסך ההסכמה ל-OAuth של הפרויקט, תוצג לכם בקשה לעשות זאת. כדי להגדיר את מסך ההסכמה ל-OAuth, אפשר לעיין במאמר הגדרת מסך ההסכמה ל-OAuth.
אם אתם מריצים אשכולות GKE בגרסה 1.24 ואילך, אתם יכולים להגדיר IAP ו-GKE באמצעות Kubernetes Gateway API. כדי לעשות זאת, מבצעים את השלבים הבאים ואז פועלים לפי ההוראות במאמר בנושא הגדרת IAP.
לא מגדירים את BackendConfig.
הגדרת גישה ל-IAP
-
עוברים אל הדף של שרת proxy לאימות זהויות (IAP).
עוברים לדף של שרת proxy לאימות זהויות (IAP) - בוחרים את הפרויקט שרוצים לאבטח באמצעות IAP.
-
מסמנים את התיבה לצד המשאב שרוצים להעניק לו גישה.
אם לא רואים משאב, צריך לוודא שהמשאב נוצר ושהוא מסונכרן עם בקר הכניסה של BackendConfig Compute Engine.
כדי לוודא ששירות לקצה העורפי זמין, מריצים את פקודת gcloud הבאה:
gcloud compute backend-services list - בחלונית הצדדית בצד שמאל, לוחצים על הוספת ישות.
-
בתיבת הדו-שיח Add principals שמופיעה, מזינים את כתובות האימייל של קבוצות או של אנשים פרטיים שצריכים לקבל את התפקיד IAP-secured Web App User בפרויקט.
התפקיד הזה יכול להיות מוקצה לסוגים הבאים של חשבונות משתמשים:
- חשבון Google: user@gmail.com
- קבוצת Google: admins@googlegroups.com
- חשבון שירות: server@example.gserviceaccount.com
- דומיין ב-Google Workspace: example.com
חשוב להוסיף חשבון Google שיש לכם גישה אליו.
- בתפריט הנפתח תפקידים, בוחרים באפשרות Cloud IAP > IAP-secured Web App User (Cloud IAP > משתמש באפליקציית אינטרנט מאובטחת באמצעות IAP).
- לוחצים על 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. כדי לעשות את זה, מוסיפים את ההערה הבאה למשאב Service:
metadata:
annotations:
beta.cloud.google.com/backend-config: '{"default": "CONFIG_DEFAULT"}'אימות של BackendConfig
כדי לבדוק את ההגדרה, מריצים את הפקודה kubectl get event. אם מופיעה ההודעה
"no BackendConfig for service port exists", סימן ששייכתם בהצלחה יציאת שירות ל-BackendConfig, אבל לא נמצא משאב BackendConfig. השגיאה הזו יכולה לקרות אם לא יצרתם את המשאב BackendConfig, אם יצרתם אותו במרחב השמות הלא נכון או אם כתבתם לא נכון את ההפניה בהערה Service.
השבתת רכישות מתוך האפליקציה
כדי להשבית את IAP, צריך להגדיר את enabled ל-false ב-BackendConfig. אם מוחקים את הבלוק IAP
מ-BackendConfig, ההגדרות יישמרו. לדוגמה, אם הרכישות מתוך האפליקציה מופעלות ואתם מוחקים את החסימה, הרכישות מתוך האפליקציה עדיין יופעלו.
השלבים הבאים
- אפשר להגדיר כללים מורכבים יותר של הקשר על ידי החלת רמות גישה.
- מידע נוסף מופיע במאמר בנושא יומנים של בקרת גישה מבוססת-הקשר ביומני הביקורת של Cloud.
- מידע נוסף על IAP
- איך מגדירים Cloud CDN ב-GKE
- איך מגדירים את Cloud Armor ל-GKE
- מידע נוסף על משאב BackendConfig