אימות מחדש ב-IAP מאפשר לבעלי שירותים ואפליקציות או לאדמינים שלGoogle Cloud שירותים ואפליקציות לדרוש ממשתמשי קצה מאומתים לעבור אימות מחדש אחרי פרק זמן מוגדר כשהם ניגשים לשירות או לאפליקציה שמוגנים באמצעות IAP. בנוסף, אפשר להגביל את משך הזמן שבו משתמש יכול לגשת לשירות או לאפליקציה שמוגנים באמצעות IAP לפני שנדרש אימות.
אימות מחדש של IAP (או, reauth) נועד לאכוף מדיניות אימות מחדש עבור שירותים ואפליקציות (או, אפליקציות) שמוגנים על ידי IAP. באמצעות השירות הזה, אתם יכולים לאכוף מדיניות של אימות מחדש בשירותים ובאפליקציות קריטיים שמטפלים במידע סודי. לדוגמה, אתם יכולים לציין שמשתמשים שניגשים לאפליקציית משאבי אנוש חיונית יאומתו מחדש כל שעה באמצעות גורם שני.
שיטות נתמכות לאימות מחדש
אפשר להשתמש בשיטות הבאות כדי לנהל את הגדרות האימות מחדש:
- כניסה: משתמשי הקצה מאמתים מחדש את הזהות שלהם באמצעות פרטי הכניסה.
- מפתח אבטחה: משתמשי הקצה מבצעים אימות מחדש באמצעות מפתח האבטחה שהוגדר.
- אמצעי אימות דו-שלבי רשומים: משתמשי קצה עוברים אימות מחדש באמצעות אחד מאמצעי האימות הדו-שלבי הרשומים שלהם.
מידע נוסף מופיע בקטע IapSettings.
הגדרת מדיניות אימות מחדש
השדות reauthSettings כלולים כחלק מ-IapSettings, ואפשר להגדיר אותם בכל סוג משאב בהיררכיית המשאבים. אפשר להגדיר את reauthSettings ברמת הארגון, התיקייה, הפרויקט או השירות כדי להחיל הגבלות. לדוגמה, אתם יכולים להגביל את אורך הסשן לשעה אחת לכל האפליקציות בארגון או לאפליקציה ספציפית.
יש שני סוגים של מדיניות שבהם אפשר להשתמש כדי להגדיר אימות מחדש:
מינימום: אם סוג המדיניות מוגדר לערך
MINIMUMבמשאב, כמו ארגון, אז כשמבצעים הערכה של הגדרות האימות מחדש במשאב ברמה נמוכה יותר, כמו תיקייה, שתי ההגדרות משולבות. אם למשאב ברמה הנמוכה אין הגדרות אימות מחדש, תוצאת המיזוג היא ההגדרות הלא ריקות של המשאב ברמה הגבוהה. אחרת, המיזוג יתבצע לפי משך הסשן הקצר יותר ושיטת האימות מחדש עם העדיפות הגבוהה יותר בין שני המשאבים. סוג המדיניות הממוזגת שמתקבלת מוגדר כ-MINIMUM.ברירת מחדל: אם סוג המדיניות מוגדר כ-
DEFAULTבמשאב, כמו ארגון, אז כשמעריכים את הגדרת האימות מחדש במשאב ברמה נמוכה יותר, כמו תיקייה, נעשה שימוש בהגדרה של המשאב ברמה הנמוכה יותר אם היא מוגדרת. אחרת, מוחלת הגדרת האימות מחדש של המשאב ברמה הגבוהה יותר.
בשני סוגי המדיניות, תהליך ההערכה חוזר על עצמו כדי לקבוע את reauthSettings לשירות או לאפליקציה של היעד. הערכים האפקטיביים של reauthSettings בכל רמה נקבעים באופן הבא:
ירושה: ההגדרות של המשאב ברמה הגבוהה יותר משולבות עם ההגדרות של המשאב ברמה הנמוכה יותר.
כללי מיזוג: אם למשאב ברמה נמוכה יותר אין הגדרות ספציפיות לאימות מחדש, הוא יקבל בירושה את ההגדרות מהרמה הגבוהה יותר.
אם בשתי הרמות יש
reauthSettings, התוצאה הממוזגת תהיה:- משך הסשן הקצר יותר.
- שיטת האימות מחדש עם העדיפות הגבוהה יותר.
- העדיפות היא
Secure key(הכי גבוהה),Enrolled second factors(בינונית) ו-Login(הכי נמוכה).
סוג המדיניות שמתקבל: סוג המדיניות של ההגדרות הממוזגות הוא
MINIMUM.
בדוגמאות הבאות מוצגות ההגדרות לפני ההערכה ואחריה. במהלך ההערכה, התיקייה והארגון reauthSettings מאוחדים, וכתוצאה מכך סוג המדיניות של התיקייה משתנה ל-MINIMUM. ההגדרות הממוזגות משמשות למיזוג עם השירות או האפליקציה reauthSettings.
ארגון IapSettings:
accessSettings:
reauthSettings:
method: "ENROLLED_SECOND_FACTORS"
maxAge: "3600s"
policyType: "MINIMUM"
תיקייה IapSettings:
accessSettings:
reauthSettings:
method: "LOGIN"
maxAge: "1200s"
policyType: "DEFAULT"
שירות או אפליקציה IapSettings:
accessSettings:
reauthSettings:
method: "SECURE_KEY"
maxAge: "7200s"
policyType: "DEFAULT"
ההגדרות אחרי המיזוג:
ארגון IapSettings:
accessSettings:
reauthSettings:
method: "ENROLLED_SECOND_FACTORS"
maxAge: "3600s"
policyType: "MINIMUM"
תיקייה IapSettings:
accessSettings:
reauthSettings:
method: "ENROLLED_SECOND_FACTORS"
maxAge: "1200s"
policyType: "MINIMUM"
שירות או אפליקציה IapSettings:
accessSettings:
reauthSettings:
method: "SECURE_KEY"
maxAge: "1200s"
policyType: "MINIMUM"
בדוגמה הזו, אם סוג המדיניות של כל משאב מוגדר כ-DEFAULT, נעשה שימוש ב-reauthSettings של השירות או האפליקציה.
MaxAge
משתמשים בפרמטר maxAge כדי לציין באיזו תדירות משתמש קצה צריך לבצע אימות מחדש. הערך מצוין בשניות. לדוגמה, כדי להגדיר מדיניות אימות מחדש של שעה אחת, מגדירים את הערך של seconds ל-3,600, כמו בדוגמה הבאה:
accessSettings:
reauthSettings:
method: "LOGIN"
maxAge: "3600s"
policyType: "MINIMUM"
הערך המינימלי של maxAge הוא 300 שניות, או חמש דקות.
כדי להגדיר מדיניות אימות מחדש, מבצעים את השלבים הבאים.
המסוף
- עוברים אל דף ה-IAP.
כניסה לדף 'שרת proxy לאימות זהויות (IAP)' בוחרים פרויקט, ואז בוחרים את המשאב שרוצים להגדיר לו מדיניות אימות מחדש.
פותחים את ההגדרות של המשאב, ובקטע מדיניות אימות מחדש בוחרים באפשרות הגדרת אימות מחדש.
מציינים את הגדרות האימות מחדש ולוחצים על שמירה.
gcloud
אפשר להגדיר מדיניות אימות מחדש במשאבים ובשירותים ברמת הארגון, הפרויקט והתיקייה. ריכזנו כאן כמה דוגמאות לפקודות להגדרת מדיניות אימות מחדש.
מידע נוסף זמין במאמר gcloud iap settings set.
מריצים את הפקודה הבאה:
gcloud iap settings set SETTING_FILE [--organization=ORGANIZATION --folder=FOLDER --project=/PROJECT --resource-type=RESOURCE_TYPE --service=SERVICE --version=VERSION
כדי להגדיר מדיניות אימות מחדש למשאבים בארגון, מריצים את הפקודה הבאה:
gcloud iap settings set SETTING_FILE --organization=ORGANIZATION
כדי להגדיר מדיניות אימות מחדש למשאבים בתיקייה, מריצים את הפקודה הבאה:
gcloud iap settings set SETTING_FILE --folder=FOLDER
כדי להגדיר מדיניות אימות מחדש בכל המשאבים מסוג web בפרויקט, מריצים את הפקודה הבאה:
gcloud iap settings set SETTING_FILE --project=PROJECT --resource-type=iap_web
כדי להגדיר מדיניות אימות מחדש בשירות App Engine בפרויקט, מריצים את הפקודה הבאה:
gcloud iap settings set SETTING_FILE --project=PROJECT --resource-type=app-engine --service=SERVICE
כאשר SETTING_FILE הוא:
accessSettings:
reauthSettings:
method: "LOGIN"
maxAge: "3600s"
policyType: "MINIMUM"
מחליפים את מה שכתוב בשדות הבאים:
- FOLDER: מזהה התיקייה.
- ORGANIZATION: מזהה הארגון.
- PROJECT: מזהה הפרויקט.
- RESOURCE_TYPE: סוג משאב IAP. חייב להיות
app-engine,iap_web,compute,organizationאוfolder. - SERVICE: שם השירות. השדה הזה הוא אופציונלי אם הערך של
resource-typeהואcomputeאוapp-engine. - VERSION: שם הגרסה. המאפיין הזה לא רלוונטי לסוג המשאב
computeוהוא אופציונלי לסוג המשאבapp-engine.
API
מריצים את הפקודה הבאה כדי להכין קובץ iap_settings.json. מעדכנים את הערכים לפי הצורך.
cat << EOF > iap_settings.json
{
"access_settings": {
"reauth_settings": {
"method": "LOGIN",
"maxAge": "300s",
"policy_type": "DEFAULT"
}
}
}
EOF
מריצים את הפקודה gcloud iap settings get כדי לקבל את שם המשאב. מעתיקים את השדה name מהפלט. תצטרכו את השם בשלב הבא.
gcloud iap settings get [--organization=ORGANIZATION --folder=FOLDER --project=/PROJECT --resource-type=RESOURCE_TYPE --service=SERVICE --version=VERSION]
בפקודה הבאה, מחליפים את RESOURCE_NAME בשם מהשלב הקודם. המידע בIapSettings יעודכן.
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d @iap_settings.json \ "https://iap.googleapis.com/v1/RESOURCE_NAME:iapSettings?updateMask=iapSettings.accessSettings.reauthSettings"
הסבר על פרטי כניסה לאימות מחדש
אחרי אימות מחדש מוצלח, IAP יוצר קובץ Cookie בדפדפן של משתמש הקצה. כדי למנוע אימות מחדש תכוף של אפליקציות באותו דומיין, קובץ ה-Cookie מוגדר בדומיין הפרטי ברמה העליונה והוא תקף לכל הדומיין הזה.
לדוגמה, foo.example.com הוא משאב שמוגן על ידי IAP
ויש לו מדיניות אימות מחדש של IAP. אחרי אימות מחדש מוצלח, IAP מגדיר קובץ Cookie ב-example.com כי זהו הדומיין הפרטי ברמה העליונה. אפליקציות מאותו דומיין פרטי ברמה העליונה, כמו bar.example.com, משתמשות באותם פרטי כניסה לאימות מחדש, ולא מבקשות מהמשתמש לבצע אימות מחדש כל עוד פרטי הכניסה תקפים.
בכתובות URL כמו myapp.appspot.com, appspot.com הוא דומיין ציבורי, ולכן הדומיין הפרטי ברמה העליונה הוא myapp.appspot.com.
מגבלות ידועות
- אימות מחדש נתמך רק בתהליכי עבודה בדפדפן. אין תמיכה בגישה לחשבון משתמש באמצעות תוכנה. לדוגמה, אפליקציות לנייד ולמחשב לא יכולות לבצע אימות מחדש של משתמשים כי אין להן גישה למשאבים שדורשים אימות מחדש.
- חשבונות שירות ו-IAP-TCP פטורים מדרישות האימות מחדש.
- אימות מחדש לא פועל עם סוג החבר
allUsersבניהול זהויות והרשאות גישה (IAM). - זהויות חיצוניות, כמו OAuth ו-SAML, לא נתמכות באימות מחדש.
- אי אפשר להשתמש בזהויות של איחוד שירותי אימות הזהות של כוח העבודה לאימות מחדש ב-IAP.