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

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

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

  • תפקידים מוגדרים מראש ב-App Engine, שמאפשרים גישה פרטנית ל-App Engine. לכל שירות בGoogle Cloud פרויקט יש תפקידים מוגדרים מראש משלו. לדוגמה, חשבון שיש לו רק את התפקיד 'פריסה ב-App Engine' יכול לפרוס אפליקציות של 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.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.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.get

appengine.versions.list

artifactregistry.projectsettings.get

artifactregistry.repositories.deleteArtifacts

artifactregistry.repositories.downloadArtifacts

artifactregistry.repositories.uploadArtifacts

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.locations.*

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

resourcemanager.projects.get

resourcemanager.projects.list

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

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

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

  • תפקיד פריסה ב-App Engine (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' ו'אדמין שירות של App Engine' מספקים את ההפרדה הזו:

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

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

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

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