Kontrol akses dengan IAM

Secara default, hanya pemilik project dan editor yang dapat membuat, memperbarui, menghapus, atau memanggil resource Cloud Run, dan hanya pemilik project serta Admin Cloud Run yang dapat mengubah kebijakan Identity and Access Management (IAM). Misalnya, membuat layanan menjadi publik. Lihat Peran IAM Cloud Run untuk mengetahui detailnya.

Untuk mengizinkan akun utama atau grup lain melakukan tindakan ini, gunakan IAM untuk memberikan peran ke berbagai akun utama.

Jika Anda telah membuat atau men-deploy fungsi menggunakan perintah gcloud functions atau Cloud Functions v2 API dan perlu menggunakan opsi ini untuk kompatibilitas mundur, lihat Kontrol akses dengan IAM.

Peran bawaan Cloud Run

Dibandingkan dengan peran dasar (Pemilik, Editor, dan Viewer), peran bawaan berikut memiliki kontrol akses yang lebih terperinci untuk mengakses resource Cloud Run:

Peran Deskripsi
Admin Cloud Run (roles/run.admin) Dapat membuat, memperbarui, dan menghapus layanan, tugas, dan kumpulan pekerja, dapat mengambil, mencantumkan, menghapus eksekusi tugas.
Dapat memanggil layanan dan tugas, dapat membatalkan eksekusi tugas.
Dapat mengambil dan menetapkan kebijakan IAM.
Dapat melihat, menerapkan, dan menutup rekomendasi.
Memerlukan konfigurasi tambahan untuk men-deploy layanan.
Cloud Run Developer (roles/run.developer) Dapat membuat, mengupdate, dan menghapus layanan, tugas, dan kumpulan pekerja, dapat mengambil, mencantumkan, menghapus eksekusi tugas.
Dapat mengambil, tetapi tidak dapat menetapkan kebijakan IAM.
Dapat melihat, menerapkan, dan menutup rekomendasi.
Cloud Run Viewer (roles/run.viewer) Dapat melihat layanan, tugas, eksekusi tugas, dan kumpulan pekerja.
Dapat mendapatkan kebijakan IAM.
Dapat melihat rekomendasi.
Cloud Run Invoker (roles/run.invoker) Dapat memanggil layanan dan tugas, dapat membatalkan eksekusi tugas.
Cloud Run Source Developer (roles/run.sourceDeveloper) Dapat men-deploy dan mengelola resource yang di-deploy dari sumber Cloud Run.
Cloud Run Builder (roles/run.builder) Dapat membangun fungsi Cloud Run dan layanan yang di-deploy dari sumber.
Cloud Run Service Invoker (roles/run.servicesInvoker) Dapat memanggil layanan Cloud Run.
Cloud Run Jobs Executor (roles/run.jobsExecutor) Dapat menjalankan dan membatalkan tugas Cloud Run.
Cloud Run Jobs Executor With Overrides (roles/run.jobsExecutorWithOverrides) Dapat menjalankan dan membatalkan tugas Cloud Run dengan penggantian.

Mengontrol akses pada setiap resource Cloud Run

Anda dapat mengontrol akses berdasarkan layanan, tugas, atau kumpulan pekerja tertentu menggunakan IAM.

Menambahkan akun utama

Untuk menambahkan akun utama ke layanan:

Konsol

  1. Buka konsol Google Cloud :

    Buka konsol Google Cloud

  2. Klik kotak centang di samping layanan yang ingin Anda tambahkan akun utama. Jangan mengklik layanan itu sendiri.
  3. Di panel informasi pojok kanan atas, klik tab Izin. Jika panel informasi tidak terlihat, Anda mungkin perlu mengklik Tampilkan Panel Info, lalu klik Izin.
  4. Klik Add principal.
  5. Di kolom New principals, masukkan satu atau beberapa identitas yang memerlukan akses ke layanan Anda.
  6. Dari menu drop-down Assign roles, pilih satu atau beberapa peran. Peran yang Anda pilih akan muncul di panel dengan deskripsi singkat tentang izin yang diberikan.
  7. Klik Simpan.

gcloud

Gunakan perintah berikut:

gcloud run services add-iam-policy-binding SERVICE_NAME \
  --member=PRINCIPAL \
  --role=ROLE

