Membatasi traffic masuk untuk Cloud Run

Halaman ini menjelaskan cara menggunakan setelan masuk untuk membatasi akses jaringan ke layanan Cloud Run Anda. Di tingkat jaringan, secara default, resource di internet dapat menjangkau Cloud Run Anda layanan di URL run.app defaultnya atau di domain kustom yang disiapkan di Cloud Run. Semua jalur masuk, termasuk URL run.app default, tunduk pada setelan traffic masuk. Traffic masuk ditetapkan di tingkat layanan.

Anda dapat mengubah setelan default ini dengan menentukan setelan traffic masuk yang berbeda atau dengan menonaktifkan URL run.app.

Setelan traffic masuk dan metode autentikasi IAM adalah dua cara untuk mengelola akses ke layanan. Keduanya tidak saling bergantung. Untuk pendekatan berlapis guna mengelola akses, gunakan keduanya.

Setelan masuk yang tersedia

Berikut adalah setelan yang tersedia:

Setelan Deskripsi
Internal Batasan maksimum. Mengizinkan permintaan dari sumber berikut:
  • Aplikasi Internal Load Balancer, termasuk permintaan dari jaringan VPC Bersama saat dirutekan melalui Aplikasi Internal Load Balancer
  • Resource diizinkan oleh mana pun perimeter Kontrol Layanan VPC yang berisi Cloud Run Anda layanan. Cloud Run harus dikonfigurasi sebagai layanan terbatas.
  • Jaringan VPC yang berada dalam project yang sama dengan Layanan Cloud Run
  • Traffic masuk VPC Bersama: Jaringan VPC Bersama tempat revisi Anda dikonfigurasi untuk mengirim traffic. Untuk mengetahui informasi tentang kapan traffic VPC Bersama dikenali sebagai "internal", lihat Pertimbangan khusus untuk VPC Bersama.
  • Produk Google Cloud berikut, jika keduanya berada di perimeter Kontrol Layanan VPC atau project Cloud Run Anda dan jika mereka menggunakan URL run.app default dan bukan domain kustom:
  • Load Balancer Aplikasi Internal, termasuk permintaan dari VPC Bersama jaringan saat dirutekan melalui Load Balancer Aplikasi internal.
  • Permintaan yang diizinkan oleh Kontrol Layanan VPC.

Permintaan dari sumber ini tetap berada dalam jaringan Google, meskipun akses layanan Anda di URL run.app. Permintaan dari sumber lain, termasuk internet, tidak dapat menjangkau layanan Anda di URL run.app atau domain kustom.

Untuk permintaan dari Cloud Scheduler, Cloud Tasks, Eventarc, Pub/Sub, BigQuery, dan Workflows ke layanan internal, Anda harus menggunakan opsi default Cloud Run run.app URL untuk layanan tersebut. Anda tidak dapat menggunakan domain kustom.
Cloud Load Balancing dan Internal Setelan ini mengizinkan permintaan dari resource berikut:
  • Resource yang diizinkan oleh "internal" yang lebih ketat pengaturan
  • Load Balancer Aplikasi Eksternal
Gunakan setelan ini untuk melakukan tindakan berikut:
  • Terima permintaan dari internet melalui Aplikasi eksternal Load Balancer. Permintaan langsung ke URL run.app dari internet tidak diizinkan.
  • Pastikan permintaan dari internet tunduk kepada fitur Load Balancer Aplikasi eksternal, seperti Identity-Aware Proxy, Google Cloud Armor, dan Cloud CDN.

Catatan: Untuk mengaktifkan setelan ini di gcloud CLI, gunakan internal-and-cloud-load-balancing. Untuk mengaktifkan setelan ini di Konsol Google Cloud, pilih Internal > Mengizinkan traffic dari Load Balancer Aplikasi eksternal.
Semua Batasan minimum. Mengizinkan semua permintaan, termasuk permintaan langsung dari internet ke URL run.app.

Mengakses layanan internal

Pertimbangan tambahan berikut berlaku:

  • Saat mengakses layanan internal, panggil layanan seperti yang biasa Anda lakukan menggunakan URL publiknya, baik URL run.app default atau domain kustom yang disiapkan di Cloud Run.

  • Untuk permintaan dari instance VM Compute Engine, tidak diperlukan penyiapan lebih lanjut untuk mesin yang memiliki alamat IP eksternal atau yang menggunakan Cloud NAT. Jika tidak, lihat Menerima permintaan dari jaringan VPC.

  • Saat memanggil dari Cloud Run, App Engine, atau Cloud Functions ke layanan Cloud Run yang disetel ke "Internal" atau "Internal dan Cloud Load Balancing", traffic harus diarahkan melalui VPC jaringan yang dianggap internal. Lihat Menerima permintaan dari layanan Cloud Run, App Engine, dan Cloud Functions lainnya.

  • Permintaan dari resource dalam jaringan VPC dalam project yang sama adalah "internal" meskipun resource asalnya memiliki IP eksternal alamat IPv6

  • Permintaan dari resource lokal yang terhubung ke jaringan VPC menggunakan Cloud VPN dan Cloud Interconnect bersifat "internal".

