Halaman ini menyediakan saran untuk mengamankan pembuatan dan konfigurasi antrean. Kuncinya adalah membatasi metode pengelolaan antrean ke sekelompok kecil orang atau entitas. Untuk organisasi besar, Anda mungkin perlu menggunakan akun layanan untuk menjalankan software yang memberlakukan konfigurasi antrean yang tepat.
Gagasan umumnya adalah memisahkan pengguna dan entitas lain ke dalam tiga kategori:
- Admin Antrean - Pengguna dalam grup ini memiliki izin untuk memanggil metode pengelolaan antrean Cloud Tasks, atau mengupload file
queue.yaml
. Grup ini dibatasi untuk sekelompok pengguna yang sangat kecil guna mengurangi risiko konfigurasi antrean yang tidak dapat diandalkan, terutama dengan tidak sengaja menggabungkan metode pengelolaan antreanqueue.yaml
dan Cloud Tasks. - Pekerja Cloud Tasks - Pengguna dalam grup ini memiliki izin untuk melakukan interaksi umum dengan Cloud Tasks, seperti menambahkan dan menghapus antrean tugas. Mereka tidak diizinkan untuk memanggil metode pengelolaan antrean Cloud Tasks.
- App Engine Deployer - Untuk project yang memiliki aplikasi App Engine, pengguna dalam grup ini memiliki izin untuk men-deploy aplikasi. Mereka tidak diizinkan untuk mengupload file
queue.yaml
atau melakukan panggilan Cloud Tasks API, sehingga memungkinkan admin antrean untuk menerapkan kebijakan yang tepat.
Dalam skema ini, pengguna yang merupakan admin antrean juga tidak boleh menjadi pekerja Cloud Tasks, karena hal itu akan menggagalkan tujuan pemisahan.
Jika project Anda menggunakan metode pengelolaan antrean Cloud Tasks secara eksklusif, admin antrean mungkin juga tidak boleh menjadi deployer App Engine, karena hal ini akan memungkinkan file queue.yaml
yang salah diupload.
Proyek dan organisasi kecil
Project dan organisasi kecil dapat menetapkan peran Identity and Access Management (IAM) secara langsung kepada pengguna untuk menempatkannya ke dalam grup di atas. Hal ini cocok bagi tim yang lebih memilih kesederhanaan konfigurasi atau yang membuat perubahan konfigurasi antrean atau deployment aplikasi App Engine secara manual.
Tambahkan pengguna ke grup ini sebagai berikut:
Admin Antrean
Sebagai admin project, berikan peran
cloudtasks.queueAdmin
kepada pengguna yang diizinkan untuk melakukan panggilan API pengelolaan antrean Cloud Tasks atau mengupload filequeue.yaml
.gcloud projects add-iam-policy-binding PROJECT_ID \ --member user:EMAIL \ --role roles/cloudtasks.queueAdmin
Ganti kode berikut:
PROJECT_ID
: ID project AndaEMAIL
: email untuk pengguna anggota
Sebagai pengguna dengan peran
cloudtasks.queueAdmin
, dengan mengikuti praktik terbaik di atas, pilih salah satu metode berikut untuk mengubah konfigurasi antrean.Gunakan Cloud Tasks API untuk mengubah konfigurasi antrean.
Upload
queue.yaml
dengangcloud
:gcloud app deploy queue.yaml
Pekerja Cloud Tasks
Karena sering kali ada banyak pengguna yang diizinkan untuk berinteraksi dengan Cloud Tasks, Anda dapat menetapkan peran ke Akun Layanan, bukan pengguna individu. Jenis penggunaan ini umum dalam produksi. Untuk mengetahui informasi selengkapnya, lihat Project dan organisasi besar.
Sebagai admin project, berikan peran kepada pengguna yang diizinkan untuk berinteraksi dengan Cloud Tasks, tetapi tidak dapat mengubah konfigurasi antrean:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:cloud-tasks-worker@PROJECT_ID.iam.gserviceaccount.com \ --role roles/cloudtasks.viewer gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:cloud-tasks-worker@PROJECT_ID.iam.gserviceaccount.com \ --role roles/cloudtasks.enqueuer gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:cloud-tasks-worker@PROJECT_ID.iam.gserviceaccount.com \ --role roles/cloudtasks.dequeuer gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:cloud-tasks-worker@PROJECT_ID.iam.gserviceaccount.com \ --role roles/cloudtasks.taskRunner gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:cloud-tasks-worker@PROJECT_ID.iam.gserviceaccount.com \ --role roles/cloudtasks.taskDeleter
Ganti
PROJECT_ID
dengan ID project Anda.
Sebagai pengguna dengan satu atau beberapa peran yang diberikan di atas, Anda dapat berinteraksi dengan Cloud Tasks API.
App Engine Deployer
Sebagai admin project, berikan peran kepada pengguna yang diizinkan untuk men-deploy aplikasi App Engine, tetapi tidak diizinkan untuk mengubah konfigurasi antrean atau berinteraksi dengan tugas:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member user:EMAIL \ --role roles/appengine.deployer gcloud projects add-iam-policy-binding PROJECT_ID \ --member user:EMAIL \ --role roles/appengine.serviceAdmin gcloud projects add-iam-policy-binding PROJECT_ID \ --member user:EMAIL \ --role roles/storage.admin
Ganti kode berikut:
PROJECT_ID
: ID project AndaEMAIL
: email untuk pengguna anggota
Sebagai pengguna dengan peran yang diberikan di atas, deploy aplikasi App Engine.
gcloud app deploy app.yaml
Proyek dan organisasi besar
Project dan organisasi besar dapat menggunakan Akun Layanan untuk memisahkan tugas dan tanggung jawab. Hal ini cocok bagi tim yang memiliki infrastruktur kompleks untuk mengubah konfigurasi antrean dan mungkin juga men-deploy aplikasi App Engine.
Untuk mengikuti prinsip hak istimewa terendah dan menyederhanakan pengelolaan akses, petunjuk ini menggunakan peniruan akun layanan. Untuk mempelajari pola ini lebih lanjut, lihat Menggunakan peniruan identitas akun layanan dalam dokumentasi autentikasi Google Cloud.
Ikuti petunjuk untuk menyiapkan akun layanan ini.
Admin Antrean
Sebagai admin project, buat akun layanan.
gcloud iam service-accounts create queue-admin \ --display-name "Queue Admin"
Berikan peran
cloudtasks.queueAdmin
ke akun layanan agar dapat mengupload filequeue.yaml
dan melakukan panggilan API pengelolaan antrean Cloud Tasks.gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:queue-admin@PROJECT_ID.iam.gserviceaccount.com \ --role roles/cloudtasks.queueAdmin
Ganti
PROJECT_ID
dengan ID project Anda.Mengizinkan peniruan identitas akun layanan "Admin Antrean" yang Anda buat secara selektif.
Akun utama biasanya terdiri dari sekelompok kecil akun utama yang bertindak sebagai administrator antrean. Berikan peran
iam.serviceAccountTokenCreator
kepada akun utama ini di akun layanan "Queue Admin" yang Anda buat. Untuk mempelajari caranya, lihat bagian Memberikan atau mencabut satu peran dalam dokumentasi IAM.Dengan mengikuti praktik terbaik yang dijelaskan dalam Menggunakan Pengelolaan Antrean atau queue.yaml, pilih salah satu metode berikut untuk mengubah konfigurasi antrean:
Gunakan Cloud Tasks untuk mengubah konfigurasi antrean.
Mengupload
queue.yaml
dengan gcloud CLI
Pekerja Cloud Tasks
Sebagai admin project, buat akun layanan.
gcloud iam service-accounts create cloud-tasks-worker \ --display-name "Cloud Tasks Worker"
Memberikan peran ke akun layanan agar dapat berinteraksi dengan Cloud Tasks, tetapi tidak mengubah konfigurasi antrean.
gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:cloud-tasks-worker@PROJECT_ID.iam.gserviceaccount.com \ --role roles/cloudtasks.viewer gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:cloud-tasks-worker@PROJECT_ID.iam.gserviceaccount.com \ --role roles/cloudtasks.enqueuer gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:cloud-tasks-worker@PROJECT_ID.iam.gserviceaccount.com \ --role roles/cloudtasks.dequeuer gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:cloud-tasks-worker@PROJECT_ID.iam.gserviceaccount.com \ --role roles/cloudtasks.taskRunner gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:cloud-tasks-worker@PROJECT_ID.iam.gserviceaccount.com \ --role roles/cloudtasks.taskDeleter
Ganti
PROJECT_ID
dengan ID project Anda.Mengizinkan peniruan identitas akun layanan "Cloud Tasks Worker" yang Anda buat secara selektif.
Untuk akun utama yang berinteraksi dengan Cloud Tasks, berikan peran
iam.serviceAccountTokenCreator
pada akun layanan "Cloud Tasks Worker" yang Anda buat. Untuk mempelajari caranya, lihat Memberikan atau mencabut satu peran dalam dokumentasi IAM.
App Engine Deployer
Sebagai admin project, buat akun layanan.
gcloud iam service-accounts create app-engine-deployer \ --display-name "App Engine Deployer"
Berikan peran ke akun layanan agar dapat men-deploy aplikasi App Engine, tetapi tidak
queue.yaml
.gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:app-engine-deployer@PROJECT_ID.iam.gserviceaccount.com \ --role roles/appengine.deployer gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:app-engine-deployer@PROJECT_ID.iam.gserviceaccount.com \ --role roles/appengine.serviceAdmin gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:app-engine-deployer@PROJECT_ID.iam.gserviceaccount.com \ --role roles/storage.admin
Ganti
PROJECT_ID
dengan ID project Anda.Mengizinkan peniruan identitas akun layanan "App Engine Deployer" yang Anda buat secara selektif.
Untuk akun utama yang men-deploy layanan App Engine, berikan peran
iam.serviceAccountTokenCreator
pada akun layanan "App Engine Deployer" yang Anda buat. Untuk mempelajari caranya, lihat Memberikan atau mencabut satu peran dalam dokumentasi IAM.
Membatasi akses ke antrean tunggal
Jika Anda memiliki beberapa antrean dalam sebuah project dan ingin membatasi akses ke masing-masing antrean, Anda dapat menggunakan kebijakan IAM pada level antrean, bukan pada level project. Untuk membatasi akses menurut antrean, gunakan perintah gcloud tasks queues add-iam-policy-binding
. Contoh:
gcloud tasks queues add-iam-policy-binding QUEUE_NAME --location=LOCATION \ --member=serviceAccount:cloud-tasks-worker@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/cloudtasks.enqueuer
Ganti kode berikut:
QUEUE_NAME
: nama antrean AndaLOCATION
: lokasi antrean AndaPROJECT_ID
: ID project Anda
Langkah selanjutnya
- Akun layanan
- Memahami akun layanan
- Mengelola akses ke project, folder, dan organisasi
- Membuat dan mengelola akun layanan
- Menggunakan peniruan akun layanan