תפקידים שמעניקים גישה ל-App Engine

תפקידים קובעים אילו שירותים ופעולות זמינים לחשבון משתמש או לחשבון שירות. התפקידים הבאים מעניקים גישה ל-App Engine:

  • תפקידים בסיסיים שחלים על כל השירותים והמשאבים בפרויקט, כולל, בין היתר, App Engine. לדוגמה, חשבון עם תפקיד עורך יכול לשנות את ההגדרות של App Engine וגם את ההגדרות של Cloud Storage.

  • תפקידים מוגדרים מראש ב-App Engine, שמאפשרים גישה פרטנית ל-App Engine. כל שירות בGoogle Cloud פרויקט מספק תפקידים מוגדרים מראש משלו. לדוגמה, חשבון שיש לו רק את התפקיד App Engine Deployer יכול לפרוס אפליקציות של App Engine, אבל לא יכול להציג או ליצור אובייקטים ב-Cloud Storage. בנוסף, בחשבון כזה צריך להיות תפקיד מוגדר מראש ב-Cloud Storage כדי ליצור אובייקטים ב-Cloud Storage או לצפות בהם.

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

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

תפקידים בסיסיים

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

תפקיד Google Cloud הרשאות ב-Play Console הרשאות לכלים
Owner נדרשת כדי ליצור אפליקציות App Engine. כל ההרשאות של הצגה ועריכה, בנוסף ליכולת להציג קוד מקור שנפרס, להזמין משתמשים, לשנות תפקידי משתמשים ולמחוק אפליקציה. נדרש כדי ליצור אפליקציות App Engine. יכול גם לפרוס קוד אפליקציה ולעדכן את כל ההגדרות.
Editor צפייה בפרטי האפליקציה ועריכה של הגדרות האפליקציה. פריסת קוד האפליקציה, עדכון אינדקסים/תורים/משימות cron.
Viewer צפייה בפרטי האפליקציה. יומני בקשות

תפקידים מוגדרים מראש ב-App Engine

Role Permissions

(roles/appengine.appAdmin)

Read/Write/Modify access to all application configuration and settings.

To deploy new versions, a principal must have the Service Account User (roles/iam.serviceAccountUser) role on the assigned App Engine service account, and the Cloud Build Editor (roles/cloudbuild.builds.editor), and Cloud Storage Object Admin (roles/storage.objectAdmin) roles on the project.

Lowest-level resources where you can grant this role:

  • Project

appengine.applications.get

appengine.applications.listRuntimes

appengine.applications.update

appengine.instances.*

  • appengine.instances.delete
  • appengine.instances.enableDebug
  • appengine.instances.get
  • appengine.instances.list

appengine.memcache.addKey

appengine.memcache.flush

appengine.memcache.get

appengine.memcache.update

appengine.operations.*

  • appengine.operations.get
  • appengine.operations.list

appengine.runtimes.actAsAdmin

appengine.services.*

  • appengine.services.delete
  • appengine.services.get
  • appengine.services.list
  • appengine.services.update

appengine.versions.create

appengine.versions.delete

appengine.versions.exportAppImage

appengine.versions.get

appengine.versions.list

appengine.versions.update

artifactregistry.projectsettings.get

artifactregistry.repositories.deleteArtifacts

artifactregistry.repositories.downloadArtifacts

artifactregistry.repositories.uploadArtifacts

recommender.appengineVersionCostInsights.*

  • recommender.appengineVersionCostInsights.get
  • recommender.appengineVersionCostInsights.list
  • recommender.appengineVersionCostInsights.update

recommender.appengineVersionCostRecommendations.*

  • recommender.appengineVersionCostRecommendations.get
  • recommender.appengineVersionCostRecommendations.list
  • recommender.appengineVersionCostRecommendations.update

recommender.locations.*

  • recommender.locations.get
  • recommender.locations.list

resourcemanager.projects.get

resourcemanager.projects.list

(roles/appengine.appCreator)

Ability to create the App Engine resource for the project.

Lowest-level resources where you can grant this role:

  • Project

appengine.applications.create

resourcemanager.projects.get

resourcemanager.projects.list

(roles/appengine.appViewer)

Read-only access to all application configuration and settings.

Lowest-level resources where you can grant this role:

  • Project

appengine.applications.get

appengine.applications.listRuntimes

appengine.instances.get

appengine.instances.list

