הגדרת חשבונות שירות ב-App Engine

אפליקציות App Engine צריכות חשבון שירות כדי לגשת לשירותים אחרים של Google Cloud ולבצע משימות.

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

  • חשבון שירות שמוגדר כברירת מחדל ברמת האפליקציה – חשבון השירות הזה משמש את כל השירותים שפרסתם, אם לא הגדרתם 'חשבון שירות לכל גרסה'. אתם יכולים להקצות חשבון שירות שיצרתם או להשתמש בחשבון השירות שמוגדר כברירת מחדל ונוצר באופן אוטומטי כשאתם פורסים שירות בפרויקט בענן בפעם הראשונה. לדוגמה, חשבון השירות שמוגדר כברירת מחדל ב-App Engine (PROJECT_ID@appspot.gserviceaccount.com).

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

הצגת חשבונות השירות שהוגדרו

כדי לראות את חשבון השירות שמוגדר כברירת מחדל ברמת האפליקציה, מריצים את הפקודה gcloud app describe.

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

gcloud

מריצים את הפקודה gcloud app versions describe:

  gcloud app versions describe VERSION_ID --service=SERVICE_NAME

מחליפים את:

  • VERSION_ID במזהה הגרסה.
  • SERVICE_NAME בשם השירות שיצרתם.

המסוף

  1. עוברים לכרטיסייה Versions של App Engine במסוף. כניסה לדף Versions
  2. מאתרים את כתובת האימייל של חשבון השירות הספציפי לגרסה של App Engine. לדוגמה: SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com

הקצאת חשבון שירות שמוגדר כברירת מחדל ברמת האפליקציה

כברירת מחדל, חשבון השירות שמוגדר כברירת מחדל ברמת האפליקציה הוא חשבון השירות PROJECT_ID@appspot.gserviceaccount.com שנוצר אוטומטית. אתם יכולים להקצות חשבון שירות אחר שיפעל כחשבון השירות שמוגדר כברירת מחדל ברמת האפליקציה באמצעות Google Cloud CLI, מסוףGoogle Cloud או Admin API.

ציון חשבון שירות שמוגדר כברירת מחדל ברמת האפליקציה במהלך יצירת האפליקציה

במהלך תהליך היצירה הראשוני של אפליקציית App Engine, אתם יכולים להקצות חשבון שירות שיצרתם או להשתמש בחשבון השירות PROJECT_ID@appspot.gserviceaccount.com שנוצר אוטומטית כברירת מחדל.

כדי ליצור אפליקציית App Engine ולהקצות חשבון שירות שמוגדר כברירת מחדל ברמת האפליקציה, אפשר להשתמש באחת מהאפשרויות הבאות:

gcloud

מריצים את הפקודה gcloud app create:

gcloud app create --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com

מחליפים את:

  • SERVICE_ACCOUNT_NAME בשם של חשבון השירות שיצרתם.
  • PROJECT_ID עם המזהה של הפרויקט שבו רוצים להקצות את חשבון השירות. Google Cloud

המסוף

  1. עוברים לדף App Engine:

    מעבר אל App Engine

  2. יוצרים Google Cloud פרויקט.

  3. בקטע Create App (יצירת אפליקציה), בוחרים חשבון שירות מתוך Identity and API access (זהות וגישה ל-API).

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

כדי לעדכן את חשבון השירות שמוגדר כברירת מחדל ברמת האפליקציה, אפשר להשתמש באחת מהאפשרויות הבאות כדי להקצות חשבון שירות חדש:

gcloud

מריצים את הפקודה gcloud app update.

    gcloud app update --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com

מחליפים את:

  • SERVICE_ACCOUNT_NAME בשם של חשבון השירות שיצרתם.
  • PROJECT_ID עם מזהה הפרויקט Google Cloud שבו רוצים להקצות את חשבון השירות.

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

המסוף

  1. עוברים לכרטיסייה Application Settings (הגדרות האפליקציה) ב-App Engine במסוף ולוחצים על Edit Application Settings (עריכת הגדרות האפליקציה).

    מעבר אל 'הגדרות לאפליקציות'

  2. בוחרים חשבון שירות שמוגדר כברירת מחדל ברמת האפליקציה מתוך Select a Service account (בחירת חשבון שירות) ולוחצים על Save (שמירה).

    תועברו לכרטיסייה הגדרות האפליקציה, שבה תוכלו לראות את כתובת האימייל של חשבון השירות שמוגדר כברירת מחדל ברמת האפליקציה. דוגמה: SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com.

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

פריסה עם חשבון שירות ספציפי לגרסה

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

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

אחרי 15 במאי 2024, מאגר Artifact Registry יארח תמונות לדומיין gcr.io בפרויקטיםGoogle Cloud שלא נעשה בהם שימוש קודם ב-Container Registry. אם תפרסו אפליקציה קיימת בפרויקט חדש שנוצר אחרי התאריך הזה, יכול להיות שלחשבון השירות לא יהיו ההרשאות הנדרשות לפריסת האפליקציה. כדי להעניק את ההרשאות הנדרשות, אפשר לעיין במאמר בנושא פריסה ב-App Engine.

הגדרת חשבון שירות ספציפי לגרסה

gcloud

מריצים את הפקודה gcloud app deploy:

  gcloud app deploy --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com

מחליפים את:

  • SERVICE_ACCOUNT_NAME בשם של חשבון השירות שיצרתם.
  • PROJECT_ID עם מזהה הפרויקט שבו רוצים להקצות את חשבון השירות. חשבון השירות הספציפי לגרסה צריך להיות באותו פרויקט שבו פורסתם את האפליקציה. Google Cloud

app.yaml

בתוך הקובץ app.yaml, מוסיפים את הרכיב service_account כדי לציין את חשבון השירות:

service_account: SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com

מחליפים את:

  • SERVICE_ACCOUNT_NAME בשם של חשבון השירות שיצרתם.
  • PROJECT_ID עם מזהה הפרויקט שבו רוצים להקצות את חשבון השירות. חשבון השירות הספציפי לגרסה צריך להיות באותו פרויקט שבו פורסתם את האפליקציה. Google Cloud

חשבון השירות של App Engine שמוגדר כברירת מחדל

חשבון השירות של App Engine שמוגדר כברירת מחדל נוצר באופן אוטומטי כשמשתמשים ב-App Engine.

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

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

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

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

אחרי 15 במאי 2024, מאגר Artifact Registry יארח תמונות לדומיין gcr.io בפרויקטיםGoogle Cloud שלא נעשה בהם שימוש קודם ב-Container Registry. אם תפרסו אפליקציה קיימת בפרויקט חדש שנוצר אחרי התאריך הזה, יכול להיות שלחשבון השירות לא יהיו ההרשאות הנדרשות לפריסת האפליקציה. כדי להעניק את ההרשאות הנדרשות, אפשר לעיין במאמר בנושא פריסה ב-App Engine.

במאמר יצירה וניהול של חשבונות שירות מוסבר איך משנים הרשאות, מוחקים ומשחזרים חשבונות שירות.