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

אפשר ליצור, להעביר, להציג ולסנן פרויקטים בתוך תיקיות באמצעות מסוףGoogle Cloud , ‏Google Cloud CLI או Cloud Resource Manager API. ארגון הפרויקטים בתיקיות מאפשר להחיל כללי מדיניות שעוברים בירושה, להקצות הרשאות ניהול ולהתאים את Google Cloud היררכיית המשאבים לצוותים ולסביבות שלכם.

סקירה כללית

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

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

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

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

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

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

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

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

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

המסוף

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

    כניסה למסוף Google Cloud

  2. נכנסים לדף Manage resources.
  3. בוחרים את המשאב הארגוני מהתפריט הנפתח Organization בפינה הימנית העליונה של הדף.
  4. לוחצים על Create Project.
  5. מזינים שם פרויקט.
  6. בתיבה Destination, לוחצים על Browse כדי לבחור את התיקייה שבה רוצים ליצור את הפרויקט.
  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 שנותן למשתמשים הרשאה להשתמש בשירות מסוים, למשתמשים לא תהיה גישה לשירות הזה ביעד, אלא אם הוא יירש את ההרשאה גם ביעד.

לדוגמה, נניח שלחשבון שירות יש את התפקיד יצירת אובייקטים באחסון, שמקושר למשתמש בתיקייה א'. לחשבון השירות יש הרשאות להעלות נתונים ל-Cloud Storage בכל פרויקט בתיקייה א'. אם תעבירו את אחד מהפרויקטים האלה לתיקייה B, שאין לה את אותן הרשאות שעוברות בירושה, חשבון השירות של הפרויקט הזה יאבד את היכולת להעלות נתונים, וכתוצאה מכך תהיה הפסקה בשירות.

אותם שיקולים רלוונטיים גם אם מדיניות הארגון מוגדרת בתיקיות המקור והיעד. בדומה למדיניות IAM, מדיניות הארגון עוברת בירושה. לכן, חשוב לוודא שמדיניות הארגון עקבית בין תיקיות המקור והיעד.

למידע נוסף על מדיניות הארגון, ראו מבוא לשירות מדיניות הארגון.

כדי להעביר פרויקט, צריך את תפקיד ה-IAM "העברת פרויקטים" (roles/resourcemanager.projectMover) גם בתיקיית המקור וגם בתיקיית היעד. אם המשאב לא נמצא בתיקייה, צריך את התפקיד הזה במשאב הארגון.

התפקידים האלה נותנים את ההרשאות הנדרשות הבאות:

  • ‫resourcemanager.projects.update בפרויקט
  • אם המשאב נמצא בתיקייה: resourcemanager.projects.move בתיקיית המקור ובתיקיית היעד
  • אם המשאב לא נמצא בתיקייה: resourcemanager.projects.move במשאב הארגון

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

המסוף

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

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

    כניסה לדף Manage resources

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

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

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

  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

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

העברת תיקייה לתיקייה אחרת

כדי להעביר תיקייה לתיקייה אחרת, צריכה להיות לכם ההרשאה resourcemanager.folders.move גם בתיקיית המקור וגם בתיקיית היעד.

המסוף

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

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

    כניסה למסוף Google Cloud

  2. בוחרים את המשאב הארגוני מהתפריט הנפתח Organization בפינה הימנית העליונה של הדף.
  3. לוחצים על השורה של התיקייה כדי לבחור אותה מרשימת הפרויקטים והתיקיות.
  4. לוחצים על תפריט האפשרויות (סמל שלוש הנקודות האנכיות) בשורה ולוחצים על Move.
  5. לוחצים על Browse כדי לבחור את התיקייה שאליה רוצים להעביר את התיקייה.
  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: השם המוצג של התיקייה שמועברת, לדוגמה "התיקייה המדהימה שלי".

התשובה של 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. פותחים את הדף Manage resources במסוף Google Cloud .

    לדף Manage resources

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

  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: הערך של התווית.

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