באמצעות Cloud Resource Manager API אתם יכולים לגלות ולקטלג כל תיקייה ופרויקט בהיררכיית המשאבים של Google Cloud. החשיפה הזו עוזרת לכם לבצע בדיקות ביקורת ולבנות כלי ניהול בהתאמה אישית. פעולות רגילות של רשימה יכולות להשמיט משאבים כשלמשתמשים יש תפקידים מוגבלים בהתאמה אישית. אתם יכולים לסנן את השאילתות לפי הפניות להורה כדי לקבל תוצאות חיפוש עקביות ולזהות צמתים שהרשאות עם הרשאות מינימליות עלולות להסתיר.
הצגת רשימה של כל צומתי המשאבים
כשסורקים את היררכיית המשאבים כדי להציג את כל המשאבים, צריך תוצאות עם עקביות חזקה. אם הסריקה מפספסת משאבים או מספקת תוצאות לא עדכניות, יכול להיות שיהיה קשה לדעת שמשהו השתבש. כדי לוודא שתמיד תקבלו את התוצאות המדויקות והמלאות ביותר, השתמשו בחשבון שירות ובצעו סריקה באופן הבא:
- נותנים לחשבון שירות את ההרשאות
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.
דוגמה להחרגה של פרויקטים ב-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 , לוחצים על Search for resources, docs, products, and more ומקלידים
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 ברמת המשאב Folder.
הם יכולים לראות את הפרויקטים שמתחת לתיקייה הזו בהיררכיה, אבל רק באמצעות חיפוש. אם תשתמשו בפונקציונליות של הרשימה, לא יוחזרו תוצאות.
הדוגמה הזו ממחישה תרחיש דומה שבו ההרשאות שניתנו מאפשרות לכם למצוא את משאבי התיקייה רק באמצעות חיפוש. פעולת הרשימה לא מחזירה תוצאות.
למשתמש בדוגמה הזו יש שילוב של הרשאות בארגון.
הם יכולים להציג רשימה של תיקיות מרמת הארגון, וכך למצוא אותן באמצעות חיפושים שמציינים את משאב ההורה בכל ההיררכיה.
הם יכולים להציג את משאבי הפרויקט של תיקייה אחת, אבל לא של השנייה, ויש להם הרשאת resourcemanager.projects.get בפרויקט אחד בתחתית ההיררכיה.
כתוצאה מכך, הם לא יכולים להחזיר את הפרויקטים בצד ימין של היררכיית המשאבים הזו. הם יכולים להציג את הפרויקטים בצד שמאל רק באמצעות חיפוש שבו מצוין המשאב הראשי, ורק פרויקט אחד גלוי כשמציגים אותו במסוף Google Cloud .
בדוגמה הזו, אתם יכולים לקבל את משאב הארגון ולהציג רשימה של משאבי הפרויקט על ידי ציון ההורה לאורך ההיררכיה. עם זאת, אין לכם הרשאה להציג או לחפש תיקיות ביניים. אפשר לחפש את הפרויקטים אם אתם יודעים את המזהה של תיקיית ההורה שלהם. התיקיות לא גלויות לכם, כך שאתם לא יכולים לגלות את המזהה אם הוא לא נמצא ברשותכם. המשאב היחיד שמופיע במסוף Google Cloud הוא הארגון.
כשאתם מעצבים את חוויית המשתמש בהתאמה אישית, חשוב שתהיו מודעים למצבים דומים לאלה. כדי להציג את היררכיית המשאבים, אפשר להשתמש בשילוב של הצגת רשימה וחיפוש. כדאי גם לחשוב איך להודיע למשתמשים שחסרות להם הרשאות שמאפשרות להם לראות את כל היררכיית המשאבים.