Halaman ini memberikan saran untuk mengamankan pembuatan dan konfigurasi antrean. Kuncinya adalah membatasi metode pengelolaan antrean untuk sekelompok kecil orang atau entitas. Untuk organisasi besar, Anda mungkin perlu menggunakan akun layanan untuk menjalankan software yang menerapkan konfigurasi antrean yang tepat.
Ide umumnya adalah memisahkan pengguna dan entitas lainnya 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 sehingga dapat mengurangi risiko konfigurasi antrean yang rusak, terutama dengan tidak sengaja menggabungkan metode pengelolaan antreanqueue.yaml
dan Cloud Tasks. - Cloud Tasks Workers - Pengguna dalam grup ini memiliki izin untuk melakukan interaksi umum dengan Cloud Tasks seperti mengantrekan dan menghapus antrean tugas. Mereka tidak diizinkan untuk memanggil metode pengelolaan antrean Cloud Tasks.
- App Engine Deployers - 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 menerapkan kebijakan yang sesuai.
Dalam skema ini, pengguna yang merupakan admin antrean juga tidak boleh menjadi pekerja Cloud Tasks, karena hal itu akan mengacaukan tujuan pemisahan.
Jika project Anda menggunakan metode pengelolaan antrean Cloud Tasks secara eksklusif, mungkin juga admin antrean tidak boleh menjadi deployer App Engine, karena hal ini akan memungkinkan file queue.yaml
yang salah diupload.
Project dan organisasi kecil
Project dan organisasi kecil dapat menetapkan peran Identity and Access Management (IAM) langsung kepada pengguna untuk menempatkan mereka ke dalam grup di atas. Hal ini masuk akal untuk 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
Cloud Tasks Worker
Karena sering kali ada banyak pengguna yang diizinkan untuk berinteraksi dengan Cloud Tasks, Anda dapat menetapkan peran ke Akun Layanan, bukan ke pengguna individual. Jenis penggunaan ini umum di 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 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
Project dan organisasi besar
Project dan organisasi besar dapat menggunakan Akun Layanan untuk memisahkan tugas dan tanggung jawab. Hal ini masuk akal bagi tim dengan infrastruktur yang 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 identitas akun layanan. Untuk mempelajari pola ini lebih lanjut, lihat Menggunakan peniruan akun layanan dalam dokumentasi autentikasi Google Cloud.
Berikut adalah 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.Izinkan peniruan identitas akun layanan "Queue Admin" yang Anda buat secara selektif.
Ini biasanya adalah sekelompok kecil akun utama yang bertindak sebagai administrator antrean. Berikan akun utama ini peran
iam.serviceAccountTokenCreator
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 artikel 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
Cloud Tasks Worker
Sebagai admin project, buat akun layanan.
gcloud iam service-accounts create cloud-tasks-worker \ --display-name "Cloud Tasks Worker"
Berikan 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.Izinkan peniruan identitas akun layanan "Cloud Tasks Worker" secara selektif yang Anda buat.
Untuk akun utama yang berinteraksi dengan Cloud Tasks, berikan peran
iam.serviceAccountTokenCreator
di 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 bukan
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.Izinkan peniruan identitas akun layanan "App Engine Deployer" secara selektif yang telah Anda buat.
Untuk akun utama yang men-deploy layanan App Engine, berikan peran
iam.serviceAccountTokenCreator
di akun layanan "App Engine Deployer" yang Anda buat. Untuk mempelajari cara melakukannya, lihat bagian Memberikan atau mencabut satu peran dalam dokumentasi IAM.
Membatasi akses ke satu antrean
Jika memiliki beberapa antrean dalam project dan ingin membatasi akses ke setiap
antrean, Anda dapat menggunakan kebijakan IAM di tingkat antrean, bukan
tingkat 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