Mengizinkan akses publik (tidak diautentikasi)

Opsi ini ditujukan untuk layanan Cloud Run yang merupakan API publik atau situs web.

Anda dapat mengizinkan pemanggilan yang tidak diautentikasi 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 termasuk dalam peran Owner dan Cloud Run Admin. Lihat peran IAM Cloud Run untuk mengetahui daftar lengkap peran dan izin terkaitnya.

UI Konsol

Untuk layanan Cloud Run yang sudah ada:

  1. Buka Konsol Google Cloud:

    Buka Konsol Google Cloud

  2. Klik kotak centang di sebelah kiri layanan yang ingin dipublikasikan. (Jangan mengklik layanan.)

  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 Tambahkan akun utama.

Di kolom New principals, masukkan nilai allUsers

  1. Dari menu drop-down 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 layanan IAM.

Untuk layanan baru yang Anda buat, buat layanan, tetapi pastikan Anda memilih Izinkan pemanggilan tidak diautentikasi di tab Autentikasi untuk membuat layanan menjadi tersedia untuk publik. Memilih Wajibkan autentikasi akan membuat layanan menjadi pribadi.

gcloud

Untuk membuat layanan dapat diakses secara publik, gunakan perintah gcloud run services untuk menambahkan jenis anggota allUsers khusus ke layanan dan berikan 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 pemanggilan yang tidak diautentikasi untuk SERVICE yang ada menggunakan:

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

Terraform

Untuk membuat layanan Cloud Run, tambahkan kode berikut ke file main.tf Anda yang sudah ada:

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.

Berbagi dengan domain terbatas

Jika project tunduk pada batasan berbagi yang dibatasi domain dalam kebijakan organisasi, Anda tidak akan dapat membuat layanan publik secara default. Anda dapat menggunakan tag dan kebijakan kondisional untuk mengecualikan layanan tertentu dari batasan ini. Untuk mengetahui detailnya, lihat postingan blog tentang membuat layanan Cloud Run publik ketika fitur berbagi yang dibatasi domain diterapkan.