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

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

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

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

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

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

כדי לנהל את ההגדרות ב-IAP:

המסוף

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

  1. נכנסים לדף Identity-Aware Proxy.
    כניסה לדף Identity-Aware Proxy
  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

כדי לקבל ולשנות הגדרות באמצעות ה-API של IAP, שולחים בקשות באמצעות הפעלים GET או PATCH של HTTP לנקודת הקצה של המשאב שנבחר ב- Google Cloud. כדי לקבל או לשנות הגדרה, משלבים את הסיומת של נתיב כתובת ה-URL של :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‏ (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

ב-IAP יש את הגדרות ההתאמה האישית הבאות:

שדה תיאור
access_settings.cors_settings.allow_http_options שליטה ב-HTTP OPTIONS (בקשת קדם-הפעלה במסגרת CORS)
access_settings.oauth_settings.login_hint פישוט תהליך ההתחברות למשתמשים בדומיין של Google Workspace
application_settings.access_denied_page_settings.access_denied_page_uri הצגת דף שגיאה בהתאמה אישית כשהגישה נדחית
application_settings.csm_settings.rctoken_aud הנפקת RCTokens של Cloud Service Mesh ו-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-*), הדפדפן יחסום את הבקשה עם שגיאה. בנוסף, מכיוון שבקשות טרום-שליחה לא נשלחות עם פרטי כניסה לאימות (כמו קובץ 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 שמפנה את המשתמשים לדף בהתאמה אישית במקום לדף השגיאה שמוגדר כברירת מחדל ב-IAP, בכל פעם שהגישה נדחית על ידי מדיניות.

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

הנפקת מזהי רשת RCToken של Cloud Service Mesh ו-Istio

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

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

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

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

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

שימוש ב-Terraform להתאמה אישית של IAP

במאמר google_iap_settings מוסבר איך להגדיר את IAP באמצעות Terraform.

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

‫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, קראו את המאמר משאבים והרשאות.