בדף הזה מוסבר איך לנהל את הגישה של משתמשים פרטיים או קבוצות למשאבים שמאובטחים באמצעות שרת proxy לאימות זהויות (IAP) ברמת המשאב.
סקירה כללית
אתם יכולים להשתמש ב-IAP כדי להגדיר כללי מדיניות של IAP למשאבים ספציפיים ולמשאבים של Cloud Run בפרויקט ב- Google Cloud . לכל אחת מהאפליקציות בפרויקט יכולה להיות מדיניות גישה שונה. היכולת הזו רלוונטית לפרויקטים שיש בהם אפליקציות של Compute Engine, Google Kubernetes Engine ו-App Engine. באפליקציות של App Engine, אפשר להחיל כללי מדיניות גישה שונים על גרסאות ושירותים נפרדים.כדי לנהל את הגישה ברמת הפרויקט ומעלה, נכנסים לדף IAM. רשימות של משתמשים שיש להם גישה (חשבונות המשתמשים) ברמת הפרויקט חלות על כל המשאבים שמאובטחים באמצעות IAP בפרויקט.
לפני שמתחילים
לפני שמתחילים, צריך:
- משאב שמאובטח באמצעות IAP, שרוצים להוסיף לו גישה לאדם פרטי או לקבוצה.
- שמות של משתמשים או קבוצות שרוצים להוסיף להם גישה.
הפעלה והשבתה של IAP
כדי להפעיל ולהשבית את IAP, נדרשות הרשאות מסוימות. בטבלה הבאה מוצגת ההרשאה הנדרשת לכל סוג אפליקציה.
| סוג אפליקציה | נדרשת הרשאה |
|---|---|
| App Engine | appengine.applications.update |
| Compute Engine, Google Kubernetes Engine או Cloud Run | compute.backendServices.update |
clientauthconfig.clients.create, clientauthconfig.clients.update ו-clientauthconfig.clients.getWithSecret. ההרשאות האלה ניתנות על ידי התפקיד "עריכת פרויקט".
במאמר הענקה, שינוי וביטול של גישה מוסבר איך נותנים תפקידים למשתמשים.
ניהול הגישה במסוף Google Cloud
כדי לשלוט בגישה למשאב שמאובטח באמצעות IAP באמצעות מסוףGoogle Cloud , צריך לפעול לפי התהליך להוספה או להסרה של גישה.
הוספת גישה
נכנסים לדף Identity-Aware Proxy.
כניסה לדף Identity-Aware Proxyבוחרים את המשאב שרוצים לאבטח באמצעות IAP. הבחירות הבאות של משאבים מאבטחות קבוצה מוגדרת של משאבים:
כל שירותי האינטרנט: כל המשאבים בפרויקט יהיו מאובטחים. חשוב לדעת שזה לא אותו דבר כמו לתת גישה ברמת הפרויקט באמצעות דף הניהול של IAM. למשתמש שהוקצה לו התפקיד אדמין של מדיניות IAP ברמת המשאב כל שירותי האינטרנט יהיו הרשאות רק למדיניות IAP.
שירותים לקצה העורפי: כל השירותים לקצה העורפי יהיו מאובטחים.
בחלונית המידע שבצד שמאל, מוסיפים את כתובות האימייל של הקבוצות או המשתמשים שרוצים לתת להם תפקיד ב-IAM (הפלטפורמה לניהול זהויות והרשאות גישה) במשאב.
כדי להחיל תפקידים של מדיניות גישה על חשבון המשתמש, בוחרים מהתפקידים הבאים בתפריט הנפתח Select a role:
בעלים: מקבל את אותה גישה כמו אדמין מדיניות IAP. במקום זאת, צריך להשתמש בתפקיד אדמין מדיניות IAP. התפקיד הזה מאפשר רק לשנות את כללי המדיניות, ולא נותן גישה לאפליקציה.
אדמין של מדיניות IAP: מקבל הרשאות אדמין על כללי המדיניות של IAP.
משתמש של אפליקציית אינטרנט באבטחת IAP: מעניק גישה לאפליקציה ולמשאבי HTTPS אחרים שמשתמשים ב-IAP.
בודק אבטחה: נותן הרשאה לצפות בכללי המדיניות של IAP ולבצע בהם ביקורת.
כשמסיימים להוסיף כתובות אימייל ולהגדיר תפקידים, לוחצים על הוספה.
הסרת הגישה
- נכנסים לדף Identity-Aware Proxy.
כניסה לדף Identity-Aware Proxy - בוחרים את המשאב שמאובטח באמצעות IAP.
- ב-Info panel שבצד ימין, בוחרים את הקטע שמתאים לתפקיד שרוצים להסיר מהחשבון הראשי.
- בקטע המורחב, לצד כל שם של משתמש או קבוצה שרוצים להסיר את התפקיד שלהם, לוחצים על הסרה.
- בתיבת הדו-שיח Remove principal שמופיעה, לוחצים על Remove.
ניהול הגישה באמצעות ה-API
ב-IAM יש קבוצה סטנדרטית של שיטות ליצירה ולניהול של מדיניות בקרת גישה במשאבי Google Cloud .
משאבים והרשאות
באמצעות ה-API של IAP אפשר להחיל הרשאות IAM על משאבים ספציפיים בפרויקט שמאובטח באמצעות IAP. הרשאות IAM שניתנות ברמה מסוימת חלות על כל הרמות שמתחתיה. לדוגמה, הרשאה שניתנה ברמת הפרויקט חלה על כל המשאבים של Google Cloud בפרויקט. הגישה למשאבים ברמת הפרויקט וברמות גבוהות יותר מנוהלת בדף הניהול של IAM, אבל תוצג בדף הניהול של IAP.
המשתמשים צריכים הרשאות מסוימות כדי לגשת לאפליקציה שמאובטחת באמצעות IAP.
כדי להעניק את ההרשאות האלה, אדמינים יכולים להשתמש ב-API כדי לעדכן את מדיניות ה-IAM. ההרשאה iap.webServiceVersions.accessViaIAP נותנת למשתמשים גישה לאפליקציה. אם אתם משתמשים ב-IAP כדי לשלוט בגישה לשירותי ניהול כמו SSH ו-RDP, המשתמשים יצטרכו את ההרשאה iap.tunnelInstances.accessViaIAP.
לכל משאב IAP יש הרשאת getIamPolicy ו-setIamPolicy משלו, שמאפשרת לנהל את מדיניות הגישה של המשאב הזה ושל הצאצאים שלו.
כדי לשלוח קריאה ל-IAM API, יוצרים קריאה עם נתיב כתובת ה-URL למשאב. הדוגמה הבאה היא קריאה שמקבלת את מדיניות ה-IAM של גרסת שירות של אפליקציה ב-App Engine.
https://iap.googleapis.com/v1/projects/PROJECT_NUMBER/iap_web/
appengine-APP_ID/services/SERVICE_ID/versions/VERSION_ID:getIamPolicy
בטבלה הבאה מפורטים סוגי המשאבים הנתמכים, וגם ההרשאות שנדרשות כדי לשלוח קריאה ל-IAM API.
| סוג המשאב | הרשאות |
|---|---|
|
כל אפליקציית אינטרנט שמאובטחת באמצעות IAP בפרויקט האפשרות הזו זהה לתיבת הסימון כל שירותי האינטרנט בדף IAP. Path https://iap.googleapis.com/v1/projects/PROJECT_NUMBER/iap_web |
iap.web.getIamPolicyiap.web.setIamPolicy |
|
כל שירות לקצה העורפי בפרויקט האפשרות הזו זהה לתיבת הסימון שירות לקצה העורפי בדף IAP. נתיבים היקף גלובלי: https://iap.googleapis.com/v1/projects/ היקף אזורי: https://iap.googleapis.com/v1/projects/ |
iap.webTypes.getIamPolicyiap.webTypes.setIamPolicy |
|
כל כלל העברה בפרויקט הרשאות לכל כללי ההעברה בפרויקט. נתיבים היקף גלובלי: https://iap.googleapis.com/v1/projects/ היקף אזורי: https://iap.googleapis.com/v1/projects/ |
iap.webTypes.getIamPolicyiap.webTypes.setIamPolicy |
|
אזור לכל שירות Cloud Run בפרויקט הרשאות לכל שירותי Cloud Run באזור בפרויקט. Path https://iap.googleapis.com/v1/projects/ |
iap.webTypes.getIamPolicyiap.webTypes.setIamPolicy |
|
שירות Cloud Run הרשאות לשירות Cloud Run. כל שירותי Cloud Run הם אזוריים. Path https://iap.googleapis.com/v1/projects/ |
iap.webServices.getIamPolicyiap.webServices.setIamPolicy |
|
אפליקציית App Engine האפשרות הזו זהה לתיבת הסימון אפליקציית App Engine בדף IAP. Path https://iap.googleapis.com/v1/projects/ |
iap.webTypes.getIamPolicyiap.webTypes.setIamPolicy |
|
שירות לקצה העורפי של Compute Engine בנתיב של השירות לקצה העורפי אפשר לציין את מזהה השירות לקצה העורפי או את שם השירות לקצה העורפי. נתיבים היקף גלובלי: https://iap.googleapis.com/v1/projects/ היקף אזורי: https://iap.googleapis.com/v1/projects/ |
iap.webServices.getIamPolicyiap.webServices.setIamPolicy |
|
כלל העברה ב-Compute Engine הרשאות לכלל העברה. בנתיב של כלל ההעברה אפשר לציין את המזהה או את השם של כלל ההעברה. נתיבים היקף גלובלי: https://iap.googleapis.com/v1/projects/ היקף אזורי: https://iap.googleapis.com/v1/projects/ |
iap.webServices.getIamPolicyiap.webServices.setIamPolicy |
|
שירות של אפליקציית App Engine נתיב https://iap.googleapis.com/v1/projects/ |
iap.webServices.getIamPolicyiap.webServices.setIamPolicy |
|
גרסת שירות של App Engine ב-Compute Engine אין תמיכה בניהול גרסאות. Path https://iap.googleapis.com/v1/projects/ |
iap.webServiceVersions.getIamPolicyiap.webServiceVersions.setIamPolicy |
|
כל מכונה וירטואלית שמאובטחת באמצעות IAP בפרויקט האפשרות הזו זהה לתיבת הסימון All Tunnel Resources בדף IAP. Path https://iap.googleapis.com/v1/projects/ |
iap.tunnel.getIamPolicyiap.tunnel.setIamPolicy |
|
אזור שיש בו לפחות מכונה וירטואלית אחת זהה לתיבת הסימון של שם האזור בדף IAP, לדוגמה, us-central1-c.Path https://iap.googleapis.com/v1/projects/ |
iap.tunnelZones.getIamPolicyiap.tunnelZones.setIamPolicy |
|
מכונה וירטואלית ספציפית נתיב https://iap.googleapis.com/v1/projects/ |
iap.tunnelInstances.getIamPolicyiap.tunnelInstances.setIamPolicy |
אזור שיש בו לפחות קבוצת יעד אחת, לדוגמה, us-central1נתיב https://iap.googleapis.com/v1/projects/ |
iap.tunnelLocations.getIamPolicyiap.tunnelLocations.setIamPolicy |
|
קבוצת יעדים ספציפית נתיב https://iap.googleapis.com/v1/projects/ |
iap.tunnelDestGroups.getIamPolicyiap.tunnelDestGroups.setIamPolicy |
תפקידים
בטבלה הבאה מפורטים תפקידי IAM ב-IAP, עם רשימה תואמת של כל ההרשאות הספציפיות ל-IAP שכל תפקיד כולל. מידע נוסף על תפקידי IAM מופיע במאמר ניהול תפקידים והרשאות.
| תפקיד | כולל הרשאות | תיאור |
|---|---|---|
משתמש של אפליקציית אינטרנט באבטחת IAP (roles/iap.httpsResourceAccessor) |
iap.webServiceVersions.accessViaIAP |
נותן גישה למשאבים של App Engine ו-Compute Engine. |
משתמש מנהרה באבטחת IAP (roles/iap.tunnelResourceAccessor) |
iap.tunnelInstances.accessViaIAPiap.tunnelDestGroups.accessViaIAP |
נותן גישה למכונות וירטואליות שמאובטחות באמצעות IAP. |
אדמין של מדיניות IAP (roles/iap.admin) |
iap.web.getIamPolicyiap.web.setIamPolicyiap.webTypes.getIamPolicyiap.webTypes.setIamPolicyiap.webServices.getIamPolicyiap.webServices.setIamPolicyiap.webServiceVersions.getIamPolicyiap.webServiceVersions.setIamPolicyiap.tunnel.getIamPolicyiap.tunnel.setIamPolicyiap.tunnelZones.getIamPolicyiap.tunnelZones.setIamPolicyiap.tunnelInstances.getIamPolicyiap.tunnelInstances.setIamPolicy
|
מעניק זכויות אדמין ב-IAP לניהול כללי מדיניות הגישה של משאבים ב-IAP. |
ניהול הגישה באמצעות Google Cloud CLI
אפשר גם לנהל את הגישה באמצעות Google Cloud CLI.
מניעת גישה
כללי מדיניות הדחייה של ניהול זהויות והרשאות גישה (IAM) מאפשרים לכם להגדיר שכבות הגנה על הגישה למשאבים של Google Cloud . כאן מפורטים תרחישים לדוגמה שבהם כדאי להשתמש בכללי מדיניות דחייה.
אתם יכולים ליצור כללי מדיניות דחייה ולכלול בהם את כל ההרשאות של IAP. כדי לראות את רשימת ההרשאות של IAP שאפשר להוסיף למדיניות דחייה, חפשו את iap.googleapis.com במאמר ההרשאות שנתמכות בכללי מדיניות הדחייה. אפשר להחיל את כללי מדיניות הדחייה על כל הרשאה ב-IAP, אבל היעילות שלהם קשורה לנקודת הצירוף של מדיניות הדחייה.
חלק מההרשאות של IAP תקפות רק ברמת המשאב הספציפי שלהן, ולא בצאצאים שלו. לדוגמה, iap.organizations.getSettings נותן גישה ל-getSettings ברמת הארגון, ולא לצאצאים של הארגון. כלומר, כשיוצרים כללי מדיניות דחייה, האדמינים צריכים לציין במפורש את כל ההרשאות הפרטניות הרלוונטיות כדי לדחות את הגישה בנקודת החיבור ובצאצאים שלה.
ברשימה המלאה של ההרשאות שנתמכות בכללי מדיניות הדחייה אפשר לראות את כל ההרשאות הפרטניות האלה.
כל ההרשאות ב-FQDN iap.googleapis.com ובסוגי המשאבים iap.organizations, iap.folders, iap.projects, iap.web, iap.webTypes, iap.webServices, iap.webServicesVersions הן הרשאות פרטניות.
הדוגמה הבאה ממחישה מדיניות דחייה ב-IAM, שמונעת גישה ל-API של getSettings לחשבון משתמש בארגון ובצאצאים שלו.
{
"name": "policies/cloudresourcemanager.googleapis.com%2Forganizations%2F253519172624/denypolicies/testpolicyid",
"uid": "06ccd2eb-d2a5-5dd1-a746-eaf4c6g3f816",
"kind": "DenyPolicy",
"displayName": "Only project admins can delete projects.",
"etag": "MTc1MTkzMjY0MjUyMTExODMxMDQ=",
"createTime": "2021-09-07T23:15:35.258319Z",
"updateTime": "2021-09-07T23:15:35.258319Z",
"rules": [
{
"denyRule": {
"deniedPrincipals": [
"principalSet://goog/public:all"
],
"deniedPermissions": [
"iap.googleapis.com/iap.organizations.getSettings",
"iap.googleapis.com/iap.folders.getSettings",
"iap.googleapis.com/iap.projects.getSettings",
"iap.googleapis.com/iap.web.getSettings",
"iap.googleapis.com/iap.webTypes.getSettings",
"iap.googleapis.com/iap.webServices.getSettings",
"iap.googleapis.com/iap.webServicesVersions.getSettings",
],
}
}
]
}
במקום לציין את כל ההרשאות הפרטניות, הנה דוגמה למדיניות הדחייה ב-IAM עם הרשאה אחת בלבד: *.getSettings.
{
"name": "policies/cloudresourcemanager.googleapis.com%2Forganizations%2F253519172624/denypolicies/testpolicyid",
"uid": "06ccd2eb-d2a5-5dd1-a746-eaf4c6g3f816",
"kind": "DenyPolicy",
"displayName": "Only project admins can delete projects.",
"etag": "MTc1MTkzMjY0MjUyMTExODMxMDQ=",
"createTime": "2021-09-07T23:15:35.258319Z",
"updateTime": "2021-09-07T23:15:35.258319Z",
"rules": [
{
"denyRule": {
"deniedPrincipals": [
"principalSet://goog/public:all"
],
"deniedPermissions": [
"iap.googleapis.com/*.getSettings",
],
}
}
]
}
בהמשך מפורטות כמה דרכים פשוטות יותר ליצור מדיניות דחייה ב-IAM, בלי לציין את כל ההרשאות ברמת הפירוט.
| פעולת אדמין | הרשאה במדיניות דחייה |
|---|---|
| דחיית הרשאות ספציפיות של IAP בכל סוגי המשאבים של IAP | *.updateSettings *.getSettings *.setIamPolicy *.getIamPolicy |
| דחיית כל ההרשאות של IAP בסוג משאב ספציפי | iap.organizations.* iap.folders.* iap.projects.* iap.web.* iap.webTypes.* iap.webServices.* iap.webServicesVersions.* |
גישה ציבורית
כדי לתת לכולם גישה למשאב, צריך להקצות תפקיד לאחד מהחשבונות הראשיים הבאים:
allAuthenticatedUsers: כל מי שמאומת באמצעות חשבון Google או חשבון שירות.
allUsers: כל משתמש באינטרנט, כולל משתמשים מאומתים ולא מאומתים. הכותרת החתומה של הבקשה לא תכלול הצהרה מסוגsubאוemail.
אם ניתנה גישה ציבורית, IAP לא ייצור יומני ביקורת של Cloud לבקשה.
נכון לעכשיו, אי אפשר לשייך תנאי לקישורים שמעניקים גישה ציבורית.
לדוגמה, מדיניות שמאפשרת לכל אחד לגשת למשאב אם נתיב הבקשה מתחיל ב-/public/ היא לא חוקית.