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 Eventarc Admin memberi Anda 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. Peran ini memungkinkan akun utama melampirkan akun layanan yang dikelola pengguna ke pemicu Eventarc dan bertindak sebagai akun layanan runtime saat men-deploy layanan Cloud Run.
Memberikan 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.
Memberikan 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 ke agen layanan Google:
Peran Eventarc Service Agent memungkinkan agen layanan Eventarc mengelola resource transport yang mendasarinya dan memvalidasi sumber peristiwa. Peran ini diberikan secara default saat Anda membuat resource Eventarc untuk pertama kalinya, tetapi Anda harus memulihkannya jika dihapus.
Jika Anda membuat pemicu untuk peristiwa langsung dari Cloud Storage, berikan peran Pub/Sub Publisher ke agen layanan Cloud Storage.
Jika Anda mengaktifkan agen layanan Cloud Pub/Sub pada atau sebelum 8 April 2021, berikan peran Service Account Token Creator ke agen layanan Pub/Sub.
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 pembuat project, Anda akan diberi
peran Owner 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) memberi Anda 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: Project ID 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_TYPEyang mungkin, lihat Referensi Binding Kebijakan.
Peran Service Account User (
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 peran tambahan yang diperlukan untuk men-deploy layanan, lihat Peran yang diperlukan untuk 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 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. \ --member=PRINCIPAL \ --role=roles/iam.serviceAccountUser
Ganti kode berikut:
SERVICE_ACCOUNT_PROJECT_ID: project ID Google Cloud 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 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.
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 .
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. \ --role=roles/eventarc.eventReceiver
Ganti
SERVICE_ACCOUNT_NAMEdengan nama akun layanan yang Anda catat di langkah sebelumnya.
Memberikan izin layanan Cloud Run
Semua layanan Cloud Run di-deploy secara pribadi secara default, sehingga 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 (
roles/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 \ --region=REGION \ --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID. \ --role=roles/run.invoker
Ganti kode berikut:
SERVICE_NAME: nama layanan Cloud Run.REGION: region tempat layanan Cloud Run Anda di-deploy.
Jika ingin, Anda dapat memberikan peran di semua layanan dan tugas Cloud Run dalam sebuah 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. 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 Google
Beberapa layanan Google Cloud memiliki agen layanan yang memungkinkan layanan mengakses resource Anda. Jika API memerlukan agen layanan, Google akan membuat agen layanan setelah Anda mengaktifkan dan menggunakan API.
Jika peran Eventarc Service Agent (
roles/eventarc.serviceAgent) dihapus dari agen layanan Eventarc, berikan peran tersebut pada project agar Eventarc dapat mengelola resource transport yang mendasarinya dan memvalidasi sumber peristiwa. Jika tidak, peran ini akan diberikan secara default saat Anda membuat resource Eventarc untuk pertama kalinya:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-eventarc. \ --role=roles/eventarc.serviceAgent
Ganti
PROJECT_NUMBERdengan nomor project Google Cloud Anda. Anda dapat menemukan nomor project di halaman Welcome pada konsol Google Cloud atau dengan menjalankan perintah berikut:gcloud projects describe PROJECT_ID --format='value(projectNumber)'
Jika Anda membuat pemicu untuk peristiwa langsung dari Cloud Storage, untuk mendukung publikasi pesan ke topik, berikan peran Pub/Sub Publisher (
roles/pubsub.publisher) pada project ke agen layanan Cloud Storage:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gs-project-accounts. \ --role=roles/pubsub.publisher
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) pada 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. \ --role=roles/iam.serviceAccountTokenCreator
Langkah berikutnya
Pelajari opsi kontrol akses di Eventarc.
Pelajari cara mendeskripsikan pemicu dan memverifikasi akun layanan terkait.