appengine.operations.*

  • appengine.operations.get
  • appengine.operations.list

appengine.services.get

appengine.services.list

appengine.versions.get

appengine.versions.list

artifactregistry.projectsettings.get

recommender.appengineVersionCostInsights.get

recommender.appengineVersionCostInsights.list

recommender.appengineVersionCostRecommendations.get

recommender.appengineVersionCostRecommendations.list

recommender.locations.*

  • recommender.locations.get
  • recommender.locations.list

resourcemanager.projects.get

resourcemanager.projects.list

(roles/appengine.codeViewer)

Read-only access to all application configuration, settings, and deployed source code.

Lowest-level resources where you can grant this role:

  • Project

appengine.applications.get

appengine.applications.listRuntimes

appengine.instances.get

appengine.instances.list

appengine.operations.*

  • appengine.operations.get
  • appengine.operations.list

appengine.services.get

appengine.services.list

appengine.versions.get

appengine.versions.getFileContents

appengine.versions.list

artifactregistry.projectsettings.get

resourcemanager.projects.get

resourcemanager.projects.list

(roles/appengine.debugger)

Ability to read or manage v2 instances.

appengine.applications.get

appengine.applications.listRuntimes

appengine.instances.*

  • appengine.instances.delete
  • appengine.instances.enableDebug
  • appengine.instances.get
  • appengine.instances.list

appengine.operations.*

  • appengine.operations.get
  • appengine.operations.list

appengine.services.get

appengine.services.list

appengine.versions.get

appengine.versions.list

resourcemanager.projects.get

resourcemanager.projects.list

(roles/appengine.deployer)

Read-only access to all application configuration and settings.

To deploy new versions, you must also have the Service Account User (roles/iam.serviceAccountUser) role on the assigned App Engine service account, and the Cloud Build Editor (roles/cloudbuild.builds.editor), and Cloud Storage Object Admin (roles/storage.objectAdmin) roles on the project.

Cannot modify existing versions other than deleting versions that are not receiving traffic.

Lowest-level resources where you can grant this role:

  • Project

appengine.applications.get

appengine.applications.listRuntimes

appengine.instances.get

appengine.instances.list

appengine.operations.*

  • appengine.operations.get
  • appengine.operations.list

appengine.services.get

appengine.services.list

appengine.versions.create

appengine.versions.delete

appengine.versions.exportAppImage

appengine.versions.get

appengine.versions.list

artifactregistry.projectsettings.get

artifactregistry.repositories.deleteArtifacts

artifactregistry.repositories.downloadArtifacts

artifactregistry.repositories.uploadArtifacts

recommender.appengineVersionCostInsights.*

  • recommender.appengineVersionCostInsights.get
  • recommender.appengineVersionCostInsights.list
  • recommender.appengineVersionCostInsights.update

recommender.appengineVersionCostRecommendations.*

  • recommender.appengineVersionCostRecommendations.get
  • recommender.appengineVersionCostRecommendations.list
  • recommender.appengineVersionCostRecommendations.update

recommender.locations.*

  • recommender.locations.get
  • recommender.locations.list

resourcemanager.projects.get

resourcemanager.projects.list

(roles/appengine.memcacheDataAdmin)

Can get, set, delete, and flush App Engine Memcache items.

appengine.applications.get

appengine.memcache.addKey

appengine.memcache.flush

appengine.memcache.get

appengine.memcache.update

resourcemanager.projects.get

resourcemanager.projects.list

(roles/appengine.serviceAdmin)

Read-only access to all application configuration and settings.

Write access to module-level and version-level settings. Cannot deploy a new version.

Lowest-level resources where you can grant this role:

  • Project

appengine.applications.get

appengine.applications.listRuntimes

appengine.instances.delete

appengine.instances.get

appengine.instances.list

appengine.operations.*

  • appengine.operations.get
  • appengine.operations.list

appengine.services.*

  • appengine.services.delete
  • appengine.services.get
  • appengine.services.list
  • appengine.services.update

appengine.versions.delete

appengine.versions.get

appengine.versions.list

appengine.versions.update

artifactregistry.projectsettings.get

recommender.appengineVersionCostInsights.*

  • recommender.appengineVersionCostInsights.get
  • recommender.appengineVersionCostInsights.list
  • recommender.appengineVersionCostInsights.update

