במאמר הזה מוסבר איך להתאים אישית את ההגדרות של שרת 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 :
- נכנסים לדף Identity-Aware Proxy.
כניסה לדף Identity-Aware Proxy - מאתרים את המשאב בכרטיסייה APPLICATIONS.
- פותחים את התפריט פעולות נוספות ולוחצים על הגדרות.
- לוחצים על 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 יגיב בשגיאה.
כדי לאשר את הבקשות האלה:
מוסיפים לאפליקציה קוד שמגיב לבקשות של
OPTIONS.משנים את ההגדרה
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, קראו את המאמר משאבים והרשאות.