בדף הזה מוסבר איך לאבטח מכונה של Google Kubernetes Engine (GKE) באמצעות שרת proxy לאימות זהויות (IAP).
סקירה כללית
רכישות מתוך האפליקציה משולבות דרך 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
If you haven't configured your project's OAuth consent screen, you'll be prompted to do so. To configure your OAuth consent screen, see Setting up your OAuth consent screen.
If you are running GKE clusters version 1.24 or later, you can configure
IAP and GKE by using the Kubernetes Gateway API. To do so, complete
the following steps and then follow the instructions in
Configure IAP.
Do not configure BackendConfig.
Setting up IAP access
-
Go to the
Identity-Aware Proxy page.
Go to the Identity-Aware Proxy page - Select the project you want to secure with IAP.
-
Select the checkbox next to the resource you want to grant access to.
If you don't see a resource, ensure that the resource is created and that the BackendConfig Compute Engine ingress controller is synced.
To verify that the backend service is available, run the following gcloud command:
gcloud compute backend-services list - On the right side panel, click Add principal.
-
In the Add principals dialog that appears, enter the email addresses of groups or
individuals who should have the IAP-secured Web App User role for the project.
The following kinds of principals can have this role:
- Google Account: user@gmail.com
- Google Group: admins@googlegroups.com
- Service account: server@example.gserviceaccount.com
- Google Workspace domain: example.com
Make sure to add a Google Account that you have access to.
- Select Cloud IAP > IAP-secured Web App User from the Roles drop-down list.
- Click Save.
Configuring BackendConfig
You can configure a BackendConfig for IAP by adding an iap block.
Adding an iap block to the BackendConfig
To configure the BackendConfig for IAP, you need to specify the
enabled value. Ensure
that you have the compute.backendServices.update permission and add the
iap block to BackendConfig.
For GKE versions 1.16.8-gke.3 and higher, use the cloud.google.com/v1 API version.
If you are using an earlier GKE version, use cloud.google.com/v1beta1.
apiVersion: cloud.google.com/v1
kind: BackendConfig
metadata:
name: CONFIG_DEFAULT
namespace: my-namespace
spec:
iap:
enabled: trueAssociate a service port with a BackendConfig
You also need to associate Service ports with your BackendConfig to trigger turning on IAP. One way to make this association is to make all ports for the service default to your BackendConfig, which you can do by adding the following annotation to your Service resource:
metadata:
annotations:
beta.cloud.google.com/backend-config: '{"default": "CONFIG_DEFAULT"}'Verify the BackendConfig
To test the configuration, run kubectl get event. If you see the message
"no BackendConfig for service port exists", then you successfully
associated a service port with your BackendConfig, but the BackendConfig
resource wasn't found. This error can occur if you haven't created the BackendConfig resource,
created it in the wrong namespace, or misspelled the reference in the Service annotation.
Turning IAP off
To turn IAP off, you must set enabled to
false in the BackendConfig. If you delete the IAP
block from BackendConfig, the settings will persist. For example, if IAP is
enabled and you delete the block then IAP will still be turned on.
המאמרים הבאים
- איך מגדירים Cloud CDN ב-GKE
- איך מגדירים את Cloud Armor ל-GKE
- מידע נוסף על משאב BackendConfig
- איך מאמתים באמצעות JWT של חשבון שירות