Setel traffic masuk

Anda dapat menyetel traffic masuk menggunakan salah satu metode yang didukung di tab:

Konsol

  1. Buka Cloud Run

  2. Jika Anda mengonfigurasi layanan baru, klik Create service dan isi halaman setelan layanan awal sesuai keinginan.

  3. Jika Anda mengonfigurasi layanan yang ada, klik layanan tersebut, dan lalu klik tab Networking.

  4. Pilih traffic masuk yang ingin Anda izinkan:

    gambar

  5. Klik Buat atau Simpan.

gcloud

  1. Jika Anda men-deploy layanan baru, deploy layanan dengan flag --ingress:

    gcloud run deploy SERVICE --image IMAGE_URL --ingress INGRESS

    Ganti

    • INGRESS dengan salah satu setelan masuk yang tersedia:
      • all
      • internal
      • internal-and-cloud-load-balancing
    • SERVICE dengan nama layanan Anda
    • IMAGE_URL dengan 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 memiliki bentuk LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
  2. Jika Anda mengubah layanan masuk yang sudah ada:

    gcloud run services update SERVICE --ingress INGRESS

    Ganti

    • INGRESS dengan salah satu setelan masuk yang tersedia:
      • all
      • internal
      • internal-and-cloud-load-balancing
    • SERVICE dengan nama layanan Anda

YAML

  1. Jika Anda membuat layanan baru, lewati langkah ini. Jika Anda mengupdate layanan yang sudah ada, download konfigurasi YAML:

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

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      annotations:
        run.googleapis.com/ingress: INGRESS
      name: SERVICE
    spec:
      template:
        metadata:
          name: REVISION

    Ganti

    • SERVICE dengan nama Cloud Run Anda.
    • INGRESS dengan salah satu setelan masuk yang tersedia:
      • all
      • internal
      • internal-and-cloud-load-balancing
    • REVISION dengan nama revisi baru atau hapus (jika ada). Jika Anda memberikan nama revisi baru, nama tersebut harus memenuhi kriteria berikut:
      • Dimulai denganSERVICE-
      • Hanya berisi huruf kecil, angka, dan -
      • Tidak diakhiri dengan -
      • Tidak melebihi 63 karakter
  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 file main.tf Anda:

resource "google_cloud_run_v2_service" "default" {
  provider = google-beta
  name     = "ingress-service"
  location = "us-central1"

  # For valid annotation values and descriptions, see
  # https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/cloud_run_v2_service#ingress
  ingress = "INGRESS_TRAFFIC_INTERNAL_ONLY"

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello" #public image for your service
    }
  }
}

Nonaktifkan URL default

Menonaktifkan URL run.app default untuk Cloud Run Anda layanan Google untuk mencegah akses ke layanan apa pun kecuali melalui Cloud Load Balancing yang Anda kelola. Hal ini mengarahkan semua lalu lintas masuk ke kebijakan keamanan yang Anda melakukan konfigurasi pada load balancer.

Menonaktifkan URL run.app akan mencegah layanan Google Cloud berikut dari pemanggilan layanan Cloud Run:

Command line

  • Untuk menonaktifkan URL run.app untuk suatu layanan, jalankan gcloud beta run deploy dengan flag --no-default-url:

    gcloud beta run deploy SERVICE_NAME --no-default-url
    

    dengan SERVICE_NAME adalah nama Cloud Run Anda layanan.

Di output, URL akan ditampilkan sebagai None.

YAML

  1. Jika Anda membuat layanan baru, lewati langkah ini. Jika Anda mengupdate layanan yang sudah ada, download konfigurasi YAML:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Untuk menonaktifkan URL run.app, deploy layanan Anda dengan anotasi default-url-disabled::

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      annotations:
        run.googleapis.com/default-url-disabled: true
        run.googleapis.com/launch-stage: BETA
      name: SERVICE
    spec:
      template:
        metadata:
          name: REVISION

    Ganti

    • SERVICE dengan nama layanan Cloud Run Anda.
    • REVISION dengan nama revisi baru atau hapus (jika ada). Jika Anda memberikan nama revisi baru, nama tersebut harus memenuhi kriteria berikut:
      • Dimulai denganSERVICE-
      • Hanya berisi huruf kecil, angka, dan -
      • Tidak diakhiri dengan -
      • Tidak melebihi 63 karakter
  3. Ganti layanan dengan konfigurasi barunya menggunakan perintah berikut:

    gcloud run services replace service.yaml

Langkah selanjutnya