recommender.appengineVersionCostRecommendations.*

  • recommender.appengineVersionCostRecommendations.get
  • recommender.appengineVersionCostRecommendations.list
  • recommender.appengineVersionCostRecommendations.update

recommender.locations.*

  • recommender.locations.get
  • recommender.locations.list

resourcemanager.projects.get

resourcemanager.projects.list

Service agent roles

Service agent roles should only be granted to service agents.

Role Permissions

(roles/appengine.serviceAgent)

Give App Engine Standard Envirnoment service account access to managed resources. Includes access to service accounts.

appengine.versions.delete

appengine.versions.get

appengine.versions.list

appengine.versions.update

artifactregistry.aptartifacts.create

artifactregistry.dockerimages.*

  • artifactregistry.dockerimages.get
  • artifactregistry.dockerimages.list

artifactregistry.files.download

artifactregistry.files.get

artifactregistry.files.list

artifactregistry.kfpartifacts.create

artifactregistry.locations.*

  • artifactregistry.locations.get
  • artifactregistry.locations.list

artifactregistry.mavenartifacts.*

  • artifactregistry.mavenartifacts.get
  • artifactregistry.mavenartifacts.list

artifactregistry.npmpackages.*

  • artifactregistry.npmpackages.get
  • artifactregistry.npmpackages.list

artifactregistry.packages.get

artifactregistry.packages.list

artifactregistry.projectsettings.get

artifactregistry.pythonpackages.*

  • artifactregistry.pythonpackages.get
  • artifactregistry.pythonpackages.list

artifactregistry.repositories.create

artifactregistry.repositories.downloadArtifacts

artifactregistry.repositories.get

artifactregistry.repositories.list

artifactregistry.repositories.listEffectiveTags

artifactregistry.repositories.listTagBindings

artifactregistry.repositories.readViaVirtualRepository

artifactregistry.repositories.uploadArtifacts

artifactregistry.tags.create

artifactregistry.tags.get

artifactregistry.tags.list

artifactregistry.tags.update

artifactregistry.versions.get

artifactregistry.versions.list

artifactregistry.yumartifacts.create

compute.addresses.create

compute.addresses.createInternal

compute.addresses.delete

compute.addresses.deleteInternal

compute.addresses.get

compute.addresses.list

compute.globalOperations.get

compute.networks.get

compute.regionOperations.get

compute.subnetworks.get

compute.subnetworks.use

compute.zoneOperations.get

datastore.databases.get

datastore.entities.create

datastore.entities.delete

datastore.entities.get

datastore.entities.list

datastore.entities.update

datastore.namespaces.*

  • datastore.namespaces.get
  • datastore.namespaces.list

datastore.schemas.list

datastore.statistics.*

  • datastore.statistics.get
  • datastore.statistics.list

iam.serviceAccounts.getAccessToken

iam.serviceAccounts.getOpenIdToken

iam.serviceAccounts.signBlob

serviceusage.consumerpolicy.*

  • serviceusage.consumerpolicy.analyze
  • serviceusage.consumerpolicy.get
  • serviceusage.consumerpolicy.update

serviceusage.effectivepolicy.get

serviceusage.groups.*

  • serviceusage.groups.list
  • serviceusage.groups.listExpandedMembers
  • serviceusage.groups.listMembers

serviceusage.services.enable

serviceusage.services.get

serviceusage.values.test

storage.buckets.create

storage.buckets.get

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

התפקידים האלה מספקים גישה רק ל-App Engine.אם הפרויקט כולל שירותים אחרים, כמו Cloud Storage או Cloud SQL, תצטרכו להקצות תפקידים נוספים כדי לאפשר גישה לשירותים האחרים.

השוואה בין תפקידים מוגדרים מראש ב-App Engine

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

