בדף הזה מוסבר איך לנהל גישה של משתמשים פרטיים או קבוצות למשאבים מאובטחים באמצעות שרת proxy לאימות זהויות (IAP) ברמת המשאב.
סקירה כללית
אפשר להשתמש ב-IAP כדי להגדיר מדיניות IAP למשאבים בודדים ולמשאבי Cloud Run בפרויקט Google Cloud . לכל אפליקציה בפרויקט יכולה להיות מדיניות גישה שונה. זה כולל פרויקטים עם אפליקציות של Compute Engine, Google Kubernetes Engine ו-App Engine. באפליקציות של App Engine, אפשר להחיל מדיניות גישה שונה על גרסאות ושירותים נפרדים.
כדי לנהל גישה ברמת הפרויקט ומעלה, משתמשים בדף האדמין של IAM. רשימות של משתמשים שיש להם גישה (הגורמים הראשיים) ברמת הפרויקט חלות על כל המשאבים שמאובטחים באמצעות IAP בפרויקט.
לפני שמתחילים
לפני שמתחילים, צריך:
- משאב שמאובטח באמצעות IAP שאליו רוצים להוסיף גישה למשתמשים או לקבוצות.
- שמות של משתמשים או קבוצות שרוצים להוסיף להם גישה.
הפעלה והשבתה של רכישות מתוך האפליקציה
כדי להפעיל או להשבית את הרכישות מתוך האפליקציה, צריך הרשאות מסוימות. בטבלה הבאה מפורטות ההרשאות הנדרשות לכל סוג אפליקציה.
| סוג אפליקציה | נדרשת הרשאה |
|---|---|
| App Engine | appengine.applications.update |
| Compute Engine, Google Kubernetes Engine או Cloud Run | compute.backendServices.update |
ההרשאות האלה ניתנות על ידי תפקידים כמו 'עריכת פרויקט', 'אדמין של App Engine' ו'אדמין רשת של Compute'. התפקידים האלה מאפשרים להפעיל ולהשבית את הרכישות מתוך האפליקציה, אבל אין להם את ההרשאות שנדרשות לשינוי מדיניות הגישה.
בנוסף, יכול להיות שיהיה צורך בהרשאות clientauthconfig.clients.create, clientauthconfig.clients.update ו-clientauthconfig.clients.getWithSecret כדי להפעיל רכישות מתוך האפליקציה באמצעות Google Cloud המסוף. ההרשאות האלה ניתנות על ידי התפקיד Project Editor (עריכת פרויקט).
מידע נוסף על מתן תפקידים זמין במאמר הענקה, שינוי וביטול של הרשאות גישה.
ניהול הגישה במסוף Google Cloud
כדי לשלוט בגישה למשאב שמוגן על ידי IAP באמצעות מסוףGoogle Cloud , צריך לפעול לפי התהליך להוספה או להסרה של גישה.
הוספת גישה
עוברים אל הדף של שרת Proxy לאימות זהויות (IAP).
כניסה לדף 'שרת proxy לאימות זהויות (IAP)'בוחרים את המשאב שרוצים לאבטח באמצעות IAP. הבחירות הבאות של משאבים מאבטחות קבוצה מוגדרת של משאבים:
כל שירותי האינטרנט: כל המשאבים בפרויקט יהיו מאובטחים. חשוב לשים לב שההרשאה הזו שונה מהרשאת גישה ברמת הפרויקט שניתנת באמצעות דף האדמין של IAM. למשתמש שהוקצה לו התפקיד אדמין של מדיניות IAP ברמת המשאב All Web Services (כל שירותי האינטרנט) יהיו הרשאות רק למדיניות IAP.
שירותים לקצה העורפי: כל השירותים לקצה העורפי יהיו מאובטחים.
בחלונית המידע בצד שמאל, מוסיפים את כתובות האימייל של הקבוצות או של האנשים שרוצים להעניק להם תפקיד ב-IAM (הפלטפורמה לניהול זהויות והרשאות גישה) עבור המשאב.
כדי להחיל תפקידים של מדיניות גישה על החשבון הראשי, בוחרים תפקיד מהתפריט הנפתח Select a role:
בעלים: מקבל את אותה גישה כמו אדמין מדיניות IAP. במקומה, צריך להשתמש בתפקיד IAP Policy Admin. התפקיד הזה מאפשר רק לשנות מדיניות, ולא מעניק גישה לאפליקציה.
אדמין של מדיניות בנושא רכישות מתוך האפליקציה: מקבל הרשאות אדמין על מדיניות בנושא רכישות מתוך האפליקציה.
משתמש של אפליקציית אינטרנט באבטחת IAP: מעניקה גישה לאפליקציה ולמשאבי HTTPS אחרים שמשתמשים ב-IAP.
בודק אבטחה: מאפשר הרשאה לצפייה במדיניות IAP ולביצוע ביקורת עליה.
כשמסיימים להוסיף כתובות אימייל ולהגדיר תפקידים, לוחצים על הוספה.
הסרת הגישה
- עוברים אל הדף של שרת Proxy לאימות זהויות (IAP).
כניסה לדף 'שרת proxy לאימות זהויות (IAP)' - בוחרים את המשאב שמאובטח באמצעות IAP.
- בחלונית המידע בצד שמאל, בוחרים את הקטע שמתאים לתפקיד שרוצים להסיר מבעל הרשאה.
- בקטע המורחב, לצד השם של כל משתמש או קבוצה שרוצים להסיר מהם את התפקיד, לוחצים על הסרה.
- בתיבת הדו-שיח Remove principal שמופיעה, לוחצים על Remove.
ניהול הגישה באמצעות ה-API
ב-IAM יש קבוצה סטנדרטית של methods ליצירה ולניהול של כללי מדיניות לבקרת גישה במשאבים. 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 באזור בפרויקט. נתיב https://iap.googleapis.com/v1/projects/ |
iap.webTypes.getIamPolicyiap.webTypes.setIamPolicy |
| שירות Cloud Run הרשאות לשירות Cloud Run. כל השירותים של Cloud Run הם אזוריים. נתיב 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 |
| An App Engine service version Compute Engine doesn't support versioning. Path https://iap.googleapis.com/v1/projects/ |
iap.webServiceVersions.getIamPolicyiap.webServiceVersions.setIamPolicy |
| כל מכונה וירטואלית בפרויקט שמוגנת באמצעות IAP זהה לתיבת הסימון כל משאבי המנהרה בדף הניהול של IAP. Path https://iap.googleapis.com/v1/projects/ |
iap.tunnel.getIamPolicyiap.tunnel.setIamPolicy |
| אזור שיש בו לפחות מכונה וירטואלית אחת זהה לתיבת הסימון של שם האזור בדף הניהול של IAP, לדוגמה, us-central1-c. נתיב 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 ברמת הארגון ולא לצאצאים של הארגון. המשמעות היא שאדמינים צריכים לפרט במפורש את כל ההרשאות הרלוונטיות ברמת הגרנולריות כשיוצרים מדיניות דחייה כדי לדחות גישה בנקודת צירוף ובצאצאים שלה.
רשימה מלאה של הרשאות גרנולריות כאלה זמינה במאמר ההרשאות שנתמכות בכללי מדיניות הדחייה.
כל ההרשאות תחת שם הדומיין שמוגדר במלואו 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.organizations.* iap.folders.* iap.projects.* iap.web.* iap.webTypes.* iap.webServices.* iap.webServicesVersions.* |
גישה ציבורית
כדי לתת לכולם גישה למשאב, צריך להקצות תפקיד לאחד מהחשבונות הראשיים הבאים:
-
allAuthenticatedUsers: כל מי שעבר אימות באמצעות חשבון Google או חשבון שירות. -
allUsers: כל משתמש באינטרנט, כולל משתמשים מאומתים ולא מאומתים. בכותרת החתומה של הבקשה לא יהיהsubאוemailclaim.
אם ניתנת גישה ציבורית, IAP לא ייצור יומנים של יומני הביקורת של Cloud עבור הבקשה.
בשלב הזה, לא ניתן לשייך תנאי לקשירות שמעניקות גישה ציבורית.
לדוגמה, מדיניות שמאפשרת לכל אחד גישה למשאב אם נתיב הבקשה מתחיל ב-/public/ היא לא תקינה.