Dokumen ini menunjukkan cara memberikan peran dan izin Identity and Access Management (IAM) untuk mendukung perutean peristiwa dari Google Cloud dan sumber lainnya ke layanan Cloud Run menggunakan Eventarc.
Berikan izin di seluruh project kepada akun utama yang memanggil Eventarc API (misalnya, pembuat pemicu Eventarc):
- Peran Admin Eventarc memungkinkan Anda memiliki kontrol penuh atas semua resource Eventarc, termasuk menentukan akun layanan untuk pemicu saat Anda membuatnya.
- Peran Service Account User memungkinkan akun utama meniru identitas dan menggunakan akun layanan. Akun layanan dikaitkan dengan pemicu Eventarc dan merepresentasikan identitas pemicu.
Memberi 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 Anda merutekan peristiwa langsung dari Cloud Pub/Sub.
Beri 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.
Memberikan izin kepada agen layanan Google:
- Jika Anda membuat pemicu untuk peristiwa langsung dari Cloud Storage, berikan peran Pub/Sub Publisher.
- 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 bisa 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.
Peran Admin Eventarc (
roles/eventarc.admin
) memungkinkan Anda memiliki kontrol penuh atas semua resource Eventarc.Berikan peran pada project:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=PRINCIPAL \ --role=roles/eventarc.admin
Ganti kode berikut:
PROJECT_ID
: ID project Google Cloud Anda.PRINCIPAL
: ID untuk pembuat pemicu yang biasanya memiliki bentuk berikut:PRINCIPAL_TYPE:ID
. Contohnya,user:my-user@example.com
. Untuk daftar lengkap nilaiPRINCIPAL_TYPE
yang mungkin, lihat referensi Binding Kebijakan.
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 di project agar akun utama dapat meniru identitas beberapa akun layanan atau memberikan peran di akun layanan agar akun utama dapat meniru identitas hanya akun layanan tertentu.
Berikan peran 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 Google Cloud project yang berisi akun layanan.SERVICE_ACCOUNT_NAME
: nama akun layanan.
Memberikan izin pemicu Eventarc
Setiap pemicu Eventarc dikaitkan dengan akun layanan IAM pada saat pemicu dibuat. Anda dapat menentukan akun layanan yang dikelola pengguna yang digunakan pemicu sebagai identitas defaultnya. Jika Anda tidak menentukan akun layanan selama pembuatan pemicu, pemicu akan menggunakan akun layanan default Compute Engine untuk identitasnya.
Sebaiknya buat akun layanan yang dikelola pengguna sendiri untuk memberi Anda kontrol dan fleksibilitas yang lebih besar saat mengelola pemicu.
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 layananDISPLAY_NAME
: nama akun layanan untuk ditampilkan di konsol Google Cloud
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 Anda 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 memungkinkan akses publik (tidak diautentikasi).
Secara default, layanan Cloud Run hanya dapat dipanggil oleh Project Owner, Project Editor, Cloud Run Admin, dan Cloud Run Invoker.
Jika Anda merutekan peristiwa ke layanan target Cloud Run yang diautentikasi, berikan peran Cloud Run Invoker (
run.invoker
) di layanan Cloud Run kepada 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.Jika ingin, Anda dapat memberikan peran di semua layanan dan tugas Cloud Run dalam Google Cloud project. 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. 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 memiliki agen layanan yang memungkinkan layanan mengakses resource Anda. Google Cloud Jika API memerlukan agen layanan, maka Google akan membuat agen layanan setelah Anda mengaktifkan dan menggunakan API.
Jika Anda membuat pemicu untuk peristiwa langsung dari Cloud Storage, untuk mendukung publikasi pesan ke topik, berikan peran Pub/Sub Publisher (
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 Cloud nomor project Anda. Anda dapat menemukan nomor project di halaman Selamat Datang di konsol Google Cloud atau dengan menjalankan perintah berikut:gcloud projects describe PROJECT_ID --format='value(projectNumber)'
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 ke 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
Pelajari opsi kontrol akses di Eventarc.
Pelajari cara mendeskripsikan pemicu dan memverifikasi akun layanan terkaitnya.