יכולת App Engine Admin אדמין של שירות App Engine App Engine Deployer App Engine Viewer App Engine Code Viewer
הצגת רשימה של כל השירותים, הגרסאות והמופעים כן כן כן כן כן
הצגת כל ההגדרות של האפליקציה, השירות, הגרסה והמופע כן כן כן כן כן
הצגת מדדי זמן ריצה כמו שימוש במשאבים, פרטי עומס ופרטי שגיאות כן כן כן כן כן
הצגת קוד המקור של האפליקציה לא לא לא לא כן
פריסת גרסה חדשה של אפליקציה כן, אם נותנים גם את התפקיד Service Account User לא כן, אם נותנים גם את התפקיד Service Account User לא לא
חלוקה או העברה של תנועת הגולשים כן כן לא*** לא לא
איך מתחילים ומפסיקים גרסה כן כן לא לא לא
מחיקת גרסה כן כן כן לא לא
מחיקה של שירות שלם כן כן לא לא לא
שימוש ב-SSH כדי להתחבר למכונה וירטואלית בסביבה הגמישה כן לא לא לא לא
כיבוי של מכונה כן לא לא לא לא
השבתה והפעלה מחדש של אפליקציית App Engine כן לא לא לא לא
מטפלי גישה עם הגבלה מסוג login:admin (זמינים רק בסביבות זמן ריצה מהדור הראשון) כן לא לא לא לא
עדכון כללי השליחה כן לא לא לא לא
עדכון הגדרות DoS כן לא לא לא לא
עדכון לוחות זמנים של cron לא לא לא לא לא
עדכון ברירת המחדל של תפוגת קובצי Cookie כן לא לא לא לא
עדכון מקורות התנועה כן לא לא לא לא
עדכון של שולחים מורשים ב-Email API כן לא לא לא לא

פרטים על הרשאות IAM ספציפיות שניתנות לכל תפקיד מופיעים בקטע Roles במאמר בנושא Admin API.

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

  • התפקיד App Engine Deployer (roles/appengine.deployer)
  • התפקיד 'משתמש בחשבון שירות' (roles/iam.serviceAccountUser)

    התפקיד 'משתמש בחשבון שירות' מאפשר לחשבון להתחזות לחשבון השירות שמשמש כברירת המחדל של App Engine במהלך תהליך הפריסה.

  • אם משתמשים בפקודות gcloud לפריסה בחשבון, צריך להוסיף גם את התפקידים הבאים:

    • אדמין של אובייקטים באחסון (roles/storage.objectAdmin)
    • עריכה ב-Cloud Build (roles/cloudbuild.builds.editor)
  • כדי לגשת לנתונים שמאוחסנים ב-Datastore או לעדכן אינדקסים, צריך להפעיל את תפקיד ניהול האינדקסים של Cloud Datastore ‏ (roles/datastore.indexAdmin).

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

הפרדה בין תפקידים שקשורים לפריסה ולניתוב תנועה

ארגונים רבים מעדיפים להפריד בין המשימה של פריסת גרסת אפליקציה לבין המשימה של הגדלת נפח התנועה לגרסה החדשה שנוצרה, ושהמשימות האלה יבוצעו על ידי תפקידים שונים. התפקידים 'App Engine Deployer' ו'אדמין שירות של App Engine' מספקים את ההפרדה הזו:

  • תפקידים 'App Engine Deployer' ו'משתמש בחשבון שירות' – החשבונות מוגבלים לפריסת גרסאות חדשות ולמחיקת גרסאות ישנות שלא משרתות תעבורת נתונים. החשבון עם התפקידים האלה לא יוכל להגדיר תעבורת נתונים לגרסה כלשהי ולא יוכל לשנות הגדרות ברמת האפליקציה, כמו כללי שליחה או תחום אימות.
  • תפקיד אדמין שירות App Engine – חשבונות לא יכולים לפרוס גרסה חדשה של אפליקציה או לשנות הגדרות ברמת האפליקציה. עם זאת, לחשבונות האלה יש הרשאות לשנות את המאפיינים של שירותים וגרסאות קיימים, כולל שינוי הגרסאות שיכולות להעביר תעבורה. תפקיד האדמין של שירות App Engine מתאים במיוחד למחלקת תפעול או IT שמטפלת בהגדלת נפח התנועה לגרסאות חדשות שנפרסו.

המגבלות של התפקידים המוגדרים מראש

אף אחד מהתפקידים המוגדרים מראש ב-App Engine לא מעניק גישה לפריטים הבאים:

  • צפייה ביומני האפליקציות והורדה שלהם.
  • הצגת תרשימי Monitoring במסוף Google Cloud .
  • הפעלה והשבתה של החיוב.
  • מריצים סריקות אבטחה ב-Cloud Security Scanner.
  • הגדרת גישה או נתונים שמאוחסנים ב-Datastore, בתורי משימות, ב-Cloud Search או בכל מוצר אחסון אחר של Cloud Platform.