Konfigurasi antrean aman

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:

  1. 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 antrean queue.yaml dan Cloud Tasks.
  2. 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.
  3. 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

  1. Sebagai admin project, berikan peran cloudtasks.queueAdmin kepada pengguna yang diizinkan untuk melakukan panggilan API pengelolaan antrean Cloud Tasks atau mengupload file queue.yaml.

    gcloud projects add-iam-policy-binding PROJECT_ID \
    --member user:EMAIL \
    --role roles/cloudtasks.queueAdmin

    Ganti kode berikut:

    • PROJECT_ID: ID project Anda
    • EMAIL: email untuk pengguna anggota
  2. Sebagai pengguna dengan peran cloudtasks.queueAdmin, dengan mengikuti praktik terbaik di atas, pilih salah satu metode berikut untuk mengubah konfigurasi antrean.

    1. Gunakan Cloud Tasks API untuk mengubah konfigurasi antrean.

    2. Upload queue.yaml dengan gcloud:

      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.

  1. 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

  1. 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 Anda
    • EMAIL: email untuk pengguna anggota
  2. 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

  1. Sebagai admin project, buat akun layanan.

    gcloud iam service-accounts create queue-admin \
    --display-name "Queue Admin"
  2. Berikan peran cloudtasks.queueAdmin ke akun layanan agar dapat mengupload file queue.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.

  3. 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.

  4. 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

  1. Sebagai admin project, buat akun layanan.

    gcloud iam service-accounts create cloud-tasks-worker \
    --display-name "Cloud Tasks Worker"
  2. 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.

  3. 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

  1. Sebagai admin project, buat akun layanan.

    gcloud iam service-accounts create app-engine-deployer \
    --display-name "App Engine Deployer"
  2. 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.

  3. 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 Anda
  • LOCATION: lokasi antrean Anda
  • PROJECT_ID: ID project Anda

Langkah selanjutnya