בדף הזה מוסבר איך להגדיר שרת proxy לאימות זהויות (IAP) כדי להשתמש באיחוד שירותי אימות הזהויות של כוח העבודה.
כשמגדירים איחוד שירותי אימות הזהות של כוח עבודה באמצעות IAP, אפשר להשתמש בספק זהויות (IdP) חיצוני כדי לאמת ולאשר לכוח העבודה (קבוצה של משתמשים, כמו עובדים, שותפים וקבלנים) את הגישה לשירותים שנפרסו ב-Google Cloud או בפריסה מקומית, באמצעות ניהול זהויות והרשאות גישה (IAM). כך המשתמשים יכולים לגשת לשירותים בצורה מאובטחת.
הגדרת IAP עם איחוד שירותי אימות הזהות של כוח העבודה מאפשרת לכם לבצע את הפעולות הבאות לגבי אפליקציות שמאובטחות באמצעות IAP:
- הפניה אוטומטית של משתמש קצה לספק זהויות חיצוני, כמו Okta, כדי להיכנס.
- הגדרת סשן כניסה בין 15 דקות ל-12 שעות.
- לאפשר רק למשתמשי קצה ספציפיים או לקבוצות של משתמשי קצה ב-IdP לגשת לאפליקציה.
- מגדירים את ההקשר שבו משתמש קצה יכול לגשת לאפליקציה. לדוגמה, אפשר לאפשר גישה רק בשעה מסוימת ביום.
אפשר להשתמש ב-IAP עם איחוד שירותי אימות הזהות של כוח עבודה בכל המשאבים הקיימים ומאזני העומסים ש-IAP תומך בהם.
הגדרת IAP עם איחוד שירותי אימות הזהות של כוח העבודה לאפליקציה
הגדרת IAP עם איחוד שירותי אימות הזהות של כוח העבודה כוללת את המשימות העיקריות הבאות:
- הגדרת ספק ומאגר כוח עבודה.
- יוצרים מזהה לקוח וסוד לקוח ב-OAuth.
- מפעילים את IAP ומגדירים אותו לשימוש באיחוד שירותי אימות הזהות של כוח העבודה.
הגדרת מאגר כוח עבודה וספק
מגדירים מאגר כוח עבודה וספק, ופועלים לפי ההוראות של אחד מהספקים הבאים:
כשמגדירים את משך הסשן, כדאי לעיין במאמר ניהול IAP באמצעות סשנים של איחוד שירותי אימות הזהות של כוח העבודה.
אם רוצים למפות כתובת אימייל מספק זהויות של צד שלישי אל Google Cloud, צריך להוסיף מיפוי מאפיינים בספק מאגר הזהויות של כוח העבודה עבור google.email.
דוגמה: google.email=assertion.email.
יצירת מזהה לקוח וסוד לקוח ב-OAuth
פועלים לפי ההוראות ליצירת מזהה לקוח וסוד לקוח של OAuth בפרויקט באותו ארגון שבו נמצא מאגר כוח העבודה שבו תשתמשו להגדרה הזו. הפרויקט לא חייב להיות אותו פרויקט שבו נמצא המשאב שמוגן באמצעות IAP. כשיוצרים את מזהה הלקוח ואת הסוד של OAuth, צריך לבצע את הפעולות הבאות:
כשיוצרים את מזהה הלקוח, משתמשים בplaceholder ל-URI של ההפניה האוטומטית. אחרי שיוצרים את מזהה הלקוח, מריצים את
describeלקוח OAuth כדי לקבל אתclientIDשנוצר.אחרי שמקבלים את
clientID, מריצים את הפקודהupdateלקוח OAuth כדי לעדכן אתallowed-redirect-urisלערך הבא:https://iap.googleapis.com/v1/oauth/clientIds/$CLIENT_ID:handleRedirect.כאשר
CLIENT_IDהואclientIDשאוחזר בשלב הקודם.אחרי שיוצרים את סוד הלקוח, מריצים את
describeפרטי הכניסה של לקוח OAuth כדי לקבל את ה-clientSecretשנוצר.
שומרים את
clientIdואתclientSecretכי תצטרכו אותם בשלבים הבאים.
הפעלת IAP לשימוש באיחוד שירותי אימות הזהות של כוח העבודה
כדי להפעיל רכישות מתוך האפליקציה באמצעות איחוד שירותי אימות הזהות של כוח העבודה, מבצעים את השלבים הבאים.
הפעלת IAP
מפעילים את IAP במשאב.
console
- במסוף Google Cloud , פותחים את הדף IAP.
מעבר לדף IAP - בוחרים פרויקט. הפרויקט צריך להיות באותו ארגון כמו מאגר הזהויות של כוח העבודה שיצרתם קודם. הפרויקט לא חייב להיות הפרויקט שבו יצרתם את מזהה הלקוח ואת הסוד של OAuth.
- לוחצים על הכרטיסייה Applications (אפליקציות) ומאתרים את האפליקציה שרוצים להגביל את הגישה אליה באמצעות IAP.
- בעמודה 'רכישות מתוך האפליקציה', מעבירים את המתג למצב מופעל.
gcloud
כדי להשתמש ב-CLI של gcloud כדי להפעיל את IAP, פועלים לפי ההליך של השירות הרלוונטי:
API
יוצרים קובץ
settings.json.cat << EOF > settings.json { "iap": { "enabled":true, } } EOFמפעילים את IAP ב-App Engine.
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d @settings.json \ "https://appengine.googleapis.com/v1/apps/PROJECT_ID?updateMask=iap.enabled"כדי להפעיל את IAP ב-Compute Engine, משתמשים בכתובת ה-URL הבאה:
https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/REGION/backendServices/BACKEND_SERVICE_NAME?updateMask=iap.enabled.
עדכון ההגדרות של הרכישות מתוך האפליקציה
כדי להגדיר את IAP לשימוש באיחוד שירותי אימות הזהות של כוח העבודה, צריך להגדיר את ההגדרות הבאות:
-
WorkforceIdentitySettings: מזהה הלקוח וסוד הלקוח ב-OAuth שנוצרו קודם. -
IdentitySources: מקור הזהות.
מידע נוסף מופיע במאמר ממשקי API של IAP.
gcloud
יוצרים קובץ
iap_settings.yamlלפי הדוגמה הבאה.CLIENT_ID=clientId CLIENT_SECRET=clientSecret WORKFORCE_POOL_NAME=locations/global/workforcePools/test-pool cat <<EOF > iap_settings.yaml access_settings: identity_sources: ["WORKFORCE_IDENTITY_FEDERATION"] workforce_identity_settings: workforce_pools: ["$WORKFORCE_POOL_NAME"] oauth2: client_id: "$CLIENT_ID" client_secret: "$CLIENT_SECRET" EOFמריצים את הפקודה הבאה כדי לעדכן את הגדרות ה-IAP של המשאב.
gcloud iap settings set iap_settings.yaml --project=PROJECT --resource-type=RESOURCE_TYPE --service=SERVICEמחליפים את מה שכתוב בשדות הבאים:
- PROJECT: מזהה הפרויקט.
RESOURCE_TYPE: סוג משאב IAP. סוג המשאב צריך להיות
cloud-run(תצוגה מקדימה),app-engine,iap_web,compute,organizationאוfolder.לסוג המשאב
cloud-run, משתמשים בדגל--regionכדי לציין את האזור שבו שירות Cloud Run נפרס.SERVICE: שם השירות. הדרישה הזו אופציונלית גם ל
app-engineוגם לcompute.
פרטים על הפקודה זמינים במאמר gcloud iap settings set.
API
יוצרים קובץ הגדרות
iap_settings.jsonלפי הדוגמה הבאה.CLIENT_ID=clientId CLIENT_SECRET=clientSecret WORKFORCE_POOL_NAME=locations/global/workforcePools/test-pool cat <<EOF > iap_settings.json { "access_settings": { "identity_sources": ["WORKFORCE_IDENTITY_FEDERATION"], "workforce_identity_settings": { "workforce_pools": ["$WORKFORCE_POOL_NAME"], "oauth2": { "client_id": "$CLIENT_ID", "client_secret": "$CLIENT_SECRET", } } } } EOFמשתמשים ב-CLI של gcloud כדי לקבל את שם המשאב, ואז מעתיקים את
RESOURCE_NAMEמהפלט כי תצטרכו אותו בשלב הבא.gcloud iap settings get \ --project=PROJECT \ --resource-type=RESOURCE_TYPE \ --service=SERVICEמחליפים את מה שכתוב בשדות הבאים:
- PROJECT: מזהה הפרויקט.
- RESOURCE_TYPE: סוג משאב IAP. סוג המשאב צריך להיות
appengine,iap_web,compute,organization,folderאוcloud_run-$REGION(תצוגה מקדימה), כאשר $REGION הוא האזור שבו שירות Cloud Run שלכם נפרס. - SERVICE: שם השירות. הדרישה הזו אופציונלית גם ל
app-engineוגם לcompute.
בפקודה הבאה, מחליפים את
RESOURCE_NAMEבערךRESOURCE_NAMEמהשלב הקודם.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.identitySources,iapSettings.accessSettings.workforceIdentitySettings.workforcePools,iapSettings.accessSettings.workforceIdentitySettings.oauth2.clientId,iapSettings.accessSettings.workforceIdentitySettings.oauth2.clientSecret"
הענקת גישה למשאבים שמוגנים על ידי IAP
כדי לגשת למשאב שמאובטח באמצעות IAP, משתמשי קצה צריכים לקבל את התפקיד משתמש באפליקציית אינטרנט מאובטחת באמצעות IAP במשאב. אתם יכולים להעניק את התפקיד 'משתמש באפליקציית אינטרנט שמוגנת באמצעות IAP' למשתמש יחיד (חשבון ראשי) או לקבוצת משתמשים (קבוצת חשבונות ראשיים, שממופה לקבוצה, למאפיין ספציפי או למאגר שלם של משתמשים).
אין תמיכה בגישה לא מוגבלת למשאבים שמוגנים על ידי רכישות מתוך האפליקציה.
console
- במסוף Google Cloud , פותחים את הדף IAP.
מעבר לדף IAP - בוחרים את המשאב שרוצים לאבטח באמצעות IAP.
- לוחצים על Add Principal ואז מוסיפים את מזהי החשבונות של הקבוצות או האנשים שרוצים להעניק להם תפקיד IAM למשאב.
- בקטע Assign roles (הקצאת תפקידים), בוחרים באפשרות IAP-Secured Web App User (משתמש באפליקציית אינטרנט מאובטחת באמצעות IAP).
- לוחצים על הוספה.
gcloud
מריצים את הפקודה הבאה.
gcloud iap web add-iam-policy-binding \
--member=PRINCIPAL_IDENTIFIER \
--role='roles/iap.httpsResourceAccessor' \
--project=PROJECT_ID \
--resource-type=RESOURCE_TYPE \
--service=SERVICE \
--condition=CONDITION
מחליפים את מה שכתוב בשדות הבאים :
- PRINCIPAL_IDENTIFIER: מזהי החשבונות הראשיים.
- PROJECT_ID: מזהה הפרויקט.
- RESOURCE_TYPE: סוג משאב IAP, שיכול להיות
app-engineאוbackend-services. - SERVICE: (אופציונלי) שם השירות.
- CONDITION: (אופציונלי) תנאי IAM. דוגמה לתנאי שהוגדר עם רמות גישה:
expression="accessPolicies/12345678/accessLevels/iap_test_access_level" in request.auth.access_levels,title=iap-test-access-level,description=only access in weekdays
API
השיטה הזו לא מומלצת כי היא משפיעה על כל מדיניות IAM של משאב. שגיאה עלולה להסיר את המדיניות ממשאב.
קבלת הקישורים הקיימים של מדיניות ה-IAM.
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d {} \ "https://iap.googleapis.com/v1/RESOURCE_NAME:getIamPolicy" -o iam_policy_bindings.jsonמחליפים את RESOURCE_NAME ב-RESOURCE_NAME שקיבלתם בשלב קודם.
בקובץ
iam_policy_bindings.jsonשקיבלתם מהשלב הקודם, מסירים את השורות של הגרסה וה-etag, ומוסיפים את הקישור שרוצים להוסיף למזהה של החשבון הראשי. מידע נוסף על מדיניות ההרשאות מופיע במאמר הסבר על מדיניות ההרשאות.{ "bindings": [ { // existing bindings }, { "role": "roles/iap.httpsResourceAccessor", "members": [ "principal://iam.googleapis.com/locations/global/workforcePools/iap-test-pool/subject/iap-test-subject" ], "condition": { "expression": "\"accessPolicies/12345678/accessLevels/iap_test_access_level\" in request.auth.access_levels", "title": "iap-test-access-level", "description": "only access in week days" } } ] }מעדכנים את הקישורים של מדיניות ה-IAM.
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d "{"policy":$(cat iam_policy_bindings.json)}" \ "https://iap.googleapis.com/v1/RESOURCE_NAME:setIamPolicy"מחליפים את RESOURCE_NAME ב-RESOURCE_NAME שקיבלתם בשלב קודם.
מידע נוסף זמין במאמרים בנושא GetIamPolicy ו-SetIamPolicy.
(אופציונלי) הגדרת בקרת גישה מבוססת-הקשר
אפשר גם להגדיר כללי בקרת גישה מבוססת-הקשר לצורך הרשאה מתקדמת.
הוראות להגדרת רמות גישה מופיעות במאמר בנושא יצירה והחלה של רמות גישה. כשמשתמשים בשירותי אימות הזהות של כוח העבודה, אי אפשר להגדיר רמות גישה על סמך פרטי המכשיר. עדיין אפשר להשתמש ברמות גישה מבוססות הקשר של הבקשה עם תנאים לגבי כתובת IP, שעה ותאריך.
אימות פרוגרמטי
IAP תומך באימות JWT של חשבונות שירות לאפליקציות שהוגדרו עם איחוד שירותי אימות הזהות של עובדים. למידע נוסף, עיינו במאמר אימות באמצעות JWT של חשבון שירות.
הגבלות בעבודה עם מאגרי כוח עבודה
- לכל אפליקציה שמופעל בה IAP, אפשר להגדיר רק מאגר זהויות אחד של כוח העבודה, והמאגר יכול להכיל רק ספק אחד.
- מאגר כוח העבודה, מזהה הלקוח והסוד ב-OAuth והאפליקציות שמופעל בהן IAP צריכים להיות באותו ארגון.
- אין תמיכה ברמות גישה למידע שקשור למכשיר.
- אפשר להשתמש רק בהגדרות הבאות של IAP:
- גישה באמצעות תוכנה עם איחוד שירותי אימות הזהות של כוח העבודה נתמכת רק בחשבונות שירות של Google.
פתרון בעיות
מידע לפתרון בעיות זמין במאמר פתרון בעיות ושאלות נפוצות.