Ganti kode berikut:

  • SERVICE_NAME: nama layanan.
  • PRINCIPAL: jenis principal (misalnya, user:email@domain.com). Untuk mengetahui daftar nilai yang dapat diterima untuk PRINCIPAL, lihat ID principal.
  • ROLE: peran. Untuk mengetahui daftar nilai yang dapat diterima untuk ROLE, lihat Peran IAM Cloud Run.

Hapus akun utama dari peran

Untuk menghapus akun utama dari peran untuk layanan:

Konsol

  1. Buka konsol Google Cloud :

    Buka konsol Google Cloud

  2. Klik kotak centang di samping layanan yang ingin Anda hapus akun utamanya. Jangan mengklik layanan itu sendiri.
  3. Di panel informasi pojok kanan atas, klik tab Izin. Jika panel informasi tidak terlihat, Anda mungkin perlu mengklik Tampilkan Panel Info, lalu klik Izin.
  4. Masukkan akun utama yang ingin Anda hapus ke dalam filter daftar peran, yang menampilkan semua peran yang telah diberikan kepada akun utama tersebut.
  5. Klik ikon sampah hapus di samping akun utama dalam peran yang diinginkan untuk menghapus peran tersebut dari akun utama.
  6. Pada dialog konfirmasi, Anda memiliki opsi untuk menghapus akun utama tersebut dari semua peran dalam layanan. Klik Hapus untuk menghapus akun utama dari peran.

gcloud

Gunakan perintah berikut:

gcloud run services remove-iam-policy-binding SERVICE_NAME \
  --member=PRINCIPAL \
  --role=ROLE

Ganti kode berikut:

  • SERVICE_NAME: nama layanan.
  • PRINCIPAL: jenis akun utama (misalnya, user:email@domain.com). Untuk mengetahui daftar nilai yang dapat diterima untuk PRINCIPAL, lihat ID utama.
  • ROLE: peran. Untuk mengetahui daftar nilai yang dapat diterima untuk ROLE, lihat Peran IAM Cloud Run.

Penambahan atau penghapusan akun utama dalam jumlah besar

Untuk melakukan penambahan atau penghapusan dalam jumlah besar untuk suatu layanan:

Konsol

  1. Buka konsol Google Cloud :

    Buka konsol Google Cloud

  2. Klik kotak centang di sebelah kiri layanan yang ingin Anda tambahkan atau hapus dari akun utama. Jangan mengklik layanan itu sendiri.
  3. Pilih layanan yang ingin Anda tambahkan atau hapus dari akun utama.
  4. Di panel informasi pojok kanan atas, klik tab Izin. Jika panel informasi tidak terlihat, Anda mungkin perlu mengklik Tampilkan Panel Info, lalu klik Izin.

Jika Anda ingin menambahkan akun utama:

  1. Klik Add principal.
  2. Di kolom New principals, masukkan satu atau beberapa identitas yang memerlukan akses ke layanan Anda.
  3. Dari menu Tetapkan peran, pilih satu (atau beberapa) peran. Peran yang Anda pilih akan muncul di panel dengan deskripsi singkat tentang izin yang diberikan.
  4. Klik Simpan.

Jika Anda ingin menghapus akun utama:

  1. Masukkan akun utama yang ingin Anda hapus ke dalam filter daftar peran, yang menampilkan semua peran yang telah diberikan kepada akun utama tersebut.
  2. Klik ikon sampah hapus di baris akun utama.
  3. Pada dialog konfirmasi, Anda memiliki opsi untuk menghapus akun utama tersebut dari semua peran dalam layanan. Klik Hapus untuk menghapus akun utama dari peran.

gcloud

Membuat kebijakan IAM:

cat <<EOF > policy.json
{
  "bindings": [
    {
      "role": ROLE,
      "members": [
        PRINCIPAL
      ]
    }
  ]
}
EOF

Gunakan perintah gcloud run services set-iam-policy:

gcloud run services set-iam-policy SERVICE_NAME policy.json

Untuk mengetahui daftar nilai yang dapat diterima untuk PRINCIPAL, lihat ID principal. Untuk mengetahui daftar nilai yang dapat diterima untuk ROLE, lihat Peran IAM Cloud Run.

Melihat akun utama

Untuk melihat akun utama untuk suatu layanan:

