Peran dan izin untuk endpoint HTTP internal dalam jaringan VPC

Dokumen ini menunjukkan cara memberikan peran dan izin Identity and Access Management (IAM) untuk mendukung peristiwa pemilihan rute dari Google Cloud ke endpoint HTTP internal di jaringan Virtual Private Cloud (VPC) 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 ke agen layanan Google:

    1. Jika URI endpoint HTTP internal menggunakan nama DNS internal dari layanan yang dapat di-resolve oleh Cloud DNS, berikan peran Cloud DNS Peer.
    2. Jika Anda membuat pemicu untuk peristiwa langsung dari Cloud Storage, berikan peran Pub/Sub Publisher.
    3. 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 informasi selengkapnya, lihat Peniruan 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 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 URI endpoint HTTP internal di jaringan VPC menggunakan nama DNS internal layanan yang dapat di-resolve oleh Cloud DNS, untuk mengakses jaringan target dengan zona peering DNS, berikan peran DNS Peer (roles/dns.peer) di project host VPC ke agen layanan Eventarc:

    gcloud projects add-iam-policy-binding VPC_HOST_PROJECT_ID \
        --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-eventarc.iam.gserviceaccount.com \
        --role=roles/dns.peer

    Ganti kode berikut:

    • VPC_HOST_PROJECT_ID: Google Cloud project ID untuk project host VPC. Saat menggunakan VPC Bersama, Anda akan melampirkan satu atau beberapa project layanan ke project host, sehingga resource dari beberapa project dapat terhubung ke jaringan VPC umum.

      Perhatikan bahwa bergantung pada cara Anda mengonfigurasi jaringan VPC, project host VPC mungkin juga merupakan project pemicu Eventarc Anda.

    • PROJECT_NUMBER: Google Cloud nomor project untuk project pemicu Eventarc 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 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)'
  3. 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