ניהול פרויקטים בתוך תיקיות

בדף הזה מוסבר איך לארגן את ההיררכיה על ידי הטמעת פרויקטים בתוך תיקיות. Google Cloud

סקירה כללית

בהיררכיית המשאבים ב- Google Cloud , פרויקטים משמשים כיחידות הליבה של הארגון והחיוב של המשאבים. הם נמצאים בין התיקיות (או משאב הארגון) לבין המשאבים הבסיסיים, כמו מכונות וירטואליות וקטגוריות אחסון.

תיקיות הן מנגנון אופציונלי לקיבוץ, אבל יש כמה יתרונות חשובים לארגון הפרויקטים בתיקיות:

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

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

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

  • שקיפות עלויות: אפשר לקבץ פרויקטים קשורים כדי לפשט את מעקב ההוצאות ולשפר את ניתוח החיובים ליחידות עסקיות או לאפליקציות ספציפיות.

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

יצירת פרויקט בתיקייה

כדי ליצור פרויקט בתיקייה, צריך להיות לכם התפקיד Project Creator (roles/resourcemanager.projectCreator) בתיקייה. יכול להיות שהתפקיד הזה הועבר בירושה מתיקיית הורה.

המסוף

  1. במסוף Google Cloud , פותחים את הדף 'ניהול משאבים'.

    פתיחת מסוף Google Cloud

  2. נכנסים לדף ניהול משאבים.
  3. בוחרים את המשאב הארגוני מהתפריט הנפתח ארגון בפינה הימנית העליונה של הדף.
  4. לוחצים על Create Project.
  5. מזינים שם פרויקט.
  6. בתיבה יעד, לוחצים על עיון כדי לבחור את התיקייה שרוצים ליצור בה את הפרויקט.
  7. לוחצים על יצירה.

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 במשאב הארגון

אפשר לקבל את ההרשאות האלה גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.

המסוף

כדי להעביר פרויקט:

  1. במסוף Google Cloud , נכנסים לדף Manage resources.

    מעבר לניהול משאבים

  2. בוחרים את הארגון מהתפריט הנפתח ארגון בפינה הימנית העליונה של הדף.

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

  4. לוחצים על תפריט האפשרויות (סמל האליפסה האנכית) בשורה ואז על העברה.

  5. לוחצים על Browse (עיון) כדי לבחור את התיקייה שאליה רוצים להעביר את הפרויקט.

  6. לוחצים על 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 גם לתיקיית המקור וגם לתיקיית היעד.

המסוף

תהליך העברת תיקיות לתיקיות אחרות במסוף דומה להעברת פרויקטים.

  1. במסוף Google Cloud , פותחים את הדף 'ניהול משאבים'.

    פתיחת מסוף Google Cloud

  2. בוחרים את המשאב הארגוני מהתפריט הנפתח ארגון בפינה הימנית העליונה של הדף.
  3. לוחצים על השורה של התיקייה כדי לבחור אותה מתוך רשימת הפרויקטים והתיקיות.
  4. לוחצים על תפריט האפשרויות (סמל האליפסה האנכית) בשורה ואז על העברה.
  5. לוחצים על עיון כדי לבחור את התיקייה שאליה רוצים להעביר את התיקייה.
  6. לוחצים על 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) בתיקייה.

המסוף

  1. במסוף Google Cloud , פותחים את הדף Manage resources.

    פתיחת הדף Manage resources

  2. בתפריט הנפתח ארגון, בוחרים את הארגון.

  3. ברשימת המשאבים, לוחצים על שם התיקייה כדי להרחיב אותה ולראות את הפרויקטים שלה.

    אופציונלי: משתמשים בסרגל 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: הערך של התווית.

המאמרים הבאים