Konsol

  1. Buka konsol Google Cloud :

    Buka konsol Google Cloud

  2. Klik kotak centang di sebelah kiri layanan yang ingin Anda lihat untuk akun utama dan peran. Jangan mengklik layanan itu sendiri.
  3. Pilih layanan yang ingin Anda lihat untuk akun utama dan peran.
  4. Di panel informasi pojok kanan atas, klik tab Izin. Jika panel informasi tidak terlihat, Anda mungkin perlu mengklik Tampilkan Panel Info, lalu klik Izin.
  5. Daftar peran dan akun utama akan ditampilkan dan dikelompokkan berdasarkan peran yang diberikan.

gcloud

Gunakan perintah berikut:

gcloud run services get-iam-policy SERVICE_NAME

Mengontrol akses pada semua resource Cloud Run dalam sebuah project

Jika ingin memberikan peran kepada akun utama di semua layanan dan tugas dalam sebuah project, Anda dapat menggunakan IAM tingkat project.

Konsol

  1. Buka konsol Google Cloud :

    Buka konsol Google Cloud

  2. Temukan akun utama yang ingin Anda berikan peran di seluruh project.

  3. Klik ikon edit Pensil di sisi kanan baris akun utama.

  4. Klik Tambahkan peran lain, lalu pilih peran yang diperlukan.

  5. Klik Simpan.

gcloud

Gunakan perintah gcloud projects add-iam-policy-binding:

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member=PRINCIPAL \
  --role=ROLE

Ganti kode berikut:

  • PROJECT_ID: ID project Google Cloud Anda.
  • PRINCIPAL: prinsipal (misalnya, user:email@domain.com).
  • ROLE: peran (misalnya, roles/run.admin).

Ganti kode berikut:

  • SERVICE_NAME: nama layanan (misalnya, my-service).
  • PRINCIPAL: prinsipal (misalnya, user:email@domain.com).
  • ROLE: peran (misalnya, roles/run.invoker).
  • REGION: region (misalnya, europe-west1).
  • KEY=VALUE: kondisi yang akan disertakan dalam binding. Flag --condition harus menyertakan key-value pair expression dan title.

Jenis akun utama allUsers dan allAuthenticatedUsers tidak dapat diterapkan pada level project. Sebagai gantinya, keduanya harus ditambahkan ke setiap layanan satu per satu.

Membuat layanan menjadi publik

Ada dua cara untuk membuat layanan Cloud Run publik:

  • Nonaktifkan pemeriksaan IAM Cloud Run Invoker (direkomendasikan).
  • Tetapkan peran IAM Cloud Run Invoker ke jenis anggota allUsers.

Peran yang diperlukan

Untuk menonaktifkan atau mengaktifkan kembali pemeriksaan IAM Pemanggil pada layanan, Anda harus memiliki izin berikut:

  • run.services.create
  • run.services.update
  • run.services.setIamPolicy

Izin ini disertakan dalam peran Admin Cloud Run (roles/run.admin). Lihat Peran IAM Cloud Run untuk mengetahui daftar lengkap peran dan izin terkaitnya.

Menonaktifkan pemeriksaan IAM Cloud Run Invoker

Cara yang direkomendasikan untuk membuat layanan publik adalah dengan menonaktifkan pemeriksaan IAM Cloud Run Invoker. Cloud Run menerapkan pemeriksaan ini secara default. Gunakan solusi ini jika project tunduk pada batasan berbagi yang dibatasi domain dalam kebijakan organisasi.

Untuk menonaktifkan pemeriksaan:

Konsol

  1. Di konsol Google Cloud , buka halaman Cloud Run:

    Buka Cloud Run

  2. Klik Buat Layanan jika Anda mengonfigurasi layanan baru, lalu isi halaman setelan layanan awal sesuai kebutuhan.

    Jika Anda mengonfigurasi layanan yang ada, klik layanan tersebut, lalu klik tab Security.

  3. Pilih Allow public access.

  4. Klik Buat atau Simpan.

gcloud

  • Untuk layanan baru, gunakan perintah gcloud run deploy dengan flag --no-invoker-iam-check:

    gcloud run deploy SERVICE_NAME --no-invoker-iam-check

    Ganti SERVICE_NAME dengan nama layanan.

  • Untuk layanan yang sudah ada, gunakan perintah gcloud run services update dengan flag --no-invoker-iam-check:

    gcloud run services update SERVICE_NAME --no-invoker-iam-check

Ganti SERVICE_NAME dengan nama layanan.

