Peran dan izin untuk target Cloud Run

Dokumen ini menunjukkan cara memberikan peran dan izin Identity and Access Management (IAM) untuk mendukung peristiwa pemilihan rute dari Google Cloud dan sumber lainnya ke layanan Cloud Run menggunakan Eventarc.

  1. Berikan izin di seluruh project kepada akun utama yang memanggil Eventarc API (misalnya, pembuat pemicu Eventarc):

    1. Peran Eventarc Admin memungkinkan Anda memiliki kontrol penuh atas semua resource Eventarc, termasuk menentukan akun layanan untuk pemicu saat Anda membuatnya.
    2. Peran Service Account User memungkinkan akun utama meniru identitas dan menggunakan akun layanan. Akun layanan dikaitkan dengan pemicu Eventarc dan mewakili identitas pemicu.
  2. Berikan izin pemicu Eventarc ke akun layanan pemicu: Peran Eventarc Event Receiver memungkinkan pemicu Eventarc Anda menerima peristiwa dari penyedia peristiwa. Anda tidak perlu memberikan peran tersebut jika merutekan peristiwa langsung dari Cloud Pub/Sub.

  3. Berikan izin layanan Cloud Run ke akun layanan pemicu: Peran Cloud Run Invoker memungkinkan pemicu Eventarc Anda memanggil layanan Cloud Run target. Hal ini berlaku jika Anda merutekan peristiwa ke layanan Cloud Run yang diautentikasi.

  4. Berikan izin ke agen layanan Google:

    1. Jika Anda membuat pemicu untuk peristiwa langsung dari Cloud Storage, berikan peran Pub/Sub Publisher.
    2. Jika Anda mengaktifkan agen layanan Cloud Pub/Sub pada atau sebelum 8 April 2021, berikan peran Service Account Token Creator.

Untuk mengetahui informasi selengkapnya tentang cara memberikan peran IAM, lihat Mengelola akses. Anda mungkin juga dapat mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.

Memberikan izin di seluruh project

Jika Anda adalah project creator, Anda diberi peran Pemilik dasar (roles/owner). Secara default, peran ini mencakup izin yang diperlukan untuk akses penuh ke sebagian besar resourceGoogle Cloud . Jika tidak, peran yang diperlukan harus diberikan oleh administrator pada resource yang sesuai kepada akun utama yang sesuai (juga dikenal sebagai anggota).

Misalnya, akun utama dapat berupa Akun Google (untuk pengguna akhir) atau akun layanan (untuk aplikasi dan workload komputasi). Setiap akun utama memiliki ID-nya sendiri, yang biasanya berupa alamat email.

  1. Peran Admin Eventarc (roles/eventarc.admin) memungkinkan Anda memiliki kontrol penuh atas semua resource Eventarc.

    Berikan peran tersebut pada project:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=PRINCIPAL \
        --role=roles/eventarc.admin

    Ganti kode berikut:

    • PROJECT_ID: Google Cloud Project ID Anda.
    • PRINCIPAL: ID untuk pembuat pemicu yang biasanya memiliki bentuk berikut: PRINCIPAL_TYPE:ID. Contohnya, user:my-user@example.com. Untuk daftar lengkap kemungkinan nilai PRINCIPAL_TYPE, lihat Referensi Binding Kebijakan.
  2. Peran Pengguna Akun Layanan (roles/iam.serviceAccountUser) memungkinkan akun utama menjalankan operasi sebagai akun layanan.

    Misalnya, Anda memerlukan peran ini agar dapat mengaitkan akun layanan yang dikelola pengguna dengan pemicu Eventarc. Anda juga memerlukannya agar dapat bertindak sebagai akun layanan runtime saat men-deploy layanan Cloud Run. Untuk mengetahui informasi selengkapnya, lihat Peran untuk autentikasi akun layanan.

    Anda dapat memberikan peran pada project untuk mengizinkan akun utama meniru identitas beberapa akun layanan atau memberikan peran pada akun layanan untuk mengizinkan akun utama meniru identitas akun layanan tertentu saja.

    Berikan peran tersebut pada project:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=PRINCIPAL \
        --role=roles/iam.serviceAccountUser

    Atau, berikan peran di akun layanan:

    gcloud iam service-accounts add-iam-policy-binding \
        projects/SERVICE_ACCOUNT_PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com \
        --member=PRINCIPAL \
        --role=roles/iam.serviceAccountUser

    Ganti kode berikut:

    • SERVICE_ACCOUNT_PROJECT_ID: ID project Google Cloud yang berisi akun layanan.
    • SERVICE_ACCOUNT_NAME: nama akun layanan.

Memberikan izin pemicu Eventarc

