התאמה אישית של רכישות מתוך האפליקציה

במאמר הזה מוסבר איך להתאים אישית את ההגדרות של שרת proxy לאימות זהויות (IAP). ההגדרות האלה מאפשרות לכם לשלוט בהתנהגויות הבאות:

  • תאימות ל-GKE Enterprise ול-Istio ב-Google Kubernetes Engine.
  • הטיפול בבקשות קדם-הפעלה של CORS.
  • איך המשתמשים מאומתים.
  • דף השגיאה שמוצג למשתמשים כשהגישה נדחית.

ניהול ההגדרות

אפשר לראות ולעדכן את ההגדרות של IAP במאזן עומסים ובאפליקציות של App Engine באמצעות Google Cloud המסוף, IAP API או Google Cloud CLI.

כדי לעדכן את הגדרות ה-IAP בכל המשאבים, כולל תיקיות, פרויקטים וארגונים, צריך להשתמש ב-Google Cloud CLI או ב-API.

כדי לנהל את ההגדרות של רכישות מתוך האפליקציה:

המסוף

כדי לראות ולשנות את ההגדרות באמצעות מסוף Google Cloud :

  1. עוברים אל הדף של שרת Proxy לאימות זהויות (IAP).
    כניסה לדף 'שרת proxy לאימות זהויות (IAP)'
  2. מחפשים את המשאב בכרטיסייה APPLICATIONS (אפליקציות).
  3. פותחים את התפריט פעולות נוספות ולוחצים על הגדרות.
  4. לוחצים על Save.

gcloud

כדי לקבל ולשנות הגדרות באמצעות Google Cloud CLI, משתמשים בפקודות gcloud iap settings get ו-gcloud iap settings set באופן הבא:

  • כדי לקבל את ההגדרות של פרויקט, תיקייה או ארגון, משתמשים בפקודות הבאות. כדי להגדיר את הגדרות ה-IAP באמצעות מסוף Google Cloud או ה-CLI של gcloud, אפשר לעיין במאמר בנושא התאמה אישית של IAP.
gcloud iap settings get --project=PROJECT-ID
gcloud iap settings get --folder=FOLDER-ID
gcloud iap settings get --organization=ORGANIZATION-ID
  • כדי לקבל הגדרות של סוג מסוים של משאב IAP בפרויקט:
gcloud iap settings get --project=PROJECT-ID \
  --resource-type=RESOURCE-TYPE-NAME
  • כדי להגדיר הגדרות לפרויקט, לתיקייה או לארגון, או לסוג משאב IAP בפרויקט, יוצרים קובץ JSON או YAML שמכיל את ההגדרות החדשות הרצויות ומציינים את הנתיב לקובץ. מידע נוסף זמין במאמר בנושא gcloud iap settings set.
gcloud iap settings set SETTING_FILE --project=PROJECT-ID \
  --resource-type=RESOURCE-TYPE-NAME

API

כדי לקבל ולשנות הגדרות באמצעות IAP API, שולחים בקשות באמצעות הפעלים GET או PATCH של HTTP לנקודת הקצה של המשאב שנבחר ב- Google Cloud. משלבים את :iapSettings סיומת הנתיב, נתיב משאב (כפי שמפורט במאמר משאבים והרשאות) ושיטת HTTP מתאימה כדי לקבל או לשנות הגדרה. מידע נוסף זמין במאמרים getIapSettings() וupdateIapSettings().

  • כדי לקבל או להגדיר הגדרות לסוג מסוים של משאב IAP בפרויקט:
https://iap.googleapis.com/v1/projects/PROJECT-ID/iap_web/appengine-APP-ID/services/SERVICE-ID/versions/VERSION-ID:iapSettings
  • כדי לקבל או להגדיר הגדרות לפרויקט:
https://iap.googleapis.com/v1/projects/PROJECT-ID:iapSettings
  • כדי לקבל או להגדיר הגדרות לתיקייה:
https://iap.googleapis.com/v1/folders/FOLDER-ID:iapSettings
  • כדי לקבל או להגדיר הגדרות לארגון:
https://iap.googleapis.com/v1/organizations/ORGANIZATION-ID:iapSettings

תפקידים והרשאות בהגדרות של IAP

בקטע הזה מתוארים התפקידים וההרשאות שנדרשים כדי להציג ולעדכן את ההגדרות של IAP.

תפקידים בהגדרות

אפשר לתת את התפקיד IAP Settings Admin ‏(roles/iap.settingsAdmin) ברמת הארגון, התיקייה והפרויקט. כדי לראות את ההרשאות שמוענקות לתפקיד אדמין של הגדרות IAP, אפשר לעיין במאמר בנושא הרשאות של הגדרות.

מידע נוסף על תפקידים והרשאות ב-IAP זמין במאמר בנושא תפקידים והרשאות ב-Identity-Aware Proxy.

