פותר הבעיות שקשורות למדיניות עוזר לכם להבין אם לחשבון משתמש יש גישה למשאב. פותר הבעיות שקשורות למדיניות בודק את מדיניות ההרשאות, מדיניות הדחייה והמדיניות לקביעת גבול הגישה לחשבונות משתמשים (PAB) שמשפיעות על הגישה של חשבון המשתמש למשאב מסוים. לאחר מכן, הוא יגיד לכם אם, על סמך המדיניות הזו, לחשבון המשתמש יש את ההרשאה שצוינה כדי לגשת למשאב. הוא גם מפרט את כללי המדיניות הרלוונטיים ומסביר איך הם משפיעים על הגישה של חשבון המשתמש.
אפשר לגשת לפותר הבעיות שקשורות למדיניות באמצעותGoogle Cloud המסוף, Google Cloud CLI או API בארכיטקטורת REST. בדרך כלל, הכי מהר להשתמש במסוף Google Cloud כדי להריץ שאילתות בסיסיות. לתרחישים מורכבים יותר, כדאי להשתמש ב-CLI של gcloud או ב-API בארכיטקטורת REST.
לפני שמתחילים
-
מפעילים את Policy Troubleshooter API, אם הוא עדיין לא מופעל.
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, נדרשת ההרשאה
serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד 'בעלים' (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד 'אדמין בממשק Service Usage' (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים
ההרשאות הנדרשות
כדי לפתור בעיות שקשורות לגישה של חשבונות משתמשים באופן מלא, אתם צריכים את ההרשאות הבאות.
הרשאות לפתרון בעיות בגישה של גורמים ספציפיים
פותר הבעיות שקשורות למדיניות מנתח את הגישה של חשבון משתמש למשאב על סמך מדיניות ההרשאה, מדיניות הדחייה, המדיניות לקביעת גבול הגישה לחשבונות משתמשים (PAB) והתפקידים שיש לכם הרשאה לצפות בהם. אם אין לכם הרשאה לצפות במדיניות שחלה על משאב, או שאין לכם הרשאה לצפות בתפקיד מותאם אישית, יכול להיות שלא תוכלו לדעת אם לחשבון המשתמש יש גישה.
הרשאות לפתרון בעיות בכללים של מדיניות האישור והדחייה
כדי לפתור בעיות שקשורות למדיניות הרשאות ולמדיניות דחייה, אתם צריכים הרשאות בארגון שמכיל את המשאב שרוצים לפתור בו בעיות. ההרשאות האלה מאפשרות לכם לראות את כללי מדיניות ההרשאות והדחייה ששולטים בגישה למשאב.
כדי לקבל את ההרשאות שדרושות לפתרון בעיות בגישה של גורם ראשי, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים בארגון שמכיל את המשאב שעבורו אתם רוצים לפתור בעיות בגישה:
- בודק אבטחה (
roles/iam.securityReviewer) -
פתרון בעיות שקשורות לכללי מדיניות הדחייה:
דחיית סוקר (
roles/iam.denyReviewer) -
פתרון בעיות במדיניות שכוללת קישורים לקבוצות של חשבונות שירות:
דפדפן (
roles/browser) -
משתמשים ב-Google Cloud CLI כדי לפתור בעיות:
Service Usage Consumer (
roles/serviceusage.serviceUsageConsumer)
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
אם אין לכם הרשאה לצפות בכללי מדיניות ההרשאה והדחייה של משאב, תוצאות הגישה של כללי מדיניות ההרשאה והדחייה האלה הן Unknown.
הרשאות לפתרון בעיות במדיניות לקביעת גבול הגישה לחשבונות משתמשים (PAB)
כדי לפתור בעיות שקשורות למדיניות לקביעת גבול הגישה לחשבונות משתמשים (PAB), צריך הרשאות בארגון שקבוצת החשבונות הראשיים שלו כוללת את החשבון הראשי. הדרך שבה מזהים את הארגון הזה תלויה בסוג הגורם המורשה:
- חשבונות Google וקבוצות Google: הארגון שמשויך לדומיין Google Workspace שכולל את הגורם הראשי
- זהויות מאוחדות (זהויות במאגרי זהויות של כוח עבודה או במאגרי זהויות של עומסי עבודה): הארגון שמכיל את מאגר הזהויות שכולל את הגורם הראשי
- חשבונות שירות: הארגון שמכיל את הפרויקט שבו נוצר חשבון השירות
- זהויות של נציגים: הארגון שמכיל את הפרויקט שבו נוצר הנציג
ההרשאות האלה מאפשרות לכם לראות את המדיניות לקביעת גבול הגישה לחשבונות משתמשים (PAB), שקובעת למה יש לחשבון המשתמש גישה.
כדי לקבל את ההרשאות שדרושות לפתרון בעיות בגישה של גורם ראשי, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים בארגון המתאים:
- צפייה במדיניות לקביעת גבול הגישה לחשבונות משתמשים (PAB) (
roles/iam.principalAccessBoundaryViewer) -
פתרון בעיות במדיניות של הגבלת הגישה לישויות מורשות שקשורה לקבוצת הישויות המורשות של פרויקט, תיקייה או ארגון, או שקשורה לזהויות של סוכנים: אדמין ארגוני (
roles/resourcemanager.organizationAdmin) -
פתרון בעיות במדיניות של גבולות גישה של ישויות שקשורות לדומיינים של Google Workspace:
אדמין IAM של מאגר Workspace (
roles/iam.workspacePoolAdmin) -
פתרון בעיות במדיניות של גבולות גישה של חשבונות ראשיים שמשויכת למאגרי זהויות של כוח עבודה:
אדמין של מאגר זהויות של כוח עבודה ב-IAM (
roles/iam.workforcePoolAdmin) -
פתרון בעיות במדיניות של גבולות גישה של חשבונות ראשיים שקשורים למאגרי זהויות של עומסי עבודה:
אדמין של מאגר זהויות של כוח עבודה ב-IAM (
roles/iam.workloadIdentityPoolAdmin)
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
אם אין לכם הרשאה לצפות במדיניות לקביעת גבול הגישה לחשבונות משתמשים שחלה על חשבון משתמש, תוצאות הגישה של המדיניות לקביעת גבול הגישה לחשבונות משתמשים הן Unknown.
הרשאות לפתרון בעיות גישה לחברי קבוצה
אם מדיניות ההרשאה והדחייה שלכם כוללת קבוצות, אתם צריכים את הרשאת Google Workspace Admin API groups.read כדי לפתור בעיות גישה של חברים ספציפיים בקבוצה. סופר-אדמינים ואדמינים של קבוצות מקבלים את ההרשאה הזו באופן אוטומטי. כדי לתת את ההרשאה הזו למשתמש שהוא לא סופר-אדמין או אדמין בקבוצה, צריך ליצור תפקיד אדמין מותאם אישית ב-Google Workspace שכולל את ההרשאה groups.read (שנמצאת בקטע הרשאות Admin API) ולהקצות אותה למשתמש.
אם אין לכם את ההרשאות האלה, התוצאה של הגישה לקישורים בין תפקידים ולכללי דחייה שמכילים קבוצות או דומיינים היא Unknown, אלא אם הקישור בין התפקידים או כלל הדחייה כולל גם את חשבון המשתמש באופן מפורש.
הרשאות לפתרון בעיות בגישה של חברים בדומיין
אם מדיניות ההרשאה והדחייה שלכם כוללת חשבון Google Workspace או דומיין Cloud Identity, אתם צריכים להיות אדמינים בדומיין כדי לפתור בעיות בגישה של חברים ספציפיים בדומיין.
אם אין לכם את ההרשאות האלה, התוצאה של הגישה לקישורים בין תפקידים ולכללי דחייה שמכילים קבוצות או דומיינים היא Unknown, אלא אם הקישור בין התפקידים או כלל הדחייה כולל גם את חשבון המשתמש באופן מפורש.
פתרון בעיות בגישה
כדי לפתור בעיות שקשורות לגישה, צריך לדעת את החשבון הראשי, המשאב וההרשאה שרוצים לבדוק. אפשר לקבל את המידע הזה באמצעות מזהה שגיאה:
Error ID: מזהה ייחודי של הודעת שגיאה בנושא הרשאות. מזהה השגיאה מספק הקשר לשגיאה, כולל החשבון, המשאב, ההרשאה ותנאי ה-IAM הנתמכים. מזהה שגיאה שקשור ל-Agent Identity מספק הקשר ל-Agent Identity ולתלונות שלו, כמו פלטפורמה וקונטיינר.
התנאים הנתמכים ב-IAM כוללים את
principal.typeו-principal.subject.
אם אין לכם מזהה שגיאה, תוכלו לפתור את בעיית הגישה באמצעות המידע הבא:
הזהות העיקרית: הזהות שצריך לבדוק. אפשר להזין את אחת מהאפשרויות הבאות:
כתובת אימייל: צריכה להתייחס למשתמש, לחשבון שירות יחיד או לקבוצת חשבונות שירות.
מזהה זהות הסוכן: צריך להיות בפורמט הבא:
TRUST_DOMAIN/resources/SERVICE/RESOURCE_PATH.לדוגמה:
agents.global.org-123456789012.system.id.goog/resources/aiplatform/projects/9876543210/locations/us-central1/reasoningEngines/my-test-agentפותר הבעיות שקשורות למדיניות מחלץ את מאפייני הפלטפורמה וקונטיינר המשאבים ממחרוזת הנושא של הסוכן באמצעות התבנית הרגילה
resources/{platform}/projects/{project_number}/.... אם סוכן משתמש בפורמט נושא לא סטנדרטי, פותר הבעיות שקשורות למדיניות לא יכול לגזור את המאפיינים שלו, והערך של קשרי איגוד של קבוצות חשבונות משתמשים שמבוססים על מאפיינים הואUnknown.אם לסוכן אין הרשאות גישה שמוגדרות במדיניות ההרשאה, פותר הבעיות הקשורות למדיניות יחזיר את מצב הגישה
UNKNOWN_INFOולאNOT_GRANTED.המזהים כוללים את הרכיבים הבאים:
TRUST_DOMAIN: הדומיין המהימן של הארגון (לדוגמה,agents.global.org-123456789012.system.id.goog)
SERVICE: השם המקוצר של שירות Google Cloud(לדוגמה,aiplatformאוdiscoveryengine)RESOURCE_PATH: הנתיב המלא למשאב שמארח את הסוכן
אין תמיכה בסוגים אחרים של חשבונות משתמש, כולל קבוצות, דומיינים, זהויות של כוח העבודה וזהויות של עומסי עבודה.
משאב: השם המלא של המשאב שרוצים לפתור את בעיית הגישה אליו. לדוגמה, כדי לפתור בעיות בגישה לפרויקט
my-project, מזינים//cloudresourcemanager.googleapis.com/projects/my-project. דוגמאות לשמות מלאים של משאבים מסוגים אחרים מופיעות במאמר דוגמאות לשמות מלאים של משאבים.הרשאה: ההרשאה לבדיקה. אם משתמשים במסוףGoogle Cloud , מוצגת רשימה של הצעות בזמן ההקלדה.
כדי לפתור בעיה שקשורה להרשאה, ההרשאה צריכה להיות רלוונטית למשאב שבבקשה. במילים אחרות, צריך להיות אפשר להשתמש בהרשאה הזו כדי לגשת למשאב בדרך כלשהי. אם ההרשאה לא רלוונטית למשאב, הבקשה תיכשל. לדוגמה, אם מנסים לפתור בעיות בהרשאה
compute.instances.getבאשכול Google Kubernetes Engine, הבקשה תיכשל כי אי אפשר להשתמש בהרשאהcompute.instance.getכדי לגשת לאשכולות Google Kubernetes Engine.רשימה מלאה של ההרשאות זמינה במאמרי העזרה בנושא הרשאות.
המסוף
כדי לפתור בעיות בגישה:
במסוף Google Cloud , עוברים לדף פותר הבעיות שקשורות למדיניות.
אם יש לכם מזהה שגיאה, בוחרים באפשרות מזהה שגיאה ומזינים אותו.
אם אין לכם מזהה שגיאה, בוחרים באפשרות ידני.
מזינים את כתובת האימייל של הישות המורשית או את מזהה Agent Identity שרוצים לבדוק את הגישה שלו.
מזינים את השם המלא של המשאב שרוצים לבדוק.
אם אתם לא יודעים את השם המלא של המשאב, אתם יכולים לבצע אחת מהפעולות הבאות:
- אם אתם מנסים לפתור בעיות גישה לפרויקט, לתיקייה או לארגון, תוכלו להתחיל להקליד כדי לראות אפשרויות להשלמה אוטומטית.
אם אתם מנסים לפתור בעיות בגישה לסוג אחר של משאב, לוחצים על עיון כדי לפתוח את תיבת הדו-שיח של חיפוש המשאבים, ואז מחפשים את המשאב:
- בתיבה Select scope, בוחרים פרויקט, תיקייה או ארגון לחיפוש.
- בתיבה Resource type, בוחרים את סוגי המשאבים שרוצים לחפש.
- בתיבה חיפוש משאבים, מזינים חלק משם המשאב.
- בקטע התוצאות, בוחרים את המשאב שרוצים לבדוק.
- לוחצים על בחירה כדי לבחור את המשאב ולסגור את תיבת הדו-שיח.
מזינים את ההרשאה שרוצים לבדוק.
אם אתם לא יודעים את השם המלא של ההרשאה, מתחילים להקליד כדי לראות אפשרויות להשלמה אוטומטית.
אופציונלי: כדי לבדוק כמה משאבים והרשאות, לוחצים על הוספת עוד זוג וחוזרים על השלב הקודם.
לוחצים על בדיקת הגישה.
gcloud
כדי לגלות למה לישות יש או אין הרשאת IAM, משתמשים בפקודה gcloud beta policy-troubleshoot iam.
לפני השימוש בנתוני הפקודה הבאים, צריך להחליף את הנתונים הבאים:
-
VERSION: אופציונלי. הגרסה של הפקודה שבה רוצים להשתמש. כדי לפתור בעיות בגישה שמבוססת רק על כללי מדיניות האישור והדחייה, אל תציינו גרסה. כדי לפתור בעיות בגישה על סמך מדיניות הרשאה, מדיניות דחייה ומדיניות לקביעת גבול הגישה לחשבונות משתמשים (PAB), צריך להשתמש בגרסהbeta. EMAIL: כתובת האימייל של חשבון המשתמש שרוצים לפתור בעיות בהרשאות שלו. עבור Agent Identity, עליך לספק במקום זאת את המזהה של הישות המורשית.-
RESOURCE: המשאב שעליו ניתנת ההרשאה. -
PERMISSION: ההרשאה שרוצים לפתור את הבעיה שלה.
מריצים את הפקודה gcloud beta policy-troubleshoot iam:
Linux, macOS או Cloud Shell
gcloud VERSION policy-intelligence troubleshoot-policy iam RESOURCE --principal-email=EMAIL \ --permission=PERMISSION
Windows (PowerShell)
gcloud VERSION policy-intelligence troubleshoot-policy iam RESOURCE --principal-email=EMAIL ` --permission=PERMISSION
Windows (cmd.exe)
gcloud VERSION policy-intelligence troubleshoot-policy iam RESOURCE --principal-email=EMAIL ^ --permission=PERMISSION
אמורים לקבל תגובה שדומה לזו:
תשובה
{
"accessTuple": {
"conditionContext": {
"destination": {},
"effectiveTags": [
{
"namespacedTagKey": "project-1/tag-key-1",
"namespacedTagValue": "project-1/tag-key-1/tag-value-1",
"tagKey": "tagKeys/123456789012",
"tagKeyParentName": "projects/123456789012",
"tagValue": "tagValues/123456789012"
},
],
"request": {},
"resource": {}
},
"fullResourceName": "//cloudresourcemanager.googleapis.com/projects/project-1",
"permission": "bigtable.instances.create",
"permissionFqdn": "bigtable.googleapis.com/instances.create",
"principal": "service-account-3@project-1.iam.gserviceaccount.com"
},
"allowPolicyExplanation": {
"allowAccessState": "ALLOW_ACCESS_STATE_NOT_GRANTED",
"explainedPolicies": [
{
"allowAccessState": "ALLOW_ACCESS_STATE_NOT_GRANTED",
"bindingExplanations": [
{
"allowAccessState": "ALLOW_ACCESS_STATE_NOT_GRANTED",
"combinedMembership": {
"membership": "MEMBERSHIP_NOT_MATCHED",
"relevance": "HEURISTIC_RELEVANCE_NORMAL"
},
"condition": {
"expression": "resource.type == \"cloudresourcemanager.googleapis.com/Project\"",
"title": "Resource-based condition"
},
"conditionExplanation": {
"evaluationStates": [
{
"end": 62,
"value": false
}
],
"value": false
},
"memberships": {
"serviceAccount:service-account-1@project-1.iam.gserviceaccount.com": {
"membership": "MEMBERSHIP_NOT_MATCHED",
"relevance": "HEURISTIC_RELEVANCE_NORMAL"
}
},
"relevance": "HEURISTIC_RELEVANCE_NORMAL",
"role": "roles/bigquery.admin",
"rolePermission": "ROLE_PERMISSION_NOT_INCLUDED",
"rolePermissionRelevance": "HEURISTIC_RELEVANCE_NORMAL"
},
{
"allowAccessState": "ALLOW_ACCESS_STATE_NOT_GRANTED",
"combinedMembership": {
"membership": "MEMBERSHIP_NOT_MATCHED",
"relevance": "HEURISTIC_RELEVANCE_NORMAL"
},
"condition": {
"expression": "resource.matchTag(\"project-1/tag-key-1\", \"tag-value-1\")",
"title": "Tag-based condition"
},
"conditionExplanation": {
"evaluationStates": [
{
"end": 73,
"value": true
}
],
"value": true
},
"memberships": {
"serviceAccount:service-account-2@project-1.iam.gserviceaccount.com": {
"membership": "MEMBERSHIP_NOT_MATCHED",
"relevance": "HEURISTIC_RELEVANCE_NORMAL"
}
},
"relevance": "HEURISTIC_RELEVANCE_NORMAL",
"role": "roles/bigquery.admin",
"rolePermission": "ROLE_PERMISSION_NOT_INCLUDED",
"rolePermissionRelevance": "HEURISTIC_RELEVANCE_NORMAL"
},
{
"allowAccessState": "ALLOW_ACCESS_STATE_NOT_GRANTED",
"combinedMembership": {
"membership": "MEMBERSHIP_NOT_MATCHED",
"relevance": "HEURISTIC_RELEVANCE_NORMAL"
},
"memberships": {
"user:user-2@example.com": {
"membership": "MEMBERSHIP_NOT_MATCHED",
"relevance": "HEURISTIC_RELEVANCE_NORMAL"
}
},
"relevance": "HEURISTIC_RELEVANCE_NORMAL",
"role": "roles/compute.admin",
"rolePermission": "ROLE_PERMISSION_NOT_INCLUDED",
"rolePermissionRelevance": "HEURISTIC_RELEVANCE_NORMAL"
},
{
"allowAccessState": "ALLOW_ACCESS_STATE_NOT_GRANTED",
"combinedMembership": {
"membership": "MEMBERSHIP_NOT_MATCHED",
"relevance": "HEURISTIC_RELEVANCE_NORMAL"
},
"memberships": {
"user:user-1@example.com": {
"membership": "MEMBERSHIP_NOT_MATCHED",
"relevance": "HEURISTIC_RELEVANCE_NORMAL"
},
"user:user-3@example.com": {
"membership": "MEMBERSHIP_NOT_MATCHED",
"relevance": "HEURISTIC_RELEVANCE_NORMAL"
}
},
"relevance": "HEURISTIC_RELEVANCE_NORMAL",
"role": "roles/iam.serviceAccountTokenCreator",
"rolePermission": "ROLE_PERMISSION_NOT_INCLUDED",
"rolePermissionRelevance": "HEURISTIC_RELEVANCE_NORMAL"
},
{
"allowAccessState": "ALLOW_ACCESS_STATE_NOT_GRANTED",
"combinedMembership": {
"membership": "MEMBERSHIP_NOT_MATCHED",
"relevance": "HEURISTIC_RELEVANCE_NORMAL"
},
"memberships": {
"user:user-2@example.com": {
"membership": "MEMBERSHIP_NOT_MATCHED",
"relevance": "HEURISTIC_RELEVANCE_NORMAL"
},
"user:user-1@example.com": {
"membership": "MEMBERSHIP_NOT_MATCHED",
"relevance": "HEURISTIC_RELEVANCE_NORMAL"
}
},
"relevance": "HEURISTIC_RELEVANCE_HIGH",
"role": "roles/owner",
"rolePermission": "ROLE_PERMISSION_INCLUDED",
"rolePermissionRelevance": "HEURISTIC_RELEVANCE_HIGH"
},
{
"allowAccessState": "ALLOW_ACCESS_STATE_NOT_GRANTED",
"combinedMembership": {
"membership": "MEMBERSHIP_MATCHED",
"relevance": "HEURISTIC_RELEVANCE_NORMAL"
},
"memberships": {
"serviceAccount:service-account-3@project-1.iam.gserviceaccount.com": {
"membership": "MEMBERSHIP_MATCHED",
"relevance": "HEURISTIC_RELEVANCE_NORMAL"
},
"serviceAccount:service-account-4@project-1.iam.gserviceaccount.com": {
"membership": "MEMBERSHIP_NOT_MATCHED",
"relevance": "HEURISTIC_RELEVANCE_NORMAL"
}
},
"relevance": "HEURISTIC_RELEVANCE_NORMAL",
"role": "roles/resourcemanager.projectIamAdmin",
"rolePermission": "ROLE_PERMISSION_NOT_INCLUDED",
"rolePermissionRelevance": "HEURISTIC_RELEVANCE_NORMAL"
},
{
"allowAccessState": "ALLOW_ACCESS_STATE_NOT_GRANTED",
"combinedMembership": {
"membership": "MEMBERSHIP_NOT_MATCHED",
"relevance": "HEURISTIC_RELEVANCE_NORMAL"
},
"memberships": {
"serviceAccount:service-account-4@project-1.iam.gserviceaccount.com": {
"membership": "MEMBERSHIP_NOT_MATCHED",
"relevance": "HEURISTIC_RELEVANCE_NORMAL"
}
},
"relevance": "HEURISTIC_RELEVANCE_NORMAL",
"role": "roles/resourcemanager.tagViewer",
"rolePermission": "ROLE_PERMISSION_NOT_INCLUDED",
"rolePermissionRelevance": "HEURISTIC_RELEVANCE_NORMAL"
}
],
"fullResourceName": "//cloudresourcemanager.googleapis.com/projects/project-1",
"policy": {
"bindings": [
{
"condition": {
"expression": "resource.type == \"cloudresourcemanager.googleapis.com/Project\"",
"title": "Resource-based condition"
},
"members": [
"serviceAccount:service-account-1@project-1.iam.gserviceaccount.com"
],
"role": "roles/bigquery.admin"
},
{
"condition": {
"expression": "resource.matchTag(\"project-1/tag-key-1\", \"tag-value-1\")",
"title": "Tag-based condition"
},
"members": [
"serviceAccount:service-account-2@project-1.iam.gserviceaccount.com"
],
"role": "roles/bigquery.admin"
},
{
"members": [
"user:user-2@example.com"
],
"role": "roles/compute.admin"
},
{
"members": [
"user:user-1@example.com",
"user:user-3@example.com"
],
"role": "roles/iam.serviceAccountTokenCreator"
},
{
"members": [
"user:user-2@example.com",
"user:user-1@example.com"
],
"role": "roles/owner"
},
{
"members": [
"serviceAccount:service-account-3@project-1.iam.gserviceaccount.com",
"serviceAccount:service-account-4@project-1.iam.gserviceaccount.com"
],
"role": "roles/resourcemanager.projectIamAdmin"
},
{
"members": [
"serviceAccount:service-account-4@project-1.iam.gserviceaccount.com"
],
"role": "roles/resourcemanager.tagViewer"
}
],
"etag": "BwYY6ttEMEY=",
"version": 3
},
"relevance": "HEURISTIC_RELEVANCE_HIGH"
},
],
"relevance": "HEURISTIC_RELEVANCE_HIGH"
},
"denyPolicyExplanation": {
"denyAccessState": "DENY_ACCESS_STATE_NOT_DENIED",
"explainedResources": [
{
"denyAccessState": "DENY_ACCESS_STATE_NOT_DENIED",
"explainedPolicies": [
{
"denyAccessState": "DENY_ACCESS_STATE_NOT_DENIED",
"policy": {
"createTime": "2024-04-09T23:28:24.103203Z",
"displayName": "Troubleshooter v3 prober non-tag deny policy",
"etag": "MTgyMzk3MDY4OTY4MDE0ODg4OTY=",
"kind": "DenyPolicy",
"name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F546942305807/denypolicies/deny-policy-1",
"rules": [
{
"denyRule": {
"deniedPermissions": [
"bigquery.googleapis.com/datasets.create"
],
"deniedPrincipals": [
"principal://iam.googleapis.com/projects/-/serviceAccounts/service-account-1@project-1.iam.gserviceaccount.com"
]
}
}
],
"uid": "fab63b4d-ecfb-5f06-8a6d-602bf1be5062",
"updateTime": "2024-05-20T23:29:38.428095Z"
},
"relevance": "HEURISTIC_RELEVANCE_HIGH",
"ruleExplanations": [
{
"combinedDeniedPermission": {
"permissionMatchingState": "PERMISSION_PATTERN_NOT_MATCHED",
"relevance": "HEURISTIC_RELEVANCE_HIGH"
},
"combinedDeniedPrincipal": {
"membership": "MEMBERSHIP_NOT_MATCHED",
"relevance": "HEURISTIC_RELEVANCE_HIGH"
},
"combinedExceptionPermission": {
"permissionMatchingState": "PERMISSION_PATTERN_NOT_MATCHED",
"relevance": "HEURISTIC_RELEVANCE_NORMAL"
},
"combinedExceptionPrincipal": {
"membership": "MEMBERSHIP_NOT_MATCHED",
"relevance": "HEURISTIC_RELEVANCE_NORMAL"
},
"deniedPermissions": {
"bigquery.googleapis.com/datasets.create": {
"permissionMatchingState": "PERMISSION_PATTERN_NOT_MATCHED",
"relevance": "HEURISTIC_RELEVANCE_HIGH"
}
},
"deniedPrincipals": {
"principal://iam.googleapis.com/projects/-/serviceAccounts/service-account-1@project-1.iam.gserviceaccount.com": {
"membership": "MEMBERSHIP_NOT_MATCHED",
"relevance": "HEURISTIC_RELEVANCE_HIGH"
}
},
"denyAccessState": "DENY_ACCESS_STATE_NOT_DENIED",
"relevance": "HEURISTIC_RELEVANCE_HIGH"
}
]
},
],
"fullResourceName": "//cloudresourcemanager.googleapis.com/projects/123456789012",
"relevance": "HEURISTIC_RELEVANCE_HIGH"
}
],
"permissionDeniable": true,
"relevance": "HEURISTIC_RELEVANCE_NORMAL"
},
"overallAccessState": "CANNOT_ACCESS",
"pabPolicyExplanation": {
"explainedBindingsAndPolicies": [
{
"bindingAndPolicyAccessState": "PAB_ACCESS_STATE_NOT_ENFORCED",
"explainedPolicy": {
"explainedRules": [
{
"combinedResourceInclusionState": "RESOURCE_INCLUSION_STATE_NOT_INCLUDED",
"effect": "ALLOW",
"explainedResources": [
{
"relevance": "HEURISTIC_RELEVANCE_NORMAL",
"resource": "//cloudresourcemanager.googleapis.com/projects/project-2",
"resourceInclusionState": "RESOURCE_INCLUSION_STATE_NOT_INCLUDED"
}
],
"relevance": "HEURISTIC_RELEVANCE_NORMAL",
"ruleAccessState": "PAB_ACCESS_STATE_NOT_ALLOWED"
}
],
"policy": {
"createTime": "2024-04-09T17:40:51.627668Z",
"details": {
"enforcementVersion": "1",
"rules": [
{
"effect": "ALLOW",
"resources": [
"//cloudresourcemanager.googleapis.com/projects/project-2"
]
}
]
},
"displayName": "Troubleshooter v3 PAB Policy",
"etag": "m64s4IgR80eDJDywuVA2DA==",
"name": "organizations/123456789012/locations/global/principalAccessBoundaryPolicies/example-pab-policy",
"uid": "puid_11875429267422576641",
"updateTime": "2024-04-09T17:40:51.627668Z"
},
"policyAccessState": "PAB_ACCESS_STATE_NOT_ENFORCED",
"policyVersion": {
"enforcementState": "PAB_POLICY_ENFORCEMENT_STATE_NOT_ENFORCED",
"version": 1
},
"relevance": "HEURISTIC_RELEVANCE_NORMAL"
},
"explainedPolicyBinding": {
"conditionExplanation": {
"evaluationStates": [
{
"end": 53,
"value": true
},
{
"end": 153,
"start": 58,
"value": false
},
{
"end": 248,
"start": 157,
"value": false
}
],
"value": false
},
"policyBinding": {
"condition": {
"expression": "principal.type == 'iam.googleapis.com/ServiceAccount' && (principal.subject=='service-account-1@project-1.iam.gserviceaccount.com' || principal.subject=='service-account-2@project-1.iam.gserviceaccount.com')"
},
"createTime": "2024-04-09T17:51:13.504418Z",
"displayName": "PAB Policy Binding on project-1 project",
"etag": "W/\"hz9IKzHsIqvopqDRcVYDxQ==\"",
"name": "projects/123456789012/locations/global/policyBindings/example-policy-binding",
"policy": "organizations/123456789012/locations/global/principalAccessBoundaryPolicies/example-pab-policy",
"policyKind": "PRINCIPAL_ACCESS_BOUNDARY",
"policyUid": "puid_11875429267422576641",
"target": {
"principalSet": "//cloudresourcemanager.googleapis.com/projects/project-1"
},
"uid": "buid_1012746966204940289",
"updateTime": "2024-05-09T23:08:56.846355Z"
},
"policyBindingState": "POLICY_BINDING_STATE_NOT_ENFORCED",
"relevance": "HEURISTIC_RELEVANCE_NORMAL"
},
"relevance": "HEURISTIC_RELEVANCE_NORMAL"
}
],
"principalAccessBoundaryAccessState": "PAB_ACCESS_STATE_NOT_ENFORCED",
"relevance": "HEURISTIC_RELEVANCE_NORMAL"
}
}
REST
כדי לגלות למה לחשבון משתמש יש או אין הרשאת IAM, משתמשים ב-method iam.troubleshoot של ה-API של פותר הבעיות שקשורות למדיניות.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
VERSION: גרסת ה-API שבה ייעשה שימוש בבקשה הזו. כדי לפתור בעיות בגישה על סמך מדיניות ההרשאות והדחייה בלבד, משתמשים ב-v3. כדי לפתור בעיות בגישה על סמך מדיניות ההרשאות, הדחייה והגישה לישויות מורשות, משתמשים בv3beta. EMAIL: כתובת האימייל של חשבון המשתמש שרוצים לפתור בעיות בהרשאות שלו. עבור Agent Identity, עליך לספק במקום זאת את המזהה של הישות המורשית.-
RESOURCE: המשאב שעליו ניתנת ההרשאה. -
PERMISSION: ההרשאה שרוצים לפתור את הבעיה שלה. -
PROJECT_ID: המזהה של הפרויקט שבו רוצים להשתמש כדי לשלוח את הבקשה. מזהי פרויקטים הם מחרוזות אלפאנומריות, כמוmy-project.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://policytroubleshooter.googleapis.com/VERSION/iam:troubleshoot
תוכן בקשת JSON:
{
"accessTuple": {
"principal": "EMAIL",
"fullResourceName": "RESOURCE",
"permission": "PERMISSION"
}
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
הסבר על התוצאות של פותר הבעיות
המסוף
דף התוצאות מכיל את המידע הבא:
- פרטי ההערכה
- פרטי המדיניות, שכוללים את הפרטים הבאים:
פרטי ההערכה
בקטע פרטי ההערכה מופיע סיכום של הגישה שאתם מנסים לפתור, כולל הגורם המורשה, המשאב וההרשאה שצוינו. אם אתם מנסים לפתור בעיות בכמה צמדים של הרשאות למשאבים, אתם יכולים להשתמש ברשימה Access Evaluation כדי לעבור ביניהם.

פרטי המדיניות
בקטע פרטי המדיניות מפורטות ההשפעות של מדיניות ההרשאה, הדחייה והגבלת הגישה לחשבונות משתמשים על הגישה של חשבון המשתמש.
מדיניות רלוונטית לקביעת גבול הגישה לחשבונות משתמשים כוללת את כל המדיניות לקביעת גבול הגישה לחשבונות משתמשים שמקושרת לקבוצת חשבונות משתמשים שכוללת את חשבון המשתמש.
כללי מדיניות הרשאה ודחייה רלוונטיים כוללים את האפשרויות הבאות:
- מדיניות ההרשאות של המשאב
- מדיניות הדחייה של המשאב (אם יש)
- מדיניות ההרשאות של הפרויקט, התיקייה והארגון שנמצאים מעל למשאב בהיררכיית המשאבים (אם יש)
- מדיניות הדחייה של הפרויקט, התיקייה והארגון שנמצאים מעל למשאב בהיררכיית המשאבים (אם יש)
מדיניות ההרשאות והדחייה של פרויקטים, תיקיות וארגונים שנמצאים מעל למשאב בהיררכיה רלוונטית כי המדיניות עוברת בירושה. כשמצרפים מדיניות הרשאות או דחייה לפרויקט, לתיקייה או לארגון, היא חלה גם על כל המשאבים שבתוך הפרויקט, התיקייה או הארגון.
לדוגמה, אם לפי מדיניות הדחייה בארגון למשתמש אין הרשאה מסוימת, היא לא תהיה לו באף משאב בארגון. הכלל הזה חל גם אם לתיקיות ולפרויקטים שבאותו ארגון יש מדיניות דחייה מתירנית יותר, או מדיניות הרשאות שנותנת לחשבון המשתמש את ההרשאה הזו.
באותו האופן, אם מדיניות ההרשאות של הפרויקט נותנת לחשבון המשתמש הרשאה מסוימת, תהיה לו את ההרשאה בכל משאב בפרויקט (אלא אם ההרשאה תילקח באמצעות מדיניות הדחייה).
הקטע פרטי המדיניות כולל את הקטעים הבאים:
מצב הגישה
בקטע מצב הגישה מוצג סיכום של התוצאות לכל סוג מדיניות (מדיניות לקביעת הגישה לישויות מורשות, מדיניות דחייה ומדיניות הרשאה), ומוצגת התוצאה הכוללת. התוצאה מציינת אם לחשבון המשתמש יש את ההרשאה לגשת למשאב, בהתאם למדיניות הרלוונטית.

כדי שמשתמש יוכל להשתמש בהרשאה כדי לגשת למשאב, כל סוגי המדיניות צריכים לאפשר גישה. מידע נוסף מופיע במאמר בנושא הערכת מדיניות.
המדיניות לקביעת הגישה לישויות מורשות (PAB)
בקטע מדיניות לקביעת גבול הגישה לחשבונות משתמשים (PAB), אפשר לראות את כל כללי המדיניות לקביעת גבול הגישה לחשבונות משתמשים שחלים על חשבון המשתמש, ואת קישורי המדיניות שמקשרים את כללי המדיניות האלה לחשבון המשתמש.
בחלונית Policies מופיעות כל המדיניות שמקושרת לקבוצת חשבונות משתמשים שכוללת את החשבון הראשי. לצד כל מדיניות מופיע סמל שמציין איך המדיניות משפיעה על הגישה של חשבון המשתמש.

מדיניות לקביעת גבול הגישה לחשבונות משתמשים (PAB) יכולה להשפיע על הגישה של חשבון משתמש בדרכים הבאות:
- לחשבון המשתמש יש אפשרות לגשת למשאב: מדיניות הגבלת הגישה לחשבון המשתמש חלה על חשבון המשתמש, ואחד מהכללים שלה מכיל את המשאב שנשלחה לגביו השאילתה.
- החשבון הראשי לא עומד בדרישות לגישה למשאב: המדיניות לקביעת גבול הגישה לחשבונות משתמשים חלה על החשבון הראשי, אבל המשאב שנשלחה לגביו השאילתה לא נכלל בכללים של המדיניות הזו.
לא נאכפת: המדיניות לקביעת גבול הגישה לחשבונות משתמשים לא נאכפת במקרים הבאים:
- IAM לא אוכף את ההרשאה שצוינה בגרסת האכיפה של מדיניות לקביעת גבול הגישה לחשבונות משתמשים (PAB). כתוצאה מכך, המדיניות לקביעת גבול הגישה לחשבונות משתמשים (PAB) לא יכולה לחסום את הגישה.
- בגלל תנאי בקישור המדיניות, המדיניות או הקישור לקביעת גבול הגישה לחשבונות משתמשים לא חלים על חשבון המשתמש.
- למדיניות לקביעת גבול הגישה לחשבונות משתמשים (PAB) אין כללים.
אם לא אוכפים מדיניות של גבולות גישה לחשבונות משתמשים, היא לא יכולה להשפיע על הגישה של חשבון המשתמש למשאב.
כדי לראות את הכללים והקישורים שמשויכים למדיניות לקביעת גבול הגישה לחשבונות משתמשים, לוחצים על שם המדיניות. בחלונית הסמוכה לחלונית Policies מוצגים פרטי המדיניות.
כדי לראות את הכללים במדיניות, לוחצים על הכרטיסייה כללי גבולות. בכרטיסייה הזו מוצגת טבלה עם הכללים הרלוונטיים של המדיניות לקביעת גבול הגישה לישויות מורשות (PAB).

כלל של מדיניות לקביעת הגישה לישויות מורשות רלוונטי אם הוא משפיע על התוצאה הכוללת של השאילתה בכלי לפתרון בעיות שקשורות למדיניות. כתוצאה מכך, הכללים הרלוונטיים משתנים בהתאם לתוצאות של פותר הבעיות שקשורות למדיניות. לדוגמה, נניח את המצבים הבאים:
- פותר הבעיות שקשורות למדיניות מציין שלחשבון המשתמש יש גישה למשאב. לכן, הכללים הרלוונטיים הם אלה שמאפשרים לחשבון המשתמש לגשת למשאב.
- פותר הבעיות שקשורות למדיניות מציין שחשבון המשתמש לא יכול לגשת למשאב. עם זאת, על פי המדיניות הרלוונטית לקביעת גבול הגישה לחשבונות משתמשים, לחשבון המשתמש יש זכאות לגשת למשאב. כתוצאה מכך, אף כלל לא רלוונטי, כי המדיניות לקביעת גבול הגישה לחשבונות משתמשים (PAB) היא לא הסיבה לכך שחשבון המשתמש לא יכול לגשת למשאב.
- פותר הבעיות שקשורות למדיניות מציין שחשבון המשתמש לא יכול לגשת למשאב. בנוסף, בהתאם למדיניות הרלוונטית לקביעת גבול הגישה לחשבונות משתמשים (PAB), לחשבון המשתמש אין אפשרות לגשת למשאב. כתוצאה מכך, הכללים הרלוונטיים הם אלה שלא מאפשרים לחשבון המשתמש לגשת למשאב.
כדי לראות את כל הכללים של גבולות הגישה לישויות מורשות במדיניות, מבטלים את הסימון בתיבת הסימון הצגת כללים וקישורים רלוונטיים בלבד.
בעמודה Findings בטבלה של כללי גבולות הגישה מצוין אם כלל בקרת גישה לישויות מורשות (PAB) מכיל את המשאב שנשלחה לגביו שאילתה. כדי לראות פרטים נוספים על הכלל, לוחצים על הצגת פרטי הכלל.
כדי לראות את ההתאמות של המדיניות, לוחצים על הכרטיסייה Bindings (התאמות). בכרטיסייה הזו מוצגת טבלה של קישורי המדיניות הרלוונטיים למדיניות הנבחרת לקביעת הגישה לישויות מורשות.

קישור מדיניות רלוונטי אם הוא מחיל את המדיניות לקביעת גבול הגישה לחשבונות משתמשים על חשבון המשתמש שנשלחה לגביו השאילתה. כדי שקישור מדיניות יחיל מדיניות של גבולות גישה לישויות מורשות על ישות מורשית, התנאים הבאים צריכים להתקיים:
- החשבון הראשי שמוגדר בקישור למדיניות חייב לכלול את החשבון הראשי שנשלחה לגביו שאילתה
- כל התנאים בהתאמת המדיניות צריכים להיות
trueעבור הגורם המבצע שאילתה.
כדי לראות את כל קישורי המדיניות עם קבוצות של חשבונות משתמשים שכוללות את חשבון המשתמש שנשלחה לגביו השאילתה, בלי קשר לשאלה אם חשבון המשתמש שנשלחה לגביו השאילתה עומד בתנאי בקישור, מבטלים את הסימון בתיבת הסימון הצגת כללים וקישורים רלוונטיים בלבד.
בזהויות של סוכנים, פותר הבעיות שקשורות למדיניות מעריך מדיניות של גבולות גישה לישויות מורשות שמשויכת להיררכיית המשאבים של הפרויקט או המאגר שמארחים את הסוכן, ומעריך תנאים שתואמים לסוג הזהות של הסוכן (principal.type == 'iam.googleapis.com/AgentPoolIdentity') ולדפוס הנושא (principal.subject.startsWith(...)).
בעמודה Findings בטבלת הקישורים מצוין אם הקישור נאכף עבור הגורם המבצע שמוגדר בשאילתה. כדי לראות פרטים נוספים על הקישור למדיניות, לוחצים על פרטי הקישור.
מדיניות דחייה
בקטע מדיניות דחייה אפשר לראות את כל כללי מדיניות הדחייה הרלוונטיים, לזהות כללי דחייה שמונעים גישה לחשבון המשתמש ולהבין למה כלל דחייה מסוים מונע או לא מונע מהחשבון את ההרשאה.
בחלונית Resources with deny policies מפורטים כל כללי מדיניות הדחייה הרלוונטיים, לפי המשאבים שאליהם הם מצורפים. לצד כל מדיניות דחייה מוצגת הערכת גישה. ההערכה הזו רלוונטית רק למדיניות הדחייה הזו – היא לא משקפת גישה ממדיניות שעברה בירושה. אם אין לכם הרשאה לצפות במדיניות הדחייה של משאב מסוים, המשאב הזה או מדיניות הדחייה שלו לא יופיעו ברשימת המשאבים.

כדי לראות את כללי הדחייה הרלוונטיים בכללי מדיניות הדחייה האלה, לוחצים על כללי מדיניות הדחייה. כדי לראות את כל כללי הדחייה במדיניות הדחייה של משאב, לוחצים על משאב. כללי הדחייה מופיעים בחלונית כללי דחייה. בחלונית הזו מוצגת טבלה של כל כללי הדחייה עם חשבון המשתמש או ההרשאה שנשאלו לגבי המשאב או מדיניות הדחייה שבחרתם.

בעמודה Access (גישה) מצוין אם כלל הדחייה דוחה את ההרשאה של חשבון המשתמש. כדי לראות פרטים נוספים על כלל הדחייה, לוחצים על הצגת כלל הדחייה בשורה של הכלל.
מדיניות הרשאות
בקטע מדיניות הרשאות אפשר לעבור בין כל מדיניות ההרשאות הרלוונטית, לזהות את הקישורים בין התפקידים שנותנים גישה לחשבון הראשי ולהבין למה קישור בין תפקידים נותן או לא נותן לחשבון הראשי את ההרשאה.
בחלונית Resources (משאבים) מופיעים המשאב שצוין והמשאבים שקדמו לו. לצד כל מקור מידע מוצגת הערכת הגישה. ההערכה הזו חלה רק על מדיניות ההרשאות של המשאב – היא לא משקפת גישה ממדיניות שעברה בירושה. אם אין לכם הרשאה לצפות במדיניות ההרשאות של משאב, המשאב הזה לא יופיע ברשימת המשאבים.
כדי לראות את קישורי התפקידים הרלוונטיים במדיניות ההרשאה של משאב מסוים, ולהבין איך הם נותנים או לא נותנים לחשבון המשתמש את ההרשאה, לוחצים על המשאב. הקישורים לתפקידים במדיניות ההרשאות מופיעים בחלונית Role bindings (קישורים לתפקידים).
בחלונית Role bindings מוצגת טבלה של קישורי תפקידים במדיניות ההרשאות של המשאב שנבחר. כברירת מחדל, הטבלה מכילה רק קישורי תפקידים שכוללים תפקיד עם ההרשאה שצוינה. אם לחשבון המשתמש אין גישה, בטבלה מוצגים גם קישורי תפקידים עם תפקידים בהתאמה אישית שאפשר לערוך. כדי לראות את כל קישורי התפקידים, מבטלים את הסימון בתיבת הסימון הצגת רק קישורים רלוונטיים.

בעמודה Access מצוין אם קישור התפקידים מעניק לחשבון המשתמש את ההרשאה. כדי לראות פרטים נוספים על הקצאת התפקיד, לוחצים על See binding details (הצגת פרטי ההקצאה) בשורה של הקצאת התפקיד.
כשמעריכים מדיניות הרשאות עבור זהויות של סוכנים, הכלי לפתרון בעיות שקשורות למדיניות בודק אם הסוכן תואם לאחד ממזהי חשבונות המשתמש הבאים:
| מזהה של חשבון משתמש | דוגמה |
|---|---|
| זהויות של סוכנים ישירים | principal://TRUST_DOMAIN/resources/SERVICE/RESOURCE_PATH |
| קבוצות של ישויות מהימנות בדומיין | principalSet://TRUST_DOMAIN/* |
| קבוצות של ישויות ראשיות בפלטפורמה | principalSet://TRUST_DOMAIN/attribute.platform/SERVICE |
| קבוצות ראשיות של קונטיינרים של משאבים | principalSet://TRUST_DOMAIN/attribute.container/projects/PROJECT_NUMBER |
| קבוצות ראשיות של קונטיינרים בפלטפורמה | principalSet://TRUST_DOMAIN/attribute.platformContainer/SERVICE/projects/PROJECT_NUMBER |
כשמנסים לפתור בעיות גישה לחשבון משתמש שאינו סוכן, כמו משתמש או חשבון שירות, כל הקישורים לתפקידים של זהויות סוכנים מוערכים כ-Not matched.
gcloud
התשובה מכילה ארבעה חלקים עיקריים: תיאור של טבלת הגישה בבקשה, התוצאות של הערכת מדיניות ההרשאות, התוצאות של הערכת מדיניות הדחייה והסטטוס הכללי של הגישה.
-
accessTuple: תיאור של טבלת הגישה בבקשה, כולל כל הקשר של התנאי שסיפקתם. בקטע הזה מופיע גם סיכום של התגים שחלים על המשאב. -
allowPolicyExplanation: סיכום של השאלה אם מדיניות ההרשאות הרלוונטית מעניקה לחשבון המשתמש את ההרשאה, ואחריו רשימה של מדיניות הרשאות ושל קישורי התפקידים שלה.עבור כל מדיניות הרשאה, בתשובה מפורטים כל קישורי התפקידים במדיניות, והם מוערכים על סמך הקריטריונים הבאים:
- אם קישור התפקיד כולל את ההרשאה.
- אם קישור התפקיד כולל את החשבון הראשי.
- האם התנאים בקישור התפקיד מתקיימים, אם יש כאלה.
לאחר מכן, התגובה מדפיסה את טקסט ה-JSON המלא של מדיניות ההרשאה.
-
denyPolicyExplanation: סיכום של כללי מדיניות הדחייה הרלוונטיים שמונעים מחשבון המשתמש את ההרשאה, ואחריו רשימה של משאבים עם כללי מדיניות דחייה. לכל משאב, התשובה מציגה רשימה של כל כללי מדיניות הדחייה שמצורפים למשאב.עבור כל מדיניות דחייה, בתגובה מודפסים המטא-נתונים של המדיניות, מוצגת רשימה של כללי הדחייה במדיניות, ואז כל כלל מוערך על סמך הקריטריונים הבאים:
- האם כלל הדחייה כולל את ההרשאה.
- האם ההרשאה מופיעה כחריג בכלל הדחייה.
- אם כלל הדחייה כולל את חשבון המשתמש.
- האם חשבון המשתמש מופיע כחריג בכלל הדחייה.
- האם התנאים בכלל הדחייה מתקיימים (אם יש כאלה).
-
overallAccessState: האם לחשבון המשתמש יש אפשרות להשתמש בהרשאה שצוינה כדי לגשת למשאב שצוין, על סמך מדיניות ההרשאות, מדיניות הדחייה והמדיניות לקביעת גבול הגישה לחשבונות משתמשים הרלוונטיות.מדיניות רלוונטית לקביעת גבול הגישה לחשבונות משתמשים כוללת את כל המדיניות לקביעת גבול הגישה לחשבונות משתמשים שמקושרת לקבוצת חשבונות משתמשים שכוללת את חשבון המשתמש.
כללי מדיניות הרשאה ודחייה רלוונטיים כוללים את האפשרויות הבאות:
- מדיניות ההרשאות של המשאב
- מדיניות הדחייה של המשאב (אם יש)
- מדיניות ההרשאות של הפרויקט, התיקייה והארגון שנמצאים מעל למשאב בהיררכיית המשאבים (אם יש)
- מדיניות הדחייה של הפרויקט, התיקייה והארגון שנמצאים מעל למשאב בהיררכיית המשאבים (אם יש)
מדיניות ההרשאות והדחייה של פרויקטים, תיקיות וארגונים שנמצאים מעל למשאב בהיררכיה רלוונטית כי המדיניות עוברת בירושה. כשמצרפים מדיניות הרשאות או דחייה לפרויקט, לתיקייה או לארגון, היא חלה גם על כל המשאבים שבתוך הפרויקט, התיקייה או הארגון.
לדוגמה, אם לפי מדיניות הדחייה בארגון למשתמש אין הרשאה מסוימת, היא לא תהיה לו באף משאב בארגון. הכלל הזה חל גם אם לתיקיות ולפרויקטים שבאותו ארגון יש מדיניות דחייה מתירנית יותר, או מדיניות הרשאות שנותנת לחשבון המשתמש את ההרשאה הזו.
באותו האופן, אם מדיניות ההרשאות של הפרויקט נותנת לחשבון המשתמש הרשאה מסוימת, תהיה לו את ההרשאה בכל משאב בפרויקט (אלא אם ההרשאה תילקח באמצעות מדיניות הדחייה).
כדי שמשתמש יוכל להשתמש בהרשאה כדי לגשת למשאב, כל סוגי המדיניות צריכים לאפשר גישה. מידע נוסף מופיע במאמר בנושא הערכת מדיניות.
-
pabPolicyExplanation: סיכום של המדיניות הרלוונטית לקביעת גבול הגישה לחשבונות משתמשים (PAB), שקובע אם לחשבון המשתמש יש הרשאה לגשת למשאב, ואחריו קישורי המדיניות הרלוונטיים לקביעת גבול הגישה לחשבונות משתמשים (PAB) וכללי המדיניות הרלוונטיים לקביעת גבול הגישה לחשבונות משתמשים (PAB).המדיניות לקביעת גבול הגישה לחשבונות משתמשים (PAB) יכולה לאפשר גישה, לא לאפשר גישה או לא להיות נאכפת. המדיניות לקביעת גבול הגישה לחשבונות משתמשים (PAB) לא נאכפת במצבים הבאים:
- המערכת לא אוכפת את ההרשאה שצוינה בגרסת האכיפה של מדיניות Principal Access Boundary. כתוצאה מכך, המדיניות לקביעת גבול הגישה לחשבונות משתמשים (PAB) לא יכולה לחסום את הגישה.
- בגלל תנאי בקישור המדיניות, המדיניות או הקישור לקביעת גבול הגישה לחשבונות משתמשים לא חלים על חשבון המשתמש.
- למדיניות לקביעת גבול הגישה לחשבונות משתמשים (PAB) אין כללים.
אם לא אוכפים מדיניות של גבולות גישה לחשבונות משתמשים, היא לא יכולה להשפיע על הגישה של חשבון המשתמש למשאב.
בנוסף, בתשובה מפורטים כל הקישורים למדיניות שכוללים את חשבון המשתמש, ופרטי המדיניות לקביעת הגישה לישויות מורשות (PAB) בכל אחד מהקישורים האלה למדיניות:
-
לכל קישור של מדיניות לקביעת הגישה לישויות מורשות, בתשובה מודפס אם הקישור נאכף לגבי הישות המורשית, ואז מודפס הטקסט של הקישור. קישור מדיניות נאכף אם קבוצת החשבונות הראשיים שמוגדרת בקישור כוללת את החשבון הראשי שנשלחה לגביו השאילתה, ואם התנאי בקישור המדיניות מחזיר את הערך
trueלגבי החשבון הראשי שנשלחה לגביו השאילתה. אם לא נאכף שיוך של מדיניות, המדיניות לא יכולה להשפיע על הגישה של חשבון המשתמש למשאב. -
לכל מדיניות של הגבלת גישה לישויות מורשות, התשובה כוללת את הפרטים הבאים:
- האם המדיניות מאפשרת גישה, לא מאפשרת גישה או לא נאכפת.
- גרסת האכיפה של המדיניות. מספר הגרסה הזה קובע אם IAM אוכף את המדיניות הזו לקביעת גבול הגישה לחשבונות משתמשים (PAB) עבור ההרשאה שנשלחה לגביה שאילתה. אם ההרשאה לא נאכפת, המדיניות לא יכולה להשפיע על הגישה של חשבון המשתמש למשאב.
-
הכללים במדיניות לקביעת גבול הגישה לחשבונות משתמשים (PAB) והאם כל כלל מאפשר גישה. לכל כלל, התשובה מציינת אם המשאב שנשלחה לגביו שאילתה כלול בכלל.
משאב נכלל בכלל אם מתקיים אחד מהתנאים הבאים:
- המשאב מופיע ברשימת הכללים. אפשר לכלול ישירות בכללים של בקרת גישה לישויות מורשות (PAB) רק משאבים של מנהל המשאבים (פרויקטים, תיקיות וארגונים).
- אחד מהמשאבים שנמצאים מעל המשאב בהיררכיית המשאבים (כלומר פרויקט, תיקייה או ארגון) מופיע בכלל.
הרבה אובייקטים בתשובה מכילים גם את השדה relevance. הערך בשדה הזה מציין את מידת התרומה של האובייקט למצב הגישה הכולל.
השדה relevance יכול לקבל את הערכים הבאים:
HEURISTIC_RELEVANCE_HIGH: מציין שהאובייקט משפיע באופן משמעותי על התוצאה. במילים אחרות, הסרת האובייקט כנראה תשנה את מצב הגישה הכולל. לדוגמה, קישור תפקיד שמעניק למשתמש את ההרשאה שצוינה יקבל את ערך הרלוונטיות הזה.
HEURISTIC_RELEVANCE_NORMAL: מציין שההשפעה של האובייקט על התוצאה מוגבלת. במילים אחרות, סביר להניח שהסרת האובייקט לא תשנה את מצב הגישה הכולל. לדוגמה, כלל דחייה שלא מכיל את ההרשאה או את הגורם המורשה יקבל את ערך הרלוונטיות הזה.
REST
התשובה מכילה ארבעה חלקים עיקריים: מצב הגישה הכולל, תיאור של טבלת הגישה בבקשה, התוצאות של הערכת מדיניות ההרשאות והתוצאות של הערכת מדיניות הדחייה.
-
overallAccessState: האם לחשבון המשתמש יש אפשרות להשתמש בהרשאה שצוינה כדי לגשת למשאב שצוין, על סמך מדיניות ההרשאות, מדיניות הדחייה והמדיניות לקביעת גבול הגישה לחשבונות משתמשים הרלוונטיות.מדיניות רלוונטית לקביעת גבול הגישה לחשבונות משתמשים כוללת את כל המדיניות לקביעת גבול הגישה לחשבונות משתמשים שמקושרת לקבוצת חשבונות משתמשים שכוללת את חשבון המשתמש.
כללי מדיניות הרשאה ודחייה רלוונטיים כוללים את האפשרויות הבאות:
- מדיניות ההרשאות של המשאב
- מדיניות הדחייה של המשאב (אם יש)
- מדיניות ההרשאות של הפרויקט, התיקייה והארגון שנמצאים מעל למשאב בהיררכיית המשאבים (אם יש)
- מדיניות הדחייה של הפרויקט, התיקייה והארגון שנמצאים מעל למשאב בהיררכיית המשאבים (אם יש)
מדיניות ההרשאות והדחייה של פרויקטים, תיקיות וארגונים שנמצאים מעל למשאב בהיררכיה רלוונטית כי המדיניות עוברת בירושה. כשמצרפים מדיניות הרשאות או דחייה לפרויקט, לתיקייה או לארגון, היא חלה גם על כל המשאבים שבתוך הפרויקט, התיקייה או הארגון.
לדוגמה, אם לפי מדיניות הדחייה בארגון למשתמש אין הרשאה מסוימת, היא לא תהיה לו באף משאב בארגון. הכלל הזה חל גם אם לתיקיות ולפרויקטים שבאותו ארגון יש מדיניות דחייה מתירנית יותר, או מדיניות הרשאות שנותנת לחשבון המשתמש את ההרשאה הזו.
באותו האופן, אם מדיניות ההרשאות של הפרויקט נותנת לחשבון המשתמש הרשאה מסוימת, תהיה לו את ההרשאה בכל משאב בפרויקט (אלא אם ההרשאה תילקח באמצעות מדיניות הדחייה).
כדי שמשתמש יוכל להשתמש בהרשאה כדי לגשת למשאב, כל סוגי המדיניות צריכים לאפשר גישה. מידע נוסף מופיע במאמר בנושא הערכת מדיניות.
-
accessTuple: תיאור של טבלת הגישה בבקשה, כולל כל הקשר של התנאי שסיפקתם. בקטע הזה מופיע גם סיכום של התגים שחלים על המשאב. -
allowPolicyExplanation: סיכום של השאלה אם מדיניות ההרשאות הרלוונטית מעניקה לחשבון המשתמש את ההרשאה, ואחריו רשימה של מדיניות הרשאות ושל קישורי התפקידים שלה.עבור כל מדיניות הרשאה, בתשובה מפורטים כל קישורי התפקידים במדיניות, והם מוערכים על סמך הקריטריונים הבאים:
- אם קישור התפקיד כולל את ההרשאה.
- אם קישור התפקיד כולל את החשבון הראשי.
- האם התנאים בקישור התפקיד מתקיימים, אם יש כאלה.
לאחר מכן, התגובה מדפיסה את טקסט ה-JSON המלא של מדיניות ההרשאה.
-
denyPolicyExplanation: סיכום של כללי מדיניות הדחייה הרלוונטיים שמונעים מחשבון המשתמש את ההרשאה, ואחריו רשימה של משאבים עם כללי מדיניות דחייה. לכל משאב, התשובה מציגה רשימה של כל כללי מדיניות הדחייה שמצורפים למשאב.עבור כל מדיניות דחייה, בתגובה מודפסים המטא-נתונים של המדיניות, מוצגת רשימה של כללי הדחייה במדיניות, ואז כל כלל מוערך על סמך הקריטריונים הבאים:
- האם כלל הדחייה כולל את ההרשאה.
- האם ההרשאה מופיעה כחריג בכלל הדחייה.
- אם כלל הדחייה כולל את חשבון המשתמש.
- האם חשבון המשתמש מופיע כחריג בכלל הדחייה.
- האם התנאים בכלל הדחייה מתקיימים (אם יש כאלה).
-
pabPolicyExplanation: סיכום של המדיניות הרלוונטית לקביעת גבול הגישה לחשבונות משתמשים (PAB), שקובע אם לחשבון המשתמש יש הרשאה לגשת למשאב, ואחריו קישורי המדיניות הרלוונטיים לקביעת גבול הגישה לחשבונות משתמשים (PAB) וכללי המדיניות הרלוונטיים לקביעת גבול הגישה לחשבונות משתמשים (PAB).המדיניות לקביעת גבול הגישה לחשבונות משתמשים (PAB) יכולה לאפשר גישה, לא לאפשר גישה או לא להיות נאכפת. המדיניות לקביעת גבול הגישה לחשבונות משתמשים (PAB) לא נאכפת במצבים הבאים:
- המערכת לא אוכפת את ההרשאה שצוינה בגרסת האכיפה של מדיניות Principal Access Boundary. כתוצאה מכך, המדיניות לקביעת גבול הגישה לחשבונות משתמשים (PAB) לא יכולה לחסום את הגישה.
- בגלל תנאי בקישור המדיניות, המדיניות או הקישור לקביעת גבול הגישה לחשבונות משתמשים לא חלים על חשבון המשתמש.
- למדיניות לקביעת גבול הגישה לחשבונות משתמשים (PAB) אין כללים.
אם לא אוכפים מדיניות של גבולות גישה לחשבונות משתמשים, היא לא יכולה להשפיע על הגישה של חשבון המשתמש למשאב.
בנוסף, בתשובה מפורטים כל הקישורים למדיניות שכוללים את חשבון המשתמש, ופרטי המדיניות לקביעת הגישה לישויות מורשות (PAB) בכל אחד מהקישורים האלה למדיניות:
-
לכל קישור של מדיניות לקביעת הגישה לישויות מורשות, בתשובה מודפס אם הקישור נאכף לגבי הישות המורשית, ואז מודפס הטקסט של הקישור. קישור מדיניות נאכף אם קבוצת החשבונות הראשיים שמוגדרת בקישור כוללת את החשבון הראשי שנשלחה לגביו השאילתה, ואם התנאי בקישור המדיניות מחזיר את הערך
trueלגבי החשבון הראשי שנשלחה לגביו השאילתה. אם לא נאכף שיוך של מדיניות, המדיניות לא יכולה להשפיע על הגישה של חשבון המשתמש למשאב. -
לכל מדיניות של הגבלת גישה לישויות מורשות, התשובה כוללת את הפרטים הבאים:
- האם המדיניות מאפשרת גישה, לא מאפשרת גישה או לא נאכפת.
- גרסת האכיפה של המדיניות. מספר הגרסה הזה קובע אם IAM אוכף את המדיניות הזו לקביעת גבול הגישה לחשבונות משתמשים (PAB) עבור ההרשאה שנשלחה לגביה שאילתה. אם ההרשאה לא נאכפת, המדיניות לא יכולה להשפיע על הגישה של חשבון המשתמש למשאב.
-
הכללים במדיניות לקביעת גבול הגישה לחשבונות משתמשים (PAB) והאם כל כלל מאפשר גישה. לכל כלל, התשובה מציינת אם המשאב שנשלחה לגביו שאילתה כלול בכלל.
משאב נכלל בכלל אם מתקיים אחד מהתנאים הבאים:
- המשאב מופיע ברשימת הכללים. אפשר לכלול ישירות בכללים של בקרת גישה לישויות מורשות (PAB) רק משאבים של מנהל המשאבים (פרויקטים, תיקיות וארגונים).
- אחד מהמשאבים שנמצאים מעל המשאב בהיררכיית המשאבים (כלומר פרויקט, תיקייה או ארגון) מופיע בכלל.
הרבה אובייקטים בתשובה מכילים גם את השדה relevance. הערך בשדה הזה מציין את מידת התרומה של האובייקט למצב הגישה הכולל.
השדה relevance יכול לקבל את הערכים הבאים:
HEURISTIC_RELEVANCE_HIGH: מציין שהאובייקט משפיע באופן משמעותי על התוצאה. במילים אחרות, הסרת האובייקט כנראה תשנה את מצב הגישה הכולל. לדוגמה, קישור תפקיד שמעניק למשתמש את ההרשאה שצוינה יקבל את ערך הרלוונטיות הזה.
HEURISTIC_RELEVANCE_NORMAL: מציין שההשפעה של האובייקט על התוצאה מוגבלת. במילים אחרות, סביר להניח שהסרת האובייקט לא תשנה את מצב הגישה הכולל. לדוגמה, כלל דחייה שלא מכיל את ההרשאה או את הגורם המורשה יקבל את ערך הרלוונטיות הזה.
פתרון בעיות בקישורי תפקידים מותנים
פותר הבעיות הקשורות למדיניות פותר באופן אוטומטי בעיות שקשורות לקישורי תפקידים מותנים ולכללי דחייה על סמך תגים. הוא גם פותר באופן אוטומטי בעיות בקישורים בין תפקידים במדיניות לקביעת גבול הגישה לחשבונות משתמשים (PAB) עם תנאים שמבוססים על חשבונות משתמשים.
כדי לפתור בעיות שקשורות לסוגים אחרים של קישורי תפקידים מותנים או לכללי דחייה מותנים, פותר הבעיות שקשורות למדיניות צריך מידע נוסף על ההקשר של הבקשה. לדוגמה, כדי לפתור בעיות שקשורות לתנאים שמבוססים על מאפייני תאריך ושעה, פותר הבעיות שקשורות למדיניות צריך את השעה שבה נשלחה הבקשה.
ב-CLI של gcloud וב-API בארכיטקטורת REST, צריך לספק את ההקשר הנוסף הזה באופן ידני.
במסוף Google Cloud , אפשר לספק את ההקשר הנוסף הזה על ידי פתרון בעיות ישירות מכל יומן ביקורת של פעילות אדמין או יומן ביקורת של גישה לנתונים. כל רשומה ביומן הביקורת מתאימה לבקשה ל-Google Cloud API או לפעולה שמתבצעת Google Cloud בשמכם. כשמבצעים פתרון בעיות מיומן ביקורת, הכלי לפתרון בעיות שקשורות למדיניות מקבל באופן אוטומטי מידע נוסף על הבקשה, כמו התאריך והשעה שלה. כך הכלי יכול לנתח קישורי תפקידים מותנים וכללי דחייה.
המסוף
כדי לפתור בעיות שקשורות לקישורי תפקידים מותנים ולכללי דחייה, מבצעים את הפעולות הבאות:
נכנסים לדף Logs Explorer במסוף Google Cloud .
אם שם הדף הוא Legacy Logs Viewer, לוחצים על התפריט הנפתח שדרוג ובוחרים באפשרות שדרוג ל-Logs Explorer החדש.
כדי להציג רק את יומני הביקורת של פעילות האדמין וגישה לנתונים, מזינים את השאילתה הבאה בכלי ליצירת שאילתות ולוחצים על Run query:
logName=("RESOURCE_TYPE/RESOURCE_ID/logs/cloudaudit.googleapis.com%2Factivity" OR "RESOURCE_TYPE/RESOURCE_ID/logs/cloudaudit.googleapis.com%2Fdata_access")מחליפים את הערכים הבאים:
-
RESOURCE_TYPE: סוג המשאב שלגביו רוצים להציג את יומני הביקורת. אפשר להשתמש ב-projects, ב-foldersאו ב-organizations. -
RESOURCE_ID: המזהה של המשאב.
-
מאתרים את הרשומה ביומן הביקורת שמתאימה לבקשה שרוצים לפתור את הבעיה שלה. במאמר שימוש ב-Logs Explorer מוסבר איך להשתמש ב-Logs Explorer כדי למצוא רשומות ספציפיות ביומן.
בעמודה סיכום של רשומת היומן, לוחצים על IAM ואז על פתרון בעיות בגישה.
פותר הבעיות שקשורות למדיניות משתמש במידע שברשומת היומן כדי לפתור בעיות בגישה, ואז מציג את התוצאות. ההקשר הנוסף מופיע בפרטי ההערכה בקטע הקשר של התנאי. כדי לראות את פרטי ההקשר, לוחצים על הצגת ההקשר של התנאי. מידע נוסף על דף התוצאות של פותר הבעיות שקשורות למדיניות זמין בקטע הסבר על תוצאות פותר הבעיות בדף הזה.
אופציונלי: כדי לפתור בעיה בבקשה אחרת שכוללת כללים של הרשאות מותנות וכללי דחייה, חוזרים לדף Logs Explorer וחוזרים על השלבים הקודמים.
gcloud
כדי לפתור בעיות שקשורות לקישורי תפקידים מותנים ולכללי דחייה, משתמשים בפקודה gcloud policy-troubleshoot iam.
לפני השימוש בנתוני הפקודה הבאים, צריך להחליף את הנתונים הבאים:
-
EMAIL: כתובת האימייל של חשבון המשתמש שרוצים לפתור בעיות בהרשאות שלו. במקרה של זהות סוכן, צריך לספק את מזהה החשבון הראשי. -
RESOURCE: המשאב שעליו ניתנה ההרשאה. -
PERMISSION: ההרשאה שרוצים לפתור את הבעיה שלה. -
DESTINATION_IP: אופציונלי. כתובת ה-IP של יעד הבקשה שבה יש להשתמש כשבודקים קישורי תפקידים מותנים. לדוגמה:198.1.1.1. -
DESTINATION_PORT: אופציונלי. יציאת היעד של הבקשה שבה המערכת תשתמש כדי לבדוק את הקשרים המותנים בין תפקידים. לדוגמה, `8080`. -
REQUEST_TIME: אופציונלי. חותמת הזמן של הבקשה שבה המערכת תשתמש כדי לבדוק את קישורי התפקידים המותנים. משתמשים בחותמת זמן בפורמט RFC 3339 – לדוגמה,2099-02-01T00:00:00Z. -
RESOURCE_NAME: אופציונלי. הערך של שם המשאב שבו צריך להשתמש כשבודקים את הקשרים המותנים בין תפקידים. רשימה של פורמטים מקובלים של שמות משאבים זמינה במאמר פורמט השמות של המשאבים. -
RESOURCE_SERVICE: אופציונלי. הערך של שירות המשאבים שבו צריך להשתמש כשבודקים קשירת תפקידים מותנית. רשימה של שמות השירותים שאפשר להשתמש בהם מופיעה במאמר ערכי שירות של משאבים. -
RESOURCE_TYPE: אופציונלי. במאמר ערכים של סוגי משאבים תוכלו למצוא רשימה של סוגי המשאבים שמתקבלים.
מריצים את הפקודה gcloud policy-troubleshoot iam:
Linux, macOS או Cloud Shell
gcloud policy-intelligence troubleshoot-policy iam RESOURCE --principal-email=EMAIL \ --permission=PERMISSION --destination-ip=DESTINATION_IP \ --destination-port=DESTINATION_PORT --request-time=REQUEST_TIME \ --resource-name=RESOURCE_NAME --resource-service=RESOURCE_SERVICE \ --resource-type=RESOURCE_TYPE
Windows (PowerShell)
gcloud policy-intelligence troubleshoot-policy iam RESOURCE --principal-email=EMAIL ` --permission=PERMISSION --destination-ip=DESTINATION_IP ` --destination-port=DESTINATION_PORT --request-time=REQUEST_TIME ` --resource-name=RESOURCE_NAME --resource-service=RESOURCE_SERVICE ` --resource-type=RESOURCE_TYPE
Windows (cmd.exe)
gcloud policy-intelligence troubleshoot-policy iam RESOURCE --principal-email=EMAIL ^ --permission=PERMISSION --destination-ip=DESTINATION_IP ^ --destination-port=DESTINATION_PORT --request-time=REQUEST_TIME ^ --resource-name=RESOURCE_NAME --resource-service=RESOURCE_SERVICE ^ --resource-type=RESOURCE_TYPE
התשובה תכיל הסבר על הגישה של הגורם הראשי. לכל כלל של קישור תפקיד ודחייה עם תנאי, התשובה כוללת שדה conditionExplanation שמתאר אם התנאי מוערך כ-True או כ-False על סמך הקשר של התנאי שסיפקתם.
לדוגמה, בהמשך מוצגת הערכה של קישור בין תפקידים עם תנאי שמציין את סוג המשאב ואת שירות המשאב:
תשובה
...
{
"allowAccessState": "ALLOW_ACCESS_STATE_GRANTED",
"combinedMembership": {
"membership": "MEMBERSHIP_MATCHED",
"relevance": "HEURISTIC_RELEVANCE_HIGH"
},
"condition": {
"expression": " resource.type \u003d\u003d \"compute.googleapis.com/Instance\" \u0026\u0026 resource.service \u003d\u003d \"compute.googleapis.com\"",
"title": "Compute instances only",
"description": "Condition that limits permissions to only Compute instances"
},
"conditionExplanation": {
"evaluationStates": [{
"end": 51,
"start": 1,
"value": true
}, {
"end": 99,
"start": 55,
"value": true
}],
"value": true,
},
"memberships": {
"user:my-user@example.com": {
"membership": "MEMBERSHIP_MATCHED",
"relevance": "HEURISTIC_RELEVANCE_HIGH"
}
},
"relevance": "HEURISTIC_RELEVANCE_HIGH",
"role": "roles/compute.viewer",
"rolePermission": "ROLE_PERMISSION_INCLUDED",
"rolePermissionRelevance": "HEURISTIC_RELEVANCE_HIGH"
}
...
REST
כדי לפתור בעיות שקשורות לקישורי תפקידים מותנים ולכללי דחייה, משתמשים ב-method iam.troubleshoot של Policy Troubleshooter API.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
EMAIL: כתובת האימייל של חשבון המשתמש שרוצים לפתור בעיות בהרשאות שלו. במקרה של זהות סוכן, צריך לספק את מזהה החשבון הראשי. -
RESOURCE: המשאב שעליו ניתנה ההרשאה. -
PERMISSION: ההרשאה שרוצים לפתור את הבעיה שלה. -
DESTINATION_IP: אופציונלי. כתובת ה-IP של יעד הבקשה שבה יש להשתמש כשבודקים קישורי תפקידים מותנים. לדוגמה:198.1.1.1. -
DESTINATION_PORT: אופציונלי. יציאת היעד של הבקשה שבה המערכת תשתמש כדי לבדוק את הקשרים המותנים בין תפקידים. לדוגמה, `8080`. -
REQUEST_TIME: אופציונלי. חותמת הזמן של הבקשה שבה המערכת תשתמש כדי לבדוק את קישורי התפקידים המותנים. משתמשים בחותמת זמן בפורמט RFC 3339 – לדוגמה,2099-02-01T00:00:00Z. -
RESOURCE_NAME: אופציונלי. הערך של שם המשאב שבו צריך להשתמש כשבודקים את הקשרים המותנים בין תפקידים. רשימה של פורמטים מקובלים של שמות משאבים זמינה במאמר פורמט השמות של המשאבים. -
RESOURCE_SERVICE: אופציונלי. הערך של שירות המשאבים שבו צריך להשתמש כשבודקים קשירת תפקידים מותנית. רשימה של שמות השירותים שאפשר להשתמש בהם מופיעה במאמר ערכי שירות של משאבים. -
RESOURCE_TYPE: אופציונלי. במאמר ערכים של סוגי משאבים תוכלו למצוא רשימה של סוגי המשאבים שמתקבלים.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://policytroubleshooter.googleapis.com/v3/iam:troubleshoot
תוכן בקשת JSON:
{
"accessTuple": {
"principal": "EMAIL",
"fullResourceName": "RESOURCE",
"permission": "PERMISSION",
"conditionContext": {
"destination": {
"ip": DESTINATION_IP,
"port": DESTINATION_PORT
},
"request": {
"receiveTime": REQUEST_TIME
},
"resource": {
"name": RESOURCE_NAME,
"service": RESOURCE_SERVICE,
"type": RESOURCE_TYPE
}
}
}
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
התשובה תכיל הסבר על הגישה של הגורם הראשי. לכל כלל של קישור תפקיד ודחייה עם תנאי, התשובה כוללת שדה conditionExplanation שמתאר אם התנאי מוערך כ-True או כ-False על סמך הקשר של התנאי שסיפקתם.
לדוגמה, בהמשך מוצגת הערכה של קישור בין תפקידים עם תנאי שמציין את סוג המשאב ואת שירות המשאב:
...
{
"allowAccessState": "ALLOW_ACCESS_STATE_GRANTED",
"role": "roles/compute.viewer",
"rolePermission": "ROLE_PERMISSION_INCLUDED",
"rolePermissionRelevance": "HEURISTIC_RELEVANCE_HIGH",
"combinedMembership": {
"membership": "MEMBERSHIP_MATCHED",
"relevance": "HEURISTIC_RELEVANCE_HIGH"
},
"memberships": {
"user:my-user@example.com": {
"membership": "MEMBERSHIP_MATCHED",
"relevance": "HEURISTIC_RELEVANCE_HIGH"
}
},
"relevance": "HEURISTIC_RELEVANCE_HIGH",
"condition": {
"expression": " resource.type \u003d\u003d \"compute.googleapis.com/Instance\" \u0026\u0026 resource.service \u003d\u003d \"compute.googleapis.com\"",
"title": "Compute instances only",
"description": "Condition that limits permissions to only Compute instances"
},
"conditionExplanation": {
"value": true,
"evaluationStates": [{
"start": 1,
"end": 51,
"value": true
}, {
"start": 55,
"end": 99,
"value": true
}]
}
}
...
המאמרים הבאים
- כדי לקבוע איזה תפקיד להעניק למשתמש שחסרות לו הרשאות, אפשר להיעזר במסמכי עזרה בנושא הרשאות או במסמכי עזרה בנושא תפקידים מוגדרים מראש.
- תוכלו לקרוא על הכלים האחרים של Policy Intelligence כדי להבין ולנהל את מדיניות ההרשאות שלכם וכך לשפר את הגדרות האבטחה.