Peran yang Memberikan Akses ke App Engine

Peran menentukan layanan dan tindakan yang tersedia untuk akun pengguna atau akun layanan. Jenis peran berikut memberikan akses ke App Engine:

  • Peran dasar yang berlaku untuk semua layanan dan resource dalam suatu project, termasuk tapi tidak terbatas pada App Engine. Misalnya, akun dengan peran Editor dapat mengubah setelan App Engine dan setelan Cloud Storage.

  • Peran bawaan App Engine, yang menyediakan akses terperinci ke App Engine. Setiap layanan dalam project Google Cloud Anda menyediakan peran bawaannya sendiri. Misalnya, akun yang hanya memiliki peran App Engine Deployer dapat men-deploy aplikasi App Engine, tetapi tidak dapat melihat atau membuat objek di Cloud Storage. Akun tersebut juga memerlukan peran bawaan Cloud Storage tertentu untuk membuat atau melihat objek di Cloud Storage.

  • Peran khusus, yang memberikan akses terperinci sesuai dengan daftar izin yang Anda tentukan.

Anda dapat menggunakan peran dasar saat mengerjakan project kecil yang memiliki kebutuhan yang tidak terlalu kompleks. Untuk kontrol akses yang lebih disesuaikan, gunakan peran bawaan.

Peran dasar

Peran dasar berlaku untuk semua layanan dan resource dalam sebuah project. Misalnya, akun dalam peran Editor dapat mengubah setelan App Engine dan setelan Cloud Storage.

Peran Izin konsol Google Cloud Izin alat
Owner Diperlukan untuk membuat aplikasi App Engine. Semua hak istimewa pelihat dan editor, serta kemampuan untuk melihat kode sumber yang di-deploy, mengundang pengguna, mengubah peran pengguna, dan menghapus aplikasi. Diperlukan untuk membuat aplikasi App Engine. Juga dapat men-deploy kode aplikasi dan mengupdate semua konfigurasi.
Editor Melihat informasi aplikasi dan mengedit setelan aplikasi. Men-deploy kode aplikasi, mengupdate indeks/antrean/cron.
Viewer Lihat informasi aplikasi. Log permintaan

Peran bawaan 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.get

appengine.versions.list

appengine.versions.update

artifactregistry.projectsettings.get

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

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

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

resourcemanager.projects.get

resourcemanager.projects.list

Peran bawaan untuk App Engine memberi Anda opsi yang lebih terperinci untuk kontrol akses.

Peran ini hanya memberikan akses ke App Engine. Jika project Anda menyertakan layanan lain, seperti Cloud Storage atau Cloud SQL, Anda harus menetapkan peran tambahan untuk mengaktifkan akses ke layanan lain.

Perbandingan peran bawaan App Engine

Tabel berikut memberikan perbandingan lengkap dari kemampuan setiap peran bawaan App Engine.

Kemampuan App Engine Admin App Engine Service Admin App Engine Deployer App Engine Viewer App Engine Code Viewer
Membuat daftar dari semua layanan, versi, dan instance Ya Ya Ya Ya Ya
Melihat semua setelan aplikasi, layanan, versi, dan instance Ya Ya Ya Ya Ya
Melihat metrik runtime seperti penggunaan resource, informasi pemuatan, dan informasi error Ya Ya Ya Ya Ya
Melihat kode sumber aplikasi Tidak Tidak Tidak Tidak Ya
Men-deploy versi baru aplikasi Ya, jika Anda juga memberikan peran Service Account User Tidak Ya, jika Anda juga memberikan peran Service Account User Tidak Tidak
Memisahkan atau memigrasikan traffic Ya Ya Tidak*** Tidak Tidak
Memulai dan menghentikan versi Ya Ya Tidak Tidak Tidak
Menghapus versi Ya Ya Ya Tidak Tidak
Menghapus seluruh layanan Ya Ya Tidak Tidak Tidak
Menggunakan SSH untuk terhubung ke instance VM di lingkungan yang fleksibel Ya Tidak Tidak Tidak Tidak
Menonaktifkan instance Ya Tidak Tidak Tidak Tidak
Menonaktifkan dan mengaktifkan kembali aplikasi App Engine Ya Tidak Tidak Tidak Tidak
Pengendali akses yang memiliki pembatasan login:admin (khusus runtime generasi pertama) Ya Tidak Tidak Tidak Tidak
Memperbarui aturan dispatch Ya Tidak Tidak Tidak Tidak
Memperbarui setelan DoS Ya Tidak Tidak Tidak Tidak
Memperbarui jadwal cron Tidak Tidak Tidak Tidak Tidak
Memperbarui masa berlaku cookie default Ya Tidak Tidak Tidak Tidak
Memperbarui perujuk Ya Tidak Tidak Tidak Tidak
Memperbarui Pengirim Resmi Email API Ya Tidak Tidak Tidak Tidak

Untuk mengetahui detail tentang izin IAM tertentu yang diberikan oleh setiap peran, lihat bagian Peran Admin API.

Untuk akun yang hanya bertanggung jawab men-deploy versi baru aplikasi, sebaiknya berikan peran berikut:

  • Peran App Engine Deployer (roles/appengine.deployer)
  • Peran Service Account User (roles/iam.serviceAccountUser)

    Peran Service Account User memungkinkan akun meniru identitas akun layanan App Engine default selama proses deployment-nya.

  • Jika akun menggunakan perintah gcloud untuk melakukan deployment, tambahkan juga peran berikut:

    • Storage Object Admin (roles/storage.objectAdmin)
    • Cloud Build Editor (roles/cloudbuild.builds.editor)

Untuk mengetahui detail tentang cara memberikan izin yang diperlukan, lihat Membuat akun pengguna.

Pemisahan tugas deployment dan pemilihan rute traffic

Banyak organisasi lebih suka memisahkan tugas men-deploy versi aplikasi dari tugas meningkatkan traffic ke versi yang baru dibuat, dan agar tugas ini dilakukan oleh fungsi tugas yang berbeda. Peran App Engine Deployer dan App Engine Admin Service menyediakan pemisahan ini:

  • Peran App Engine Deployer plus Service Account User - Akun dibatasi untuk men-deploy versi baru dan menghapus versi lama yang tidak menyalurkan traffic. Akun dengan peran ini tidak akan dapat mengonfigurasi traffic ke versi apa pun, dan juga tidak dapat mengubah setelan tingkat aplikasi seperti aturan dispatch atau domain autentikasi.
  • Peran App Engine Service Admin - Akun tidak dapat men-deploy versi baru aplikasi atau mengubah setelan tingkat aplikasi. Namun, akun tersebut memiliki hak istimewa untuk mengubah properti layanan dan versi yang ada, termasuk mengubah versi yang dapat menyalurkan traffic. Peran App Engine Service Admin cocok untuk departemen IT/Operasi yang menangani peningkatan traffic ke versi yang baru di-deploy.

Batasan peran bawaan

Peran bawaan App Engine tidak memberikan akses ke hal berikut:

  • Melihat dan mendownload log aplikasi.
  • Melihat diagram Monitoring di konsol Google Cloud.
  • Mengaktifkan dan Menonaktifkan penagihan.
  • Jalankan pemindaian keamanan di Cloud Security Scanner.
  • Mengakses konfigurasi atau data yang disimpan di Datastore, Task Queues, Cloud Search, atau produk penyimpanan Cloud Platform lainnya.