אפליקציות 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בשם השירות שיצרתם.
המסוף
- עוברים לכרטיסייה Versions של App Engine במסוף. כניסה לדף Versions
- מאתרים את כתובת האימייל של חשבון השירות הספציפי לגרסה של 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
המסוף
עוברים לדף App Engine:
יוצרים Google Cloud פרויקט.
בקטע Create App, בוחרים חשבון שירות מתוך Identity and API access.
עדכון חשבון השירות שמוגדר כברירת מחדל ברמת האפליקציה
כדי לעדכן את חשבון השירות שמוגדר כברירת מחדל ברמת האפליקציה, אפשר להשתמש באחת מהאפשרויות הבאות כדי להקצות חשבון שירות חדש:
gcloud
מריצים את הפקודה gcloud app update.
gcloud app update --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
מחליפים את:
-
SERVICE_ACCOUNT_NAMEבשם של חשבון השירות שיצרתם. -
PROJECT_IDעם מזהה הפרויקט שבו רוצים להקצות את חשבון השירות. Google Cloud
כל גרסה חדשה שתפרסו מעכשיו ואילך תשתמש בחשבון השירות החדש שמוגדר כברירת מחדל ברמת האפליקציה, אלא אם תקצו במפורש חשבון שירות ספציפי לגרסה.
המסוף
עוברים לכרטיסייה הגדרות האפליקציה ב-App Engine במסוף ולוחצים על עריכת הגדרות האפליקציה.
בוחרים חשבון שירות שמוגדר כברירת מחדל ברמת האפליקציה מתוך Select a Service account (בחירת חשבון שירות) ולוחצים על Save (שמירה).
תועברו לכרטיסייה Application Settings (הגדרות האפליקציה) שבה תוכלו לראות את כתובת האימייל של חשבון השירות שמוגדר כברירת מחדל ברמת האפליקציה. לדוגמה:
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, האילוץ הזה נאכף כברירת מחדל.
אם משביתים את הענקת התפקיד האוטומטית, צריך לקבוע אילו תפקידים להעניק לחשבונות השירות שמוגדרים כברירת מחדל, ואז להעניק את התפקידים האלה בעצמכם.
אם לחשבון השירות שמוגדר כברירת מחדל כבר יש הרשאת עריכה, מומלץ להחליף את הרשאת העריכה בהרשאות עם פחות גישה.כדי לשנות את התפקידים בחשבון השירות בצורה בטוחה, כדאי להשתמש בסימולטור המדיניות כדי לראות את ההשפעה של השינוי, ואז לתת ולבטל את התפקידים המתאימים.
במאמר ניהול הגישה לפרויקטים, לתיקיות ולארגונים מוסבר איך מקצים תפקידים לחשבונות שירות ולחשבונות משתמשים אחרים.
אחרי 15 במאי 2024, Artifact Registry יארח תמונות לדומיין gcr.io בפרויקטיםGoogle Cloud שלא נעשה בהם שימוש קודם ב-Container Registry. אם תפרסו אפליקציה קיימת בפרויקט חדש שנוצר אחרי התאריך הזה, יכול להיות שלחשבון השירות לא יהיו ההרשאות הנדרשות לפריסת האפליקציה. כדי להעניק את ההרשאות הנדרשות, אפשר לעיין במאמר בנושא פריסה ב-App Engine.
במאמר יצירה וניהול של חשבונות שירות מוסבר איך משנים הרשאות, מוחקים ומשחזרים חשבונות שירות.