בעזרת פותר הבעיות שקשורות למדיניות תוכלו להבין אם לחשבון משתמש יש גישה למשאב. פותר הבעיות שקשורות למדיניות בודק את מדיניות ההרשאות, מדיניות הדחייה והמדיניות לקביעת גבול הגישה לחשבונות משתמשים (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.
הרשאות לפתרון בעיות גישה של חברי קבוצה
אם מדיניות ההרשאה והדחייה שלכם כוללת קבוצות, תצטרכו את הרשאת groups.read Google Workspace Admin API כדי לפתור בעיות גישה של חברים ספציפיים בקבוצה. סופר-אדמינים ואדמינים של קבוצות מקבלים את ההרשאה הזו באופן אוטומטי. כדי לתת את ההרשאה הזו למשתמש שהוא לא סופר-אדמין או אדמין של קבוצה, צריך ליצור תפקיד אדמין מותאם אישית ב-Google Workspace שמכיל את ההרשאה groups.read (שנמצאת בקטע הרשאות Admin API) ולהעניק אותה למשתמש.
אם אין לכם את ההרשאות האלה, לקישורים בין תפקידים ולכללי דחייה שמכילים קבוצות או דומיינים, תוצאת הגישה תהיה Unknown, אלא אם הקישור בין התפקידים או כלל הדחייה כוללים גם את חשבון המשתמש באופן מפורש.
הרשאות לפתרון בעיות בגישה של חברי הדומיין
אם מדיניות ההרשאה והדחייה שלכם כוללת חשבון Google Workspace או דומיין Cloud Identity, אתם צריכים להיות אדמינים של הדומיין כדי לפתור בעיות בגישה של חברים ספציפיים בדומיין.
אם אין לכם את ההרשאות האלה, לקישורים בין תפקידים ולכללי דחייה שמכילים קבוצות או דומיינים, תוצאת הגישה תהיה Unknown, אלא אם הקישור בין התפקידים או כלל הדחייה כוללים גם את חשבון המשתמש באופן מפורש.
פתרון בעיות בגישה
כדי לפתור בעיות שקשורות לגישה, צריך לציין את החשבון הראשי, המשאב וההרשאה שרוצים לבדוק. המידע הזה יכול להתקבל ממספר שגיאה:
Error ID: מזהה ייחודי של הודעת שגיאה בנוגע להרשאות. מזהה השגיאה מספק הקשר לשגיאה, כולל החשבון, המשאב, ההרשאה ותנאי ה-IAM הנתמכים. מזהה שגיאה שקשור לזהות של סוכן מספק הקשר לגבי הזהות של הסוכן והתלונות שלו, כמו הפלטפורמה והקונטיינר.
התנאים הנתמכים ב-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 , עוברים לדף פותר הבעיות שקשורות למדיניות.
אם יש לכם מזהה שגיאה, בוחרים באפשרות מזהה שגיאה ומזינים אותו.
אם אין לכם מזהה שגיאה, בוחרים באפשרות ידני.
מזינים את כתובת האימייל של חשבון המשתמש או את מזהה סוכן הזהות שרוצים לבדוק את הגישה שלו.
מזינים את השם המלא של המשאב שרוצים לבדוק.
אם אתם לא יודעים את השם המלא של המשאב, אתם יכולים לבצע אחת מהפעולות הבאות:
- אם אתם מנסים לפתור בעיות גישה לפרויקט, לתיקייה או לארגון, תוכלו להתחיל להקליד כדי לראות אפשרויות להשלמה אוטומטית.
אם אתם מנסים לפתור בעיות בגישה לסוג אחר של משאב, לוחצים על עיון כדי לפתוח את תיבת הדו-שיח של חיפוש המשאבים, ואז מחפשים את המשאב:
- בתיבה Select scope, בוחרים פרויקט, תיקייה או ארגון לחיפוש.
- בתיבה Resource type, בוחרים את סוגי המשאבים שרוצים לחפש.
- בתיבה חיפוש משאבים, מזינים חלק משם המשאב.
- בקטע התוצאות, בוחרים את המשאב שרוצים לבדוק.
- לוחצים על בחירה כדי לבחור את המשאב ולסגור את תיבת הדו-שיח.
מזינים את ההרשאה שרוצים לבדוק.
אם אתם לא יודעים את השם המלא של ההרשאה, אתם יכולים להתחיל להקליד כדי לראות אפשרויות להשלמה אוטומטית.
אופציונלי: כדי לבדוק כמה משאבים והרשאות, לוחצים על הוספת עוד צמד וחוזרים על השלב הקודם.
לוחצים על בדיקת הגישה.
gcloud
כדי לגלות למה לישות יש או אין הרשאת IAM, משתמשים בפקודה gcloud beta policy-troubleshoot iam.
לפני השימוש בנתוני הפקודה הבאים, צריך להחליף את הנתונים הבאים:
-
VERSION: אופציונלי. הגרסה של הפקודה שבה רוצים להשתמש. כדי לפתור בעיות בגישה שמבוססת רק על כללי מדיניות האישור והדחייה, אל תציינו גרסה. כדי לפתור בעיות בגישה על סמך מדיניות הרשאה, מדיניות דחייה ומדיניות לקביעת גבול הגישה לחשבונות משתמשים (PAB), משתמשים בגרסהbeta. EMAIL: כתובת האימייל של חשבון המשתמש שרוצים לפתור בעיות בהרשאות שלו. במקום זאת, צריך לספק את המזהה של החשבון הראשי בשדה זהות הסוכן.-
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."
},
"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.": {
"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.": {
"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.": {
"membership": "MEMBERSHIP_MATCHED",
"relevance": "HEURISTIC_RELEVANCE_NORMAL"
},
"serviceAccount:service-account-4@project-1.": {
"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.": {
"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."
],
"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."
],
"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.",
"serviceAccount:service-account-4@project-1."
],
"role": "roles/resourcemanager.projectIamAdmin"
},
{
"members": [
"serviceAccount:service-account-4@project-1."
],
"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."
]
}
}
],
"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.": {
"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.' || principal.subject=='service-account-2@project-1.')"
},
"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: כתובת האימייל של חשבון המשתמש שרוצים לפתור בעיות בהרשאות שלו. במקום זאת, צריך לספק את המזהה של החשבון הראשי בשדה זהות הסוכן.-
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) יכולה להשפיע על הגישה של חשבון משתמש בדרכים הבאות:
- לחשבון המשתמש יש אפשרות לגשת למשאב: מדיניות הגבלת הגישה לחשבון המשתמש חלה על חשבון המשתמש, ואחד מהכללים שלה מכיל את המשאב שנשלחה לגביו השאילתה.
- החשבון הראשי לא עומד בדרישות לגישה למשאב: המדיניות לקביעת גבול הגישה לחשבונות משתמשים חלה על החשבון הראשי, אבל המשאב שנשלחה לגביו השאילתה לא נכלל בכללים של המדיניות הזו.
לא נאכפת: המדיניות לקביעת גבול הגישה לחשבונות משתמשים (PAB) לא נאכפת במצבים הבאים:
- המערכת לא אוכפת את ההרשאה שצוינה בגרסת האכיפה של מדיניות Principal Access Boundary. כתוצאה מכך, המדיניות לקביעת גבול הגישה לחשבונות משתמשים (PAB) לא יכולה לחסום את הגישה.
- בגלל תנאי בקישור המדיניות, המדיניות או הקישור לקביעת גבול הגישה לחשבונות משתמשים לא חלים על חשבון המשתמש.
- למדיניות לקביעת גבול הגישה לחשבונות משתמשים (PAB) אין כללים.
אם לא אוכפים מדיניות של גבולות גישה לחשבונות משתמשים, היא לא יכולה להשפיע על הגישה של חשבון המשתמש למשאב.
כדי לראות את הכללים והקישורים שמשויכים למדיניות לקביעת גבול הגישה לחשבונות משתמשים, לוחצים על שם המדיניות. בחלונית הסמוכה לחלונית מדיניות מוצגים פרטי המדיניות.
כדי לראות את הכללים במדיניות, לוחצים על הכרטיסייה כללי גבולות. בכרטיסייה הזו מוצגת טבלה עם הכללים הרלוונטיים של המדיניות לקביעת גבול הגישה לחשבונות משתמשים (PAB).

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