YAML

  1. Untuk melihat dan mendownload konfigurasi:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Update anotasi run.googleapis.com/invoker-iam-disabled::

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
        annotations:
          run.googleapis.com/invoker-iam-disabled: 'true'
        name: SERVICE_NAME

    Ganti SERVICE_NAME dengan nama layanan Cloud Run Anda.

  3. Ganti layanan dengan konfigurasi barunya menggunakan perintah berikut:

    gcloud run services replace service.yaml

Terraform

Untuk mempelajari cara menerapkan atau menghapus konfigurasi Terraform, lihat Perintah dasar Terraform.

Tambahkan kode berikut ke resource google_cloud_run_v2_service di konfigurasi Terraform Anda:
resource "google_cloud_run_v2_service" "default" {
   name     = "SERVICE"
   location = "REGION"
   invoker_iam_disabled = true

   template {
      containers {
      image = "IMAGE_URL"
      }
   }
}

Ganti kode berikut:

  • SERVICE: nama layanan Cloud Run Anda.
  • REGION: Google Cloud region—misalnya, europe-west1.
  • IMAGE_URL: referensi ke image container, misalnya, us-docker.pkg.dev/cloudrun/container/hello:latest. Jika Anda menggunakan Artifact Registry, repositori REPO_NAME harus sudah dibuat. URL mengikuti format LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG

Pastikan pemeriksaan dinonaktifkan setelah deployment dengan membuka endpoint HTTPS layanan.

Aktifkan kembali pemeriksaan IAM Cloud Run Invoker

Untuk mengaktifkan kembali pemeriksaan:

Konsol

  1. Di konsol Google Cloud , buka halaman Services Cloud Run:

    Buka Cloud Run

  2. Klik layanan, lalu klik Security.

  3. Pilih Wajibkan autentikasi, lalu pilih Identity and Access Management (IAM).

  4. Klik Simpan.

gcloud

  • Perbarui layanan dengan meneruskan flag --invoker-iam-check:

    gcloud run services update SERVICE_NAME --invoker-iam-check

    Ganti SERVICE_NAME dengan nama layanan.

YAML

  1. Untuk melihat dan mendownload konfigurasi:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Update anotasi run.googleapis.com/invoker-iam-disabled::

    apiVersion: serving.knative.dev/v1
     kind: Service
     metadata:
        annotations:
           run.googleapis.com/invoker-iam-disabled: 'false'
        name: SERVICE_NAME

    Ganti SERVICE_NAME dengan nama layanan Cloud Run Anda

Terraform

Untuk mempelajari cara menerapkan atau menghapus konfigurasi Terraform, lihat Perintah dasar Terraform.

Tambahkan kode berikut ke resource google_cloud_run_v2_service di konfigurasi Terraform Anda:
resource "google_cloud_run_v2_service" "default" {
   name     = "SERVICE"
   location = "REGION"
   invoker_iam_disabled = false

   template {
      containers {
      image = "IMAGE_URL"
      }
   }
}

Ganti kode berikut:

  • SERVICE: nama layanan Cloud Run Anda.
  • REGION: Google Cloud region—misalnya, europe-west1.
  • IMAGE_URL: referensi ke image container, misalnya, us-docker.pkg.dev/cloudrun/container/hello:latest. Jika Anda menggunakan Artifact Registry, repositori REPO_NAME harus sudah dibuat. URL mengikuti format LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG

Pastikan pemeriksaan diaktifkan kembali setelah deployment dengan membuka endpoint HTTPS layanan.

Mengonfigurasi kebijakan organisasi untuk pemeriksaan IAM pemanggil Cloud Run

Jika Anda adalah administrator, Anda dapat membatasi kemampuan untuk menonaktifkan pemeriksaan IAM Pemanggil dengan menggunakan batasan terkelola constraints/run.managed.requireInvokerIam. Batasan ini tidak diterapkan secara default.

Tetapkan peran Cloud Run IAM Invoker ke jenis anggota allUsers

Anda dapat mengizinkan akses publik ke layanan dengan menetapkan peran IAM Cloud Run Invoker ke jenis anggota allUsers.

Anda harus memiliki izin run.services.setIamPolicy untuk mengonfigurasi autentikasi pada layanan Cloud Run. Izin ini disertakan dalam peran Cloud Run Admin. Lihat Peran IAM Cloud Run untuk mengetahui daftar lengkap peran dan izin terkaitnya.

