בדף הזה מוסבר איך להגדיר את Identity-Aware 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.
פתרון בעיות
מידע על פתרון בעיות זמין במאמר פתרון בעיות ושאלות נפוצות.