Mengizinkan akses publik (tidak diautentikasi)

Ada dua cara untuk membuat layanan Cloud Run publik:

  • Menonaktifkan pemeriksaan IAM Cloud Run Invoker (direkomendasikan).
  • Menetapkan peran IAM Cloud Run Invoker ke jenis anggota allUsers.

Peran yang diperlukan

Untuk menonaktifkan atau mengaktifkan kembali pemeriksaan IAM Invoker 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 saat project tunduk pada batasan berbagi yang dibatasi domain dalam kebijakan organisasi.

Untuk menonaktifkan pemeriksaan:

Konsol

  1. Di Google Cloud konsol, 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 Keamanan.

  3. Pilih Izinkan akses publik.

  4. Klik Buat atau Simpan.

gcloud

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

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

    Ganti SERVICE_NAME dengan nama layanan.

  • Untuk layanan yang ada, gunakan perintah gcloud run services update dengan tanda --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: region—misalnya, europe-west1. Google Cloud
  • 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.

Mengaktifkan kembali pemeriksaan IAM Cloud Run Invoker

Untuk mengaktifkan kembali pemeriksaan:

Konsol

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

    Buka Cloud Run

  2. Klik layanan, lalu klik Keamanan.

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

  4. Klik Simpan.

gcloud

  • Perbarui layanan dengan meneruskan tanda --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: region—misalnya, europe-west1. Google Cloud
  • 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 Cloud Run Invoker

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

Menetapkan peran IAM Cloud Run 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 Admin Cloud Run. Lihat peran IAM Cloud Run untuk mengetahui daftar lengkap peran dan izin terkaitnya.

Konsol

Untuk layanan Cloud Run yang sudah ada:

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

    Buka Google Cloud konsol

  2. Di sebelah kiri layanan yang ingin Anda publikasikan, klik kotak centang. Jangan klik 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 Tambahkan akun utama.

Di kolom Akun utama baru, masukkan nilai allUsers.

  1. Dari menu Pilih peran, pilih peran Cloud Run Invoker.

  2. Klik Simpan.

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

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 bersifat 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.