ההרשאות האלה ניתנות באמצעות התפקידים הבסיסיים הבאים:

  • התפקיד 'צפייה בפרויקט' (roles/viewer) מעניק את כל ההרשאות getSettings.

  • התפקיד 'עריכה' (roles/editor) מעניק את כל ההרשאות שמתוארות בטבלה.

הרשאות להגדרות

בטבלה הבאה מפורטות הרשאות ה-IAM שנדרשות כדי לקרוא ולשנות את ההגדרות של כל סוג משאב. במאמר משאבים והרשאות מופיע תיאור של סוגי המשאבים השונים.

משאב הרשאה לצפייה בהגדרות הרשאה לשינוי ההגדרות
ארגון iap.organizations.getSettings iap.organizations.updateSettings
תיקייה iap.folders.getSettings iap.folders.updateSettings
פרויקט iap.projects.getSettings iap.projects.updateSettings
כל שירותי האינטרנט iap.web.getSettings iap.web.updateSettings
סוגי אתרים iap.webTypes.getSettings iap.webTypes.updateSettings
שירותי אינטרנט iap.webServices.getSettings iap.webServices.updateSettings
גרסאות של שירותי אינטרנט iap.webServiceVersions.getSettings iap.webServiceVersions.updateSettings
סוגי אתרים iap.webTypes.getSettings iap.webTypes.updateSettings

מידע נוסף על הקצאת תפקידים ב-IAM זמין במאמר הענקה, שינוי וביטול גישה.

התאמה אישית של הגדרות הרכישות מתוך האפליקציה

‫IAP מספק את הגדרות ההתאמה האישית הבאות:

שדה תיאור
access_settings.cors_settings.allow_http_options שליטה באפשרויות HTTP (קדם הפעלה של CORS)
access_settings.oauth_settings.login_hint פישוט הכניסה למשתמשים בדומיין G Suite
application_settings.access_denied_page_settings.access_denied_page_uri הצגת דף שגיאה מותאם אישית כשהגישה נדחית
application_settings.csm_settings.rctoken_aud הנפקת RCToken ל-GKE Enterprise ול-Istio
access_settings.gcip_settings אימות באמצעות Identity Platform
access_settings.ReauthSettings הגדרת מדיניות אימות מחדש. פרטים נוספים מופיעים במאמר בנושא הגדרת אימות מחדש.

אפשר להחיל הגדרות ברמת הפרויקט או בכל רמה נמוכה יותר של משאב IAP.

אפשר להגדיר הגדרות למשאבי IAP מבוססי-אינטרנט, אבל לא למשאבים שאליהם ניגשים באמצעות IAP להעברת TCP.

לדוגמה, אפשר להגדיר את הגדרות ההתאמה האישית של access_settings.cors_settings.allow_http_options כך:

YAML

access_settings:
  cors_settings:
    allow_http_options: "false"

JSON

{
  "access_settings": {
    "cors_settings": {
      "allow_http_options": "false"
    }
  }
}

בקטעים הבאים מוסבר בהרחבה על כל אחת מההגדרות.

התרת בקשות HTTP OPTIONS (קדם-הפעלה של CORS)

שדה ערך ברירת המחדל
access_settings.cors_settings.allow_http_options false

מדיניות המקור הזהה באינטרנט מונעת מדפדפנים לשלוח בקשות AJAX בין אתרים. כברירת מחדל, JavaScript בדף שמוצג ממקור אחד לא יכול להשתמש ב-AJAX כדי לשלוח בקשה לאפליקציה שמאובטחת באמצעות IAP ומארחת במקור אחר.

במקרים מסוימים, הדפדפנים ינסו לשלוח בקשה באופן אוטומטי, אבל יבטלו את התוכן של התגובה אם היא לא כוללת כותרת Access-Control-Allow-Origin. כדי לאפשר בקשות מהסוגים האלה, צריך לכלול את הכותרת הזו בתגובות של האפליקציה.

במקרים אחרים, הדפדפן ישלח בקשת קדם-הפעלה של CORS, שהיא סוג של בקשת HTTP OPTIONS, לפני שליחת הבקשה ממקורות שונים. אם האפליקציה לא מגיבה בתגובה מתאימה לבקשת קדם-הפעלה (שכוללת את כותרות התגובה הנדרשות Access-Control-*), הדפדפן יחסום את הבקשה ויציג שגיאה. בנוסף, מכיוון שבקשות Preflight לא נשלחות עם פרטי אימות (כמו קובץ Cookie של סשן IAP), ‏ IAP גם יגיב בשגיאה.

כדי לאשר את הבקשות האלה:

  1. מוסיפים לאפליקציה קוד שמגיב לבקשות OPTIONS.

  2. משנים את ההגדרה access_settings.cors_settings.allow_http_options ל-true כדי שבקשות של רכישות מתוך האפליקציה (IAP) יעברו דרך OPTIONS לאפליקציה שלך.

