המשאבים ב- Google Cloud מסודרים בהיררכיה, כאשר לכל צומת (ארגונים, תיקיות, פרויקטים וכו') יש הפניה לצומת ההורה שלו. אפשר להשתמש בהפניה הזו כמסנן מפתח לסריקות כדי לשפר את העקביות של חיפושי משאבים.
אתם יכולים להעניק למשתמשים הרשאות באמצעות תפקידים בהתאמה אישית. התפקידים האלה פועלים לפי העיקרון של הרשאות מינימליות, ובדרך כלל מספקים רק את ההרשאות המינימליות שנדרשות לביצוע משימה מסוימת.
השיטה הזו יכולה להיות שימושית לבידוד של קבוצות משתמשים שונות. לדוגמה:
- חברה גדולה עם מחלקות שלא אמורות להיות להן אפשרויות לבדוק את המשאבים של מחלקות אחרות.
- קבלנים שקיבלו הרשאות לפרויקט ספציפי, אבל לא למשאבים אחרים.
עם זאת, בגלל ההרשאות המוגבלות שלהם, תפקידים בהתאמה אישית עלולים לגרום להשמטה של משאבים רבים בהיררכיה שלכם כשמבצעים פעולת רשימה. כשמבצעים חיפושים בתור משתמש שהוקצה לו תפקיד מותאם אישית, יכול להיות שיהיה קשה להבין למה משאבים מסוימים לא מופיעים.
כדי להימנע מהמצב הזה, בדף הזה נסביר על השיטות המומלצות לרישום כל המשאבים שמנוהלים על ידי Cloud Resource Manager API בהיררכיית המשאבים. אתם יכולים להשתמש בהנחיות האלה כדי להגדיר בדיקות ביקורת מותאמות אישית, או כדי ליצור חוויית משתמש משלכם על בסיס Cloud Resource Manager API.
הצגת רשימה של כל צמתי המשאבים
כשסורקים את היררכיית המשאבים כדי ליצור רשימה של כל משאב, צריך לוודא שהתוצאות עקביות. אם הסריקה לא מזהה משאבים או מספקת תוצאות לא עדכניות, קשה לדעת שמשהו השתבש. כדי לוודא שתמיד תקבלו את התוצאות המדויקות והמלאות ביותר, צריך להשתמש בחשבון שירות ולבצע סריקה באופן הבא:
- נותנים לחשבון השירות את ההרשאות
listו-getלארגונים, לתיקיות ולפרויקטים במשאב הארגון. - אם אתם מציגים רשימה של משאבי פרויקט ותיקייה, צריך לציין את משאב האב במחרוזת המסנן.
- מריצים את השיטה
projects.list()עם חשבון השירות הזה לכל סוג משאב שרוצים למצוא, ולכל משאב ביניים כמו תיקיות.
דוגמה להצגת רשימה של כל צמתי המשאבים
הקוד המדומה הבא מדגים איך אפשר להציג רשימה של כל צומת משאב בארגונים:
organizations = organizations.search()
projects = emptyList()
parentsToList = queueOf(organizations)
while (parent = parentsToList.pop()) {
// TODO: Iterate over paginated results as needed.
// TODO: Handle PERMISSION_DENIED appropriately.
projects.addAll(projects.list(parent.type, parent.id))
parentsToList.addAll(folders.list(parent))
}
כשיוצרים חוויית משתמש מותאמת אישית, יכול להיות שתרצו גם לשלב תוצאות חיפוש ולטעון את משאבי האב לפי הצורך (וגם לטפל בחריגה PERMISSION_DENIED).
הפחתת זמן האחזור ברשימת הפרויקטים ב-gcloud
אם השאילתה gcloud projects list נכשלת או אורכת זמן רב מדי, יכול להיות שמספר הפרויקטיםGoogle Cloud שצריך להחזיר גדול מדי. כדי לפתור את הבעיה, מוסיפים את הדגלים filter ו-page-size לפקודה gcloud projects list.
מידע נוסף על הדגלים שאפשר להוסיף לפקודה gcloud projects list זמין במאמר gcloud projects list.
דוגמה להחרגה של פרויקטים ב-Apps Script
הסיבה הכי נפוצה לכישלונות של שאילתות או לזמן אחזור ארוך היא מספר גדול של פרויקטים של Apps Script בארגון. הפקודה הבאה מראה איך להחריג פרויקטים של Apps Script מרשימת הפרויקטים ולהגביל את מספר המשאבים שמוחזרים בכל דף.
gcloud projects list --filter="NOT parent.id: 'APPS_SCRIPT_FOLDER_ID' "--page-size='30'
איך מוצאים את מזהה התיקייה של Apps Script
כדי למצוא את מזהה התיקייה של Apps Script, מבצעים את השלבים הבאים.
בסרגל הכלים של Google Cloud המסוף, לוחצים על חיפוש משאבים, מסמכים, מוצרים ועוד ומקלידים
apps-script.בקטע Resources (משאבים), בוחרים בתיקייה apps-script.
בקטע מזהה התיקייה, מעתיקים את מזהה התיקייה.
חיפוש מקורות מידע
אם הסריקה נועדה לחפש משאב שנוצר לפני זמן מה, אפשר לבצע סריקה מהירה יותר עם מודל עקביות הדרגתי במקום מודל עקביות חזק. שימו לב: יכול להיות ששיטת החיפוש הזו לא תכלול בתוצאות החיפוש חלק מהמשאבים, במיוחד משאבים שעברו שינוי לאחרונה. כדי לחפש מקורות מידע:
- משתמשים בחשבון שירות עם הרשאת
getלמשאב שמחפשים. - מריצים את השיטה
projects.search()עם חשבון השירות הזה.
פתרון בעיות שקשורות למשאבים שהושמטו
אם אתם מפתחים כלי סריקה, מומלץ להשתמש בהרשאות list ו-get שניתנות ברמת הארגון. כך נמנעות בעיות שנובעות מהרשאות חלקיות של המשתמש, שגורמות להשמטה של חלק מהמשאבים מהרשימה.
אם אתם מתכננים חוויית משתמש בהתאמה אישית שבודקת את הרשאות המשתמש, אין פתרון פשוט. אם למשתמש אין הרשאות ברמת הארגון, הוא צריך הרשאות מסוימות בכל משאב כדי שהמשאב יופיע. אם למשתמש חסרות הרשאות למשאב כלשהו בהיררכיה, יכול להיות שחלק מהמשאבים לא יופיעו.
אם למשתמש יש הרשאה list אבל לא הרשאה get למשאב מסוים, המשאב הזה לא יוצג בכלל במסוףGoogle Cloud . עם זאת, המשאב יוחזר בחיפוש באמצעות API או Google Cloud CLI שבו צוין ההורה של המשאב. הפער הזה בין Google Cloud המסוף לבין שיטות אחרות הוא מקור נפוץ לבלבול כשמנסים לסרוק את היררכיית המשאבים.
בתרשימים הבאים מוצגות כמה הגדרות נפוצות של הרשאות, ואיך הן משפיעות על המשאבים שמשתמש יכול לראות כשהוא מריץ חיפוש.
בדוגמה הזו, כל ההרשאות הנדרשות מוענקות במשאב Organization. לכן, כל ההיררכיה גלויה כשמבצעים חיפוש או כשמציגים רשימה.
למשתמש בדוגמה הזו יש את כל ההרשאות הנדרשות חוץ מההרשאה resourcemanager.organizations.get, אבל ההרשאות האלה ניתנות לו ברמת התיקייה. הפער הזה בהרשאות מאפשר להם לראות את הרשימה או לחפש בחלק הזה של ההיררכיה, אבל לא בחצי השני.
בדוגמה הזו מוצגת חוויית המשתמש של משתמש שקיבל את ההרשאה resourcemanager.projects.get ברמת משאב התיקייה.
הם יכולים לראות את הפרויקטים שמתחת לתיקייה הזו בהיררכיה, אבל רק באמצעות חיפוש. השימוש בפונקציונליות של הרשימה לא יחזיר תוצאות.
בדוגמה הזו מוצג תרחיש דומה שבו ההרשאות שניתנו מאפשרות לכם למצוא את משאבי התיקייה רק באמצעות חיפוש. הפעולה של הרשימה לא מחזירה תוצאות.
למשתמש בדוגמה הזו יש שילוב של הרשאות בכל הארגון.
הם יכולים לראות רשימה של תיקיות מרמת הארגון, וכך למצוא אותן באמצעות חיפושים שמציינים את משאב ההורה בכל ההיררכיה.
הם יכולים לראות את רשימת המשאבים של פרויקט בתיקייה אחת, אבל לא בתיקייה אחרת, ויש להם הרשאה resourcemanager.projects.get בפרויקט אחד בתחתית ההיררכיה.
התוצאה היא שהם לא יכולים להחזיר את הפרויקטים בצד ימין של היררכיית המשאבים הזו. הם יכולים לראות את הפרויקטים בצד שמאל רק אם הם משתמשים בחיפוש שמציין את משאב ההורה, ורק פרויקט אחד מוצג כשהם צופים במסוף Google Cloud .
בדוגמה הזו, אפשר לקבל את משאב הארגון ולרשום את משאבי הפרויקט על ידי ציון ההורה לאורך ההיררכיה. עם זאת, אין לכם הרשאה להציג רשימה של תיקיות ביניים או לחפש אותן. אפשר לחפש את הפרויקטים שלכם אם אתם יודעים את המזהה של תיקיית ההורה שלהם. התיקיות לא מוצגות לכם, ולכן לא תוכלו לגלות את המזהה אם הוא לא כבר קיים. המשאב היחיד שמופיע במסוף Google Cloud הוא הארגון.
כשמעצבים חוויית משתמש מותאמת אישית, חשוב להיות מודעים למצבים דומים למצבים האלה. אפשר להשתמש בשילוב של הצגת רשימה וחיפוש כדי להציג את היררכיית המשאבים. כדאי גם לחשוב איך להסביר למשתמשים שחסרות להם הרשאות שמאפשרות להם לראות את ההיררכיה המלאה של המשאבים.