הפעלת IAP ל-GKE

בדף הזה מוסבר איך לאבטח מכונה של 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

  1. Go to the Identity-Aware Proxy page.
    Go to the Identity-Aware Proxy page
  2. Select the project you want to secure with IAP.
  3. 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
  4. On the right side panel, click Add principal.
  5. 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.

  6. Select Cloud IAP > IAP-secured Web App User from the Roles drop-down list.
  7. 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: true

Associate 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.

המאמרים הבאים