הגדרת חשבון השירות

כדי להשתמש ב-Infrastructure Manager כדי ליצור, לעדכן או למחוק פריסה, צריך להשתמש בחשבון שירות. ‫Infra Manager מריץ את Terraform באמצעות הזהות של חשבון השירות הזה.

לא צריך חשבון שירות כדי להציג מידע על פריסות של Infra Manager.

בדף הזה מוסבר איך להגדיר חשבון שירות כדי שתוכלו לפרוס משאבים באמצעות Infrastructure Manager.

לפני שמתחילים

  1. מפעילים את שירות Infra Manager.
  2. יוצרים חשבון שירות או מזהים חשבון שירות קיים לשימוש עם Infra Manager.

הענקת גישה לחשבון השירות

כדי להשתמש ב-Infrastructure Manager כדי ליצור, לעדכן או למחוק פריסה, משתמש פרטי צריך לקבל גישה לחשבון השירות.

מקצים למשתמש את התפקיד משתמש בחשבון שירות (roles/iam.serviceAccountUser) ב-IAM עבור חשבון השירות.

מתן הרשאות ל-Infra Manager

כדי לעבוד עם Infra Manager, לחשבון השירות צריך להיות התפקיד Infra Manager Agent (roles/config.agent). הרשאות ל-Infra Manager ליצור, לעדכן ולמחוק משאבים:

   gcloud projects add-iam-policy-binding INFRA_MANAGER_PROJECT_ID \
      --member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \
      --role="roles/config.agent"

מחליפים את:

  • INFRA_MANAGER_PROJECT_ID: מזהה הפרויקט שבו יוצרים פריסות.

  • SERVICE_ACCOUNT_EMAIL: כתובת האימייל של חשבון השירות.

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

הענקת הרשאת קריאה לקטגוריית האחסון

אפשר להשתמש בקטגוריית אחסון כדי לאחסן את הגדרות Terraform שנפרסות על ידי Infra Manager.

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

אם קטגוריית האחסון נמצאת באותו פרויקט כמו Infra Manager, והענקתם את ההרשאה roles/config.agent לחשבון השירות, הרשאת הקריאה לקטגוריה כבר מופעלת.

מידע נוסף על העלאת הגדרות לקטגוריית אחסון זמין במאמר העלאת הגדרות של Terraform.

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

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

  • הרשאות ספציפיות למשאבים Google Cloud שמוגדרים בתצורת Terraform שאתם פורסים. לדוגמה, ההרשאה ליצירת מכונה וירטואלית של Compute Engine היא compute.instances.create.

  • הרשאות ספציפיות ל Google Cloud משאבים שמוגדרים בתצורת Terraform של הפריסה שאתם מעדכנים.

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

    • הרשאות למשאבים שמוגדרים בהגדרה החדשה.

    • הרשאות למשאבים שנמחקים, כמו המכונה הווירטואלית של Compute Engine בדוגמה הזו.

במאמר בחירת תפקידים מוגדרים מראש מוסבר איך לזהות את ההרשאות שנדרשות למשאבים בתצורות של Terraform.

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

הענקת גישה למספר פרויקטים

אם חשבון השירות שצוין נמצא בפרויקט אחר מהפרויקט שבו מופעל שירות Infra Manager, נדרשות הרשאות נוספות.

כדי להעניק את ההרשאות הנוספות האלה:

  1. מוודאים שלחשבון השירות יש את התפקיד Infra Manager Agent ‏ (roles/config.agent) בפרויקט שבו פועל Infra Manager. הוראות להענקת הרשאות מופיעות במאמר הענקת הרשאות ל-Infra Manager.

  2. אופציונלי: אם אתם משתמשים ב-Developer Connect כדי לפרוס הגדרות של Terraform, צריך להקצות את התפקיד roles/iam.serviceAccountTokenCreator לחשבון השירות.

  3. בפרויקט שבו נמצא חשבון השירות, מוודאים שאילוץ מדיניות הארגון iam.disableCrossProjectServiceAccountUsage לא נאכף. האילוץ הזה נאכף כברירת מחדל.

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

       gcloud resource-manager org-policies disable-enforce iam.disableCrossProjectServiceAccountUsage
           --project=SERVICE_ACCOUNT_PROJECT_ID
    

    מחליפים את SERVICE_ACCOUNT_PROJECT_ID במזהה הפרויקט שמכיל את חשבון השירות.

  4. בפרויקט שבו נמצא חשבון השירות, מקצים את התפקיד roles/iam.serviceAccountUser לסוכן השירות של Infra Manager בפרויקט שבו יוצרים פריסות:

    gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \
       --member="serviceAccount:service-INFRA_MANAGER_PROJECT_NUMBER@gcp-sa-config.iam.gserviceaccount.com" \
       --role="roles/iam.serviceAccountUser"
    

    מחליפים את:

    • SERVICE_ACCOUNT_PROJECT_ID: מזהה הפרויקט שמכיל את חשבון השירות.
    • INFRA_MANAGER_PROJECT_NUMBER: מספר הפרויקט שבו יוצרים פריסות. כך נוצר מזהה האימייל של סוכן השירות: service-INFRA_MANAGER_PROJECT_NUMBER@gcp-sa-config.iam.gserviceaccount.com
  5. מקצים לסוכן השירות של Cloud Build את התפקיד יצירת אסימונים בחשבון שירות (roles/iam.serviceAccountTokenCreator) בפרויקט שבו יוצרים פריסות. כדי לאפשר ל-Infra Manager להריץ את Terraform באמצעות Cloud Build, לסוכן השירות של Cloud Build בפרויקט שכולל את חשבון השירות נדרשות הרשאות נוספות כחלק מההגדרה של פרויקטים שונים:

    gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \
        --member="serviceAccount:service-INFRA_MANAGER_PROJECT_NUMBER@gcp-sa-cloudbuild.iam.gserviceaccount.com" \
         --role="roles/iam.serviceAccountTokenCreator"
    

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