קישור מדיניות רלוונטי אם הוא מחיל את המדיניות לקביעת גבול הגישה לחשבונות משתמשים על חשבון המשתמש שנשלחה לגביו השאילתה. כדי שקישור מדיניות יחיל מדיניות של גבולות גישה לישויות מורשות על ישות מורשית, התנאים הבאים צריכים להתקיים:
- החשבון הראשי שמוגדר בקישור למדיניות חייב לכלול את החשבון הראשי שנשלחה לגביו השאילתה
- כל התנאים בהתאמת המדיניות צריכים להיות
trueעבור הגורם המבצע שאילתה.
כדי לראות את כל קישורי המדיניות עם קבוצות של חשבונות משתמשים שכוללות את חשבון המשתמש שנשלחה לגביו השאילתה, בלי קשר לשאלה אם חשבון המשתמש שנשלחה לגביו השאילתה עומד בתנאי בקישור, מבטלים את הסימון בתיבת הסימון הצגת כללים וקישורים רלוונטיים בלבד.
בזהויות של סוכנים, פותר הבעיות שקשורות למדיניות מעריך את המדיניות לקביעת גבול הגישה לחשבונות משתמשים (PAB) שמשויכת להיררכיית המשאבים של הפרויקט או הקונטיינר שמארחים את הסוכן, ומעריך את התנאים שתואמים לסוג הזהות של הסוכן (principal.type == 'iam.googleapis.com/AgentPoolIdentity') ולתבנית הנושא (principal.subject.startsWith(...)).
בעמודה ממצאים בטבלת הקישורים מצוין אם הקישור נאכף עבור חשבון המשתמש שנבדק. כדי לראות פרטים נוספים על הקישור למדיניות, לוחצים על הצגת פרטי הקישור.
מדיניות הדחייה
בקטע מדיניות דחייה אפשר לראות את כל כללי מדיניות הדחייה הרלוונטיים, לזהות כללי דחייה שמונעים גישה לחשבון המשתמש ולהבין למה כלל דחייה מסוים מונע או לא מונע מהחשבון את ההרשאה.
בחלונית 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: האם לחשבון המשתמש יש אפשרות להשתמש בהרשאה שצוינה כדי לגשת למשאב שצוין, על סמך מדיניות ההרשאות, מדיניות הדחייה והמדיניות לקביעת גבול הגישה לחשבונות משתמשים (PAB) הרלוונטיות.מדיניות רלוונטית לקביעת גבול הגישה לחשבונות משתמשים כוללת את כל המדיניות לקביעת גבול הגישה לחשבונות משתמשים שמקושרת לקבוצת חשבונות משתמשים שכוללת את חשבון המשתמש.
כללי מדיניות הרשאה ודחייה רלוונטיים כוללים את האפשרויות הבאות:
- מדיניות ההרשאות של המשאב
- מדיניות הדחייה של המשאב (אם יש)
- מדיניות ההרשאות של הפרויקט, התיקייה והארגון שנמצאים מעל למשאב בהיררכיית המשאבים (אם יש)
- מדיניות הדחייה של הפרויקט, התיקייה והארגון שנמצאים מעל למשאב בהיררכיית המשאבים (אם יש)
מדיניות ההרשאות והדחייה של פרויקטים, תיקיות וארגונים שנמצאים מעל למשאב בהיררכיה רלוונטית כי המדיניות עוברת בירושה. כשמצרפים מדיניות הרשאות או דחייה לפרויקט, לתיקייה או לארגון, היא חלה גם על כל המשאבים שבתוך הפרויקט, התיקייה או הארגון.
לדוגמה, אם לפי מדיניות הדחייה בארגון למשתמש אין הרשאה מסוימת, היא לא תהיה לו באף משאב בארגון. הכלל הזה חל גם אם לתיקיות ולפרויקטים שבאותו ארגון יש מדיניות דחייה מתירנית יותר, או מדיניות הרשאות שנותנת לחשבון המשתמש את ההרשאה הזו.
באותו האופן, אם מדיניות ההרשאות של הפרויקט נותנת לחשבון המשתמש הרשאה מסוימת, תהיה לו את ההרשאה בכל משאב בפרויקט (אלא אם ההרשאה תילקח באמצעות מדיניות הדחייה).
כדי שמשתמש יוכל להשתמש בהרשאה כדי לגשת למשאב, כל סוגי המדיניות צריכים לאפשר גישה. מידע נוסף מופיע במאמר בנושא הערכת מדיניות.
-
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: האם לחשבון המשתמש יש אפשרות להשתמש בהרשאה שצוינה כדי לגשת למשאב שצוין, על סמך מדיניות ההרשאות, מדיניות הדחייה והמדיניות לקביעת גבול הגישה לחשבונות משתמשים (PAB) הרלוונטיות.מדיניות רלוונטית לקביעת גבול הגישה לחשבונות משתמשים כוללת את כל המדיניות לקביעת גבול הגישה לחשבונות משתמשים שמקושרת לקבוצת חשבונות משתמשים שכוללת את חשבון המשתמש.
כללי מדיניות הרשאה ודחייה רלוונטיים כוללים את האפשרויות הבאות:
- מדיניות ההרשאות של המשאב
- מדיניות הדחייה של המשאב (אם יש)
- מדיניות ההרשאות של הפרויקט, התיקייה והארגון שנמצאים מעל למשאב בהיררכיית המשאבים (אם יש)
- מדיניות הדחייה של הפרויקט, התיקייה והארגון שנמצאים מעל למשאב בהיררכיית המשאבים (אם יש)
מדיניות ההרשאות והדחייה של פרויקטים, תיקיות וארגונים שנמצאים מעל למשאב בהיררכיה רלוונטית כי המדיניות עוברת בירושה. כשמצרפים מדיניות הרשאות או דחייה לפרויקט, לתיקייה או לארגון, היא חלה גם על כל המשאבים שבתוך הפרויקט, התיקייה או הארגון.
לדוגמה, אם לפי מדיניות הדחייה בארגון למשתמש אין הרשאה מסוימת, היא לא תהיה לו באף משאב בארגון. הכלל הזה חל גם אם לתיקיות ולפרויקטים שבאותו ארגון יש מדיניות דחייה מתירנית יותר, או מדיניות הרשאות שנותנת לחשבון המשתמש את ההרשאה הזו.
באותו האופן, אם מדיניות ההרשאות של הפרויקט נותנת לחשבון המשתמש הרשאה מסוימת, תהיה לו את ההרשאה בכל משאב בפרויקט (אלא אם ההרשאה תילקח באמצעות מדיניות הדחייה).
כדי שמשתמש יוכל להשתמש בהרשאה כדי לגשת למשאב, כל סוגי המדיניות צריכים לאפשר גישה. מידע נוסף מופיע במאמר בנושא הערכת מדיניות.
-
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, לוחצים על התפריט הנפתח Upgrade ובוחרים באפשרות Upgrade to the new 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 כדי להבין ולנהל את מדיניות ההרשאות שלכם וכך לשפר את הגדרות האבטחה.