Konsol

Untuk layanan Cloud Run yang sudah ada:

  1. Di konsol Google Cloud , buka halaman Services Cloud Run:

    Buka konsol Google Cloud

  2. Di sebelah kiri layanan yang ingin Anda publikasikan, klik kotak centang. Jangan mengklik layanan itu sendiri.

  3. Di panel informasi di pojok kanan atas, klik tab Izin. Jika panel informasi tidak terlihat, Anda mungkin perlu mengklik Tampilkan Panel Info, lalu klik Izin.

  4. Klik Add principal.

Di kolom New principals, masukkan nilai allUsers.

  1. Dari menu Select a role, pilih peran Cloud Run Invoker.

  2. Klik Simpan.

  3. Anda akan diminta untuk memverifikasi bahwa Anda ingin menjadikan referensi ini publik. Klik Izinkan akses publik untuk menerapkan perubahan pada setelan IAM layanan.

Untuk layanan baru yang Anda buat, buat layanan dan pilih Izinkan akses publik di bagian Autentikasi untuk membuat layanan tersedia untuk publik. Untuk membuat layanan menjadi pribadi, pilih Wajibkan autentikasi.

gcloud

Untuk membuat layanan dapat diakses secara publik, gunakan perintah gcloud run services untuk menambahkan jenis anggota allUsers khusus ke layanan dan memberikan peran roles/run.invoker:

  gcloud run services add-iam-policy-binding [SERVICE_NAME] \
    --member="allUsers" \
    --role="roles/run.invoker"

Jalankan perintah gcloud run deploy untuk membuat layanan Anda dapat diakses secara publik saat Anda men-deploy layanan:

gcloud run deploy [SERVICE_NAME] ... --allow-unauthenticated

YAML

Buat file bernama policy.yaml dengan konten berikut:

bindings:
- members:
  - allUsers
  role: roles/run.invoker

Izinkan akses publik untuk SERVICE yang ada menggunakan:

gcloud run services set-iam-policy SERVICE policy.yaml

Terraform

Untuk mempelajari cara menerapkan atau menghapus konfigurasi Terraform, lihat Perintah dasar Terraform.

Tambahkan kode berikut ke resource google_cloud_run_v2_service di konfigurasi Terraform Anda:
resource "google_cloud_run_v2_service" "default" {
  name     = "public-service"
  location = "us-central1"

  deletion_protection = false # set to "true" in production

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"
    }
  }
}

Untuk memperbarui binding IAM layanan untuk roles/run.invoker, tambahkan resource berikut yang merujuk ke layanan Cloud Run Anda:

resource "google_cloud_run_service_iam_binding" "default" {
  location = google_cloud_run_v2_service.default.location
  service  = google_cloud_run_v2_service.default.name
  role     = "roles/run.invoker"
  members = [
    "allUsers"
  ]
}

Binding ini hanya bersifat otoritatif untuk peran yang diberikan. Binding IAM lainnya dalam kebijakan IAM layanan dipertahankan.

Menggunakan IAM Conditions

Anda dapat menggunakan IAM Conditions untuk menentukan dan menerapkan kontrol akses berbasis atribut bersyarat untuk resource Cloud Run tertentu. Cloud Run mendukung atribut kondisi (request.host) dan (request.path) untuk memberikan akses bersyarat saat memanggil layanan dan kumpulan worker Cloud Run.

Misalnya, untuk memberikan akses bersyarat dengan atribut request.host dan request.path saat memanggil layanan Cloud Run, tambahkan kolom condition saat menjalankan perintah berikut:

gcloud run services add-iam-policy-binding SERVICE_NAME \
    --member=PRINCIPAL \
    --role=ROLE \
    --region=REGION \
    --condition=[KEY=VALUE,...]

Ganti kode berikut:

  • SERVICE_NAME: nama layanan (misalnya, my-service).
  • PRINCIPAL: prinsipal (misalnya, user:email@domain.com).
  • ROLE: peran (misalnya, roles/run.invoker).
  • REGION: region (misalnya, europe-west1).
  • KEY=VALUE: kondisi yang akan disertakan dalam binding. Flag --condition harus menyertakan key-value pair expression dan title.

Langkah berikutnya

Pelajari cara mengautentikasi developer, layanan, dan pengguna dengan aman ke layanan yang baru saja Anda amankan.