Setiap pemicu Eventarc dikaitkan dengan akun layanan IAM saat pemicu dibuat. Anda dapat menentukan akun layanan yang dikelola pengguna yang digunakan pemicu sebagai identitas default-nya. Jika Anda tidak menentukan akun layanan selama pembuatan pemicu, pemicu akan menggunakan akun layanan default Compute Engine untuk identitasnya.

Sebaiknya Anda membuat akun layanan yang dikelola pengguna sendiri untuk memberi Anda kontrol dan fleksibilitas yang lebih besar saat mengelola pemicu.

  1. Buat akun layanan dan catat namanya:

    gcloud iam service-accounts create SERVICE_ACCOUNT_NAME \
        --description="DESCRIPTION" \
        --display-name="DISPLAY_NAME"

    Ganti kode berikut:

    • SERVICE_ACCOUNT_NAME: nama akun layanan. Nama ini muncul di alamat email yang mengidentifikasi akun layanan.
    • DESCRIPTION: deskripsi opsional untuk akun layanan
    • DISPLAY_NAME: nama akun layanan untuk ditampilkan di konsol Google Cloud
  2. Berikan peran Eventarc Event Receiver (roles/eventarc.eventReceiver) pada project ke akun layanan yang terkait dengan pemicu Eventarc Anda agar pemicu dapat menerima peristiwa dari penyedia peristiwa.

    Perhatikan bahwa Anda tidak perlu memberikan peran Penerima Peristiwa Eventarc jika merutekan peristiwa langsung dari Cloud Pub/Sub.

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
        --role=roles/eventarc.eventReceiver

    Ganti SERVICE_ACCOUNT_NAME dengan nama akun layanan yang Anda catat di langkah sebelumnya.

Memberikan izin layanan Cloud Run

Semua layanan Cloud Run di-deploy secara pribadi secara default, yang berarti layanan tersebut tidak dapat diakses tanpa memberikan kredensial autentikasi dalam permintaan. Untuk project dengan kebijakan organisasi berbagi yang dibatasi domain, gunakan layanan target Cloud Run yang diautentikasi, bukan layanan yang mengizinkan akses publik (tidak diautentikasi).

Secara default, layanan Cloud Run hanya dapat dipanggil oleh Project Owner, Project Editor, Cloud Run Admin, dan Cloud Run Invoker.

  1. Jika Anda merutekan peristiwa ke layanan target Cloud Run yang diautentikasi, berikan peran Cloud Run Invoker (run.invoker) di layanan Cloud Run ke akun layanan yang dikelola pengguna yang terkait dengan pemicu Eventarc Anda:

    gcloud run services add-iam-policy-binding SERVICE_NAME \
        --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
        --role=roles/run.invoker

    Ganti SERVICE_NAME dengan nama layanan Cloud Run.

  2. Jika ingin, Anda dapat memberikan peran tersebut di semua layanan dan tugas Cloud Run dalam project Google Cloud . Untuk mengetahui informasi selengkapnya, lihat Mengontrol akses pada semua layanan dan tugas dalam sebuah project.

Perhatikan bahwa pemicu akan berhasil dibuat dan diaktifkan jika Anda membuat pemicu untuk layanan Cloud Run yang diautentikasi tanpa memberikan peran Cloud Run Invoker, pemicu tersebut akan berhasil dibuat dan diaktifkan. Namun, pemicu tidak akan berfungsi seperti yang diharapkan dan pesan yang mirip dengan berikut ini akan muncul di log:

The request was not authenticated. Either allow unauthenticated invocations or set the proper Authorization header.

Memberikan izin ke agen layanan

Beberapa layanan Google Cloud memiliki agen layanan yang memungkinkan layanan tersebut mengakses resource Anda. Jika API memerlukan agen layanan, Google akan membuat agen layanan setelah Anda mengaktifkan dan menggunakan API.

  1. Jika Anda membuat pemicu untuk peristiwa langsung dari Cloud Storage, untuk mendukung publikasi pesan ke topik, berikan peran Penayang Pub/Sub (roles/pubsub.publisher) di project kepada agen layanan Cloud Storage:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:service-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com \
        --role=roles/pubsub.publisher

    Ganti PROJECT_NUMBER dengan Google Cloudnomor project Anda. Anda dapat menemukan nomor project di halaman Selamat Datang pada Konsol Google Cloud atau dengan menjalankan perintah berikut:

    gcloud projects describe PROJECT_ID --format='value(projectNumber)'
  2. Jika Anda mengaktifkan agen layanan Cloud Pub/Sub pada atau sebelum 8 April 2021, untuk mendukung permintaan push Pub/Sub yang diautentikasi, berikan peran Service Account Token Creator (roles/iam.serviceAccountTokenCreator) di project kepada agen layanan Pub/Sub. Jika tidak, peran ini akan diberikan secara default:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com \
        --role=roles/iam.serviceAccountTokenCreator

Langkah berikutnya