בדף הזה מוסבר איך לארגן את ההיררכיה על ידי הטמעת פרויקטים בתוך תיקיות. Google Cloud
סקירה כללית
בהיררכיית המשאבים ב- Google Cloud , פרויקטים משמשים כיחידות הליבה של הארגון והחיוב של המשאבים. הם נמצאים בין התיקיות (או משאב הארגון) לבין המשאבים הבסיסיים, כמו מכונות וירטואליות וקטגוריות אחסון.
תיקיות הן מנגנון אופציונלי לקיבוץ, אבל יש כמה יתרונות חשובים לארגון הפרויקטים בתיקיות:
ניהול בהיקף נרחב: החלה אוטומטית של כללי מדיניות לניהול זהויות והרשאות גישה (IAM) ומגבלות אבטחה על מספר פרויקטים באמצעות ירושה היררכית.
התאמה לעסק: מבנה סביבת הענן צריך לשקף את המחלקות, מרכזי העלויות או מחזורי החיים של הפיתוח בארגון (כמו פיתוח, הכנה לייצור וייצור).
האצלת סמכויות ניהול: מעניקים לצוותים ספציפיים את האוטונומיה לנהל את הפרויקטים ותיקיות המשנה שלהם, בלי שיידרשו הרשאות רחבות ברמת הארגון.
שקיפות עלויות: אפשר לקבץ פרויקטים קשורים כדי לפשט את מעקב ההוצאות ולשפר את ניתוח החיובים ליחידות עסקיות או לאפליקציות ספציפיות.
בידוד אבטחה: הגדרת גבולות ברורים של אמון כדי להגביל את האזור המושפע משינויים בהגדרות ולהפחית את הסיכונים לאבטחה בסביבות שונות.
יצירת פרויקט בתיקייה
כדי ליצור פרויקט בתיקייה, צריך להיות לכם התפקיד Project Creator (roles/resourcemanager.projectCreator) בתיקייה. יכול להיות שהתפקיד הזה
הועבר בירושה מתיקיית הורה.
המסוף
- במסוף Google Cloud , פותחים את הדף 'ניהול משאבים'.
- נכנסים לדף ניהול משאבים.
- בוחרים את המשאב הארגוני מהתפריט הנפתח ארגון בפינה הימנית העליונה של הדף.
- לוחצים על Create Project.
- מזינים שם פרויקט.
- בתיבה יעד, לוחצים על עיון כדי לבחור את התיקייה שרוצים ליצור בה את הפרויקט.
- לוחצים על יצירה.
gcloud
gcloud projects create PROJECT_ID --folder FOLDER_ID
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט שרוצים ליצור -
FOLDER_ID: המזהה של התיקייה שבה צריך ליצור את הפרויקט.
REST
קובץ ה-JSON של הבקשה:
request_json= '{
name: DISPLAY_NAME, projectId: PROJECT_ID, parent: {id: PARENT_ID, type: PARENT_TYPE}
}'
בקשת curl:
curl -X POST -H "Content-Type: application/json" \
-H "Authorization: Bearer ${bearer_token}" \
-d "$request_json" \
https://cloudresourcemanager.googleapis.com/v3/projects
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: המזהה הייחודי של הפרויקט שנוצר. לדוגמה,my-awesome-proj-123. -
DISPLAY_NAME: השם המוצג של הפרויקט שנוצר. -
PARENT_ID: המזהה הייחודי של ההורה שיוצרים תחתיו. לדוגמה,123. -
PARENT_TYPE: סוג ההורה, כמוfolderאוorganization.
אל תכללו מידע רגיש בשם התיקייה או בשמות של משאבים אחרים. כל הפניה לתיקייה או למשאבים קשורים חושפת את שם התיקייה ואת שם המשאב.
העברת פרויקט לתיקייה
לפני שמעבירים פרויקט לתיקייה או מוציאים אותו ממנה, חשוב לשקול את ההשלכות על המדיניות. כללי מדיניות ההרשאה שמוגדרים ברמת הפרויקט יועברו עם הפרויקט, אבל כללי מדיניות שעוברים בירושה ממשאב אב לא יועברו.
כשמעבירים פרויקט, כל כללי המדיניות של ניהול זהויות והרשאות גישה (IAM) או מדיניות הארגון שמצורפים ישירות לפרויקט יועברו איתו. עם זאת, פרויקט בהיררכיית המשאבים מושפע גם מהמדיניות שהוא יורש ממשאבי ההורה. אם פרויקט יורש תפקיד IAM שמעניק למשתמשים הרשאה להשתמש בשירות מסוים, המשתמשים לא יוכלו לגשת לשירות הזה ביעד, אלא אם הם יירשו את ההרשאה גם ביעד.
לדוגמה, נניח שלחשבון שירות יש את התפקיד Storage Object Creator שמשויך למשתמש בתיקייה A. לחשבון השירות יש הרשאות להעלות נתונים ל-Cloud Storage בכל פרויקט בתיקייה א'. אם העברתם אחד מהפרויקטים האלה לתיקייה ב', שאין לה את אותן הרשאות שהועברו בירושה, לחשבון השירות של הפרויקט הזה לא תהיה יותר אפשרות להעלות נתונים, וכתוצאה מכך תהיה הפסקת שירות.
אותם שיקולים חלים אם מדיניות הארגון מוגדרת בתיקיות המקור והיעד. בדומה לכללי מדיניות IAM, כללי מדיניות של הארגון עוברים בירושה. לכן, חשוב לוודא שהמדיניות של הארגון עקבית בין תיקיות המקור והיעד.
מידע נוסף על מדיניות הארגון זמין במאמר מבוא לשירות של מדיניות הארגון.
כדי להעביר פרויקט, צריך לקבל את תפקיד ה-IAM של כלי להעברת פרויקטים (roles/resourcemanager.projectMover) גם בתיקיית המקור וגם בתיקיית היעד. אם המשאב לא נמצא בתיקייה, צריך להקצות את התפקיד הזה למשאב הארגון.
התפקידים האלה מעניקים לכם את ההרשאות הנדרשות הבאות:
-
resourcemanager.projects.updateבפרויקט - אם המשאב נמצא בתיקייה:
resourcemanager.projects.moveבתיקיית המקור וביעד - אם המשאב לא נמצא בתיקייה:
resourcemanager.projects.moveבמשאב הארגון
אפשר לקבל את ההרשאות האלה גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.
המסוף
כדי להעביר פרויקט:
במסוף Google Cloud , נכנסים לדף Manage resources.
בוחרים את הארגון מהתפריט הנפתח ארגון בפינה הימנית העליונה של הדף.
לוחצים על השורה של הפרויקט כדי לבחור אותו מתוך רשימת המשאבים. שימו לב שאסור ללחוץ על שם הפרויקט, כי זה יעביר אתכם לדף של ניהול הזהויות והרשאות הגישה (IAM) של הפרויקט.
לוחצים על תפריט האפשרויות (סמל האליפסה האנכית) בשורה ואז על העברה.
לוחצים על Browse (עיון) כדי לבחור את התיקייה שאליה רוצים להעביר את הפרויקט.
לוחצים על Move.
gcloud
כדי להעביר פרויקט, מריצים את הפקודה gcloud beta projects move:
gcloud beta projects move PROJECT_ID \ --DESTINATION_TYPE DESTINATION_ID
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: המזהה או המספר של הפרויקט שרוצים להעביר. -
DESTINATION_TYPE: סוג היעד,organizationאוfolder. -
DESTINATION_ID: המזהה של משאב הארגון או התיקייה שאליהם רוצים להעביר את הפרויקט.
REST
אפשר להשתמש ב-method projects.move בגרסה 3 כדי להעביר פרויקט.
בקשה:
POST https://cloudresourcemanager.googleapis.com/v3/{name=PROJECT_NAME}:move
{
"destinationParent": DESTINATION_PARENT
}
מחליפים את מה שכתוב בשדות הבאים:
PROJECT_NAME: השם של הפרויקט שרוצים לעדכן. לדוגמה,projects/415104041262.
DESTINATION_PARENT: משאב הארגון או התיקייה החדשים שרוצים להעביר את הפרויקט אליהם. לדוגמה:organizations/12345678901
אם הבקשה תצליח, היא תחזיר Operation שאפשר להשתמש בה כדי לעקוב אחרי העברת הפרויקט.
העברת תיקייה לתיקייה אחרת
כדי להעביר תיקייה לתיקייה אחרת, צריך הרשאה resourcemanager.folders.move גם לתיקיית המקור וגם לתיקיית היעד.
המסוף
תהליך העברת תיקיות לתיקיות אחרות במסוף דומה להעברת פרויקטים.
- במסוף Google Cloud , פותחים את הדף 'ניהול משאבים'.
- בוחרים את המשאב הארגוני מהתפריט הנפתח ארגון בפינה הימנית העליונה של הדף.
- לוחצים על השורה של התיקייה כדי לבחור אותה מתוך רשימת הפרויקטים והתיקיות.
- לוחצים על תפריט האפשרויות (סמל האליפסה האנכית) בשורה ואז על העברה.
- לוחצים על עיון כדי לבחור את התיקייה שאליה רוצים להעביר את התיקייה.
- לוחצים על Move.
gcloud
כדי להעביר תיקייה למשאב הארגון, מריצים את הפקודה הבאה:
gcloud resource-manager folders move FOLDER_ID \
--organization=PARENT_ID
מחליפים את מה שכתוב בשדות הבאים:
-
FOLDER_ID: מזהה התיקייה שאליה רוצים להעביר -
PARENT_ID: המזהה של משאב הארגון הראשי
כדי להעביר תיקייה לתיקייה אחרת, מריצים את הפקודה הבאה:
gcloud resource-manager folders move FOLDER_ID \
--folder=PARENT_ID
מחליפים את מה שכתוב בשדות הבאים:
-
FOLDER_ID: מזהה התיקייה שאליה רוצים להעביר -
PARENT_ID: המזהה של תיקיית האב
REST
קובץ ה-JSON של הבקשה:
request_json= '{
destinationParent: "folders/DESTINATION_FOLDER_ID"
}'
בקשת ה-curl להעברת תיקייה:
curl -X POST -H "Content-Type: application/json" \
-H "Authorization: Bearer ${bearer_token} \
-d "$request_json" \
https://cloudresourcemanager.googleapis.com/v3/folders/DISPLAY_NAME:move
מחליפים את מה שכתוב בשדות הבאים:
- DESTINATION_FOLDER_ID: המזהה של התיקייה שאליה מעבירים תיקייה אחרת, לדוגמה
98765. - DISPLAY_NAME: השם המוצג של התיקייה שמועברת, לדוגמה My Awesome Folder.
התשובה של Move Folder:
{
"name": "operations/fm.1234567890",
"metadata": {
"@type": "type.googleapis.com/google.cloud.resourcemanager.v3.FolderOperation",
"displayName": "DISPLAY_NAME",
"operationType": "MOVE"
}
}
בקשת ה-curl של Get Operation:
curl -H "Authorization: Bearer ${bearer_token}" \
https://cloudresourcemanager.googleapis.com/v3/operations/fm.1234567890
התגובה של Get Operation:
{
"name": "operations/fm.1234567890",
"metadata": {
"@type": "type.googleapis.com/google.cloud.resourcemanager.v3.FolderOperation",
"displayName": "DISPLAY_NAME",
"operationType": "MOVE"
},
"done": true,
"response": {
"@type": "type.googleapis.com/google.cloud.resourcemanager.v3.Folder",
"name": "folders/12345",
"parent": "folders/98765",
"displayName": "DISPLAY_NAME",
"lifecycleState": "ACTIVE",
"createTime": "2017-07-19T23:29:26.018Z",
"updateTime": "2017-07-20T00:54:44.295Z"
}
}
הצגה או רישום של פרויקטים בתיקייה
כדי להציג או לרשום פרויקטים שהם צאצאים ישירים של תיקייה, צריך להיות לכם התפקיד צפייה בתיקייה (roles/resourcemanager.folderViewer) או התפקיד דפדפן (roles/browser) בתיקייה.
המסוף
במסוף Google Cloud , פותחים את הדף Manage resources.
בתפריט הנפתח ארגון, בוחרים את הארגון.
ברשימת המשאבים, לוחצים על שם התיקייה כדי להרחיב אותה ולראות את הפרויקטים שלה.
אופציונלי: משתמשים בסרגל Filter (סינון) בחלק העליון של הרשימה כדי לחפש פרויקט ספציפי לפי שם או מזהה.
gcloud
כדי לראות את כל הפרויקטים שהם צאצאים ישירים של תיקייה מסוימת, משתמשים בפקודה gcloud projects list עם מסנן:
gcloud projects list --filter="parent.id:FOLDER_ID AND parent.type:folder"
מחליפים את FOLDER_ID במזהה הייחודי של התיקייה.
REST
משתמשים ב-method projects.list עם פרמטר שאילתה שמגדיר את התיקייה הראשית.
בקשת HTTP: GET https://cloudresourcemanager.googleapis.com/v3/projects?parent=folders/FOLDER_ID
פקודת curl לדוגמה:
Bash
curl -H "Authorization: Bearer $(gcloud auth print-access-token)"
"https://cloudresourcemanager.googleapis.com/v3/projects?parent=folders/FOLDER_ID"
מחליפים את FOLDER_ID במזהה הייחודי של התיקייה.
סינון פרויקטים לפי תגים או תוויות (אופציונלי)
אם יש לכם מספר גדול של פרויקטים בתיקייה, אתם יכולים להשתמש במסננים כדי למצוא משאבים ספציפיים על סמך מטא-נתונים.
המסוף
- בסרגל Filter בדף Manage resources, מקלידים
Labels:key=valueכדי לצמצם את הרשימה לפרויקטים עם תוויות ספציפיות. שימו לב שהמסוף מספק תמיכה מוגבלת בסינון חזותי לפי תגים. כדי לבצע שאילתות מתקדמות של תגים, צריך להשתמש ב-Google Cloud CLI.
gcloud
כדי להציג רשימה של פרויקטים בתיקייה עם ערך תג ספציפי, משתמשים בדגל --filter עם מאפיין התגים:
gcloud projects list \ --filter="parent.id:FOLDER_ID AND tags.TAG_KEY_PARENT/TAG_KEY_SHORT_NAME:TAG_VALUE_SHORT_NAME"
מחליפים את מה שכתוב בשדות הבאים:
-
FOLDER_ID: המזהה הייחודי של התיקייה. -
TAG_KEY_PARENT: המזהה של משאב ההורה של מפתח התג, כמו ארגון או פרויקט. -
TAG_KEY_SHORT_NAME: השם המקוצר של מפתח התג. -
TAG_VALUE_SHORT_NAME: השם המקוצר של ערך התג.
כדי לסנן לפי תוויות:
gcloud projects list \ --filter="parent.id:FOLDER_ID AND labels.KEY=VALUE"
מחליפים את מה שכתוב בשדות הבאים:
-
FOLDER_ID: המזהה הייחודי של התיקייה. -
KEY: המפתח של התווית. -
VALUE: הערך של התווית.