אימות באמצעות דומיין Google Workspace

שדה ערך ברירת המחדל
access_settings.oauth_settings.login_hint ""

אם רק משתמשים בדומיין ספציפי ב-Google Workspace ישתמשו באפליקציה שלכם, אתם יכולים להגדיר את IAP כדי לייעל את תהליך האימות. יש לזה כמה יתרונות:

  • אם משתמש מחובר לכמה חשבונות (למשל חשבון של מקום עבודה וחשבון לשימוש אישי), המערכת תבחר אוטומטית את החשבון של מקום עבודה במקום להציג את ממשק המשתמש לבחירת החשבון.

  • אם משתמש לא מחובר לחשבון Google שלו, ממשק המשתמש של הכניסה ימלא אוטומטית את החלק של הדומיין בכתובת האימייל שלו (כלומר, המשתמש יצטרך להקליד רק alice במקום alice@example.com, לדוגמה).

  • אם הדומיין שלכם ב-Google Workspace מוגדר לשימוש בספק צד שלישי של כניסה יחידה, המערכת תציג את דף הכניסה המותאם אישית הזה במקום הדף של Google.

כדי להפעיל את ההתנהגות הזו, צריך להגדיר את הערך של access_settings.oauth_settings.login_hint לשם הדומיין שלכם ב-Google Workspace (למשל example.com). הבעלות על הדומיין צריכה להיות מאומתת: אי אפשר להשתמש בדומיינים שרירותיים של DNS באינטרנט שנמצאים בבעלותכם. (דומיינים שהוספו כדומיין ראשי או משני ב-Google Workspace מאומתים ולכן אפשר להשתמש בהם כאן).

אם אתם צריכים לאמת משתמשים מחוץ לדומיין, אתם יכולים להשתמש באימות פרוגרמטי.

מידע נוסף זמין במסמכי התיעוד בנושא OpenID Connect.

הגדרת דף שגיאה מותאם אישית של דחיית גישה

שדה ערך ברירת המחדל
application_settings.access_denied_page_settings.access_denied_page_uri ""

אתם יכולים להגדיר בתיבת הטקסט הזו כתובת URL שתפנה את המשתמשים לדף בהתאמה אישית במקום לדף השגיאה שמוגדר כברירת מחדל ברכישה מתוך האפליקציה, בכל פעם שהגישה נדחית בגלל מדיניות.

אפשר גם להטמיע את כתובת ה-URL של פתרון הבעיות באמצעות התכונה הזו. מידע נוסף זמין במאמר הפעלת כתובת URL לפתרון בעיות בדף השגיאה המותאם אישית 'הגישה נדחתה'.

הנפקת מזהי רשת של GKE Enterprise ו-Istio RCToken

שדה ערך ברירת המחדל
application_settings.csm_settings.rctoken_aud ""

אם אתם משתמשים ב-Istio ב-GKE, אתם יכולים להגדיר את IAP כך שיפיק RCToken שתואם ל-Istio. אם השדה הזה מוגדר למחרוזת לא ריקה, IAP יוסיף Ingress-Authorizationכותרת HTTP שמכילה RCToken. התביעה aud תוגדר לערך של השדה.

אימות באמצעות Identity Platform

שדה ערך ברירת המחדל
access_settings.gcip_settings null

כברירת מחדל, שרת IAP משתמש במערכת הזהויות המובנית של Google. אם השדה הזה מוגדר, IAP ישתמש ב-Identity Platform במקום זאת כדי לאמת משתמשים.

הסבר על קבלת הגדרות בירושה בהיררכיית המשאבים

‫IAP תמיד מעריך בקשות לגרסה ספציפית של שירות אינטרנט. סוג המשאב הזה נמצא ברמה הנמוכה ביותר בהיררכיית המשאבים, שנראית כך:

- Organization
  - Folder
    - Project
      - All web services
        - Web service type
          - Web service
            - Web service version

כדי לקבוע את ההגדרות שיחולו על גרסה של שירות אינטרנט,‏ IAP מתחיל עם קבוצת ערכי ברירת מחדל, ואז עובר על ההיררכיה מלמעלה למטה. ההגדרות מוחלות לפי הסדר שבו הן מופיעות, כך שערכים שמוגדרים ברמה נמוכה יותר מבטלים ערכים שמוגדרים ברמה גבוהה יותר. לדוגמה, אם access_settings.cors_settings.allow_http_options מוגדר ל-true ברמת הפרויקט, אבל ל-false ברמת השירות, הערך האפקטיבי יהיה false.

מידע נוסף על היררכיית המשאבים של IAP זמין במאמר משאבים והרשאות.