Membatasi traffic masuk jaringan untuk Cloud Run

Halaman ini menjelaskan cara menggunakan setelan traffic masuk untuk membatasi akses jaringan ke layanan Cloud Run Anda.

Di tingkat jaringan, endpoint layanan Cloud Run dapat dijangkau dari jalur masuk jaringan berikut:

  • URL run.app default, yang dapat Anda nonaktifkan
  • Semua pemetaan domain yang dikonfigurasi
  • Load Balancer Aplikasi Eksternal atau Load Balancer Aplikasi Internal yang dikonfigurasi

Semua jalur traffic masuk jaringan tunduk pada setelan traffic masuk layanan. Jalur masuk default dan setelan masuk memungkinkan resource apa pun di internet menjangkau layanan Cloud Run Anda. Anda dapat menggunakan batasan kustom untuk membatasi setelan ingress untuk organisasi atau sekumpulan project. Autentikasi IAM masih berlaku untuk permintaan yang mencapai endpoint layanan dari salah satu jalur masuk jaringan sebelumnya. Untuk pendekatan berlapis guna mengelola akses, gunakan setelan traffic masuk jaringan dan autentikasi IAM.

Setelan masuk jaringan yang tersedia

Berikut adalah setelan yang tersedia:

Setelan Deskripsi
Internal Batasan maksimum. Mengizinkan permintaan dari sumber berikut:
  • Load Balancer Aplikasi internal, termasuk permintaan dari jaringan VPC Bersama saat dirutekan melalui Load Balancer Aplikasi internal.
  • Resource yang diizinkan oleh perimeter Kontrol Layanan VPC apa pun yang berisi layanan Cloud Run Anda. Cloud Run harus dikonfigurasi sebagai layanan terbatas.
  • Jaringan VPC yang berada dalam project yang sama dengan layanan Cloud Run Anda.
  • 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 berada dalam project atau perimeter Kontrol Layanan VPC yang sama dengan layanan Cloud Run Anda dan jika menggunakan URL run.app default, bukan domain kustom:
Permintaan dari sumber ini tetap berada dalam jaringan Google, meskipun permintaan tersebut mengakses layanan Anda dirun.app URL. Permintaan dari sumber lain, termasuk internet, tidak dapat menjangkau layanan Anda di run.app URL atau domain kustom.

Cloud Load Balancing dan Internal Setelan ini mengizinkan permintaan dari resource berikut:
  • Resource yang diizinkan oleh setelan "internal" yang lebih ketat
  • Load Balancer Aplikasi Eksternal
Gunakan setelan ini untuk melakukan hal 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 pada fitur Aplikasi eksternal Load Balancer, 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 > Allow traffic from external Application Load Balancers.
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-nya, baik URL run.app default maupun 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, baca bagian Menerima permintaan dari jaringan VPC.

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

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

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

Menetapkan traffic masuk

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

Konsol

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

    Buka Cloud Run

  2. Jika Anda mengonfigurasi layanan baru, klik Deploy container dan pilih Service untuk menampilkan formulir Create service. Isi halaman setelan layanan awal.

  3. Jika Anda mengonfigurasi layanan yang ada, klik layanan tersebut, 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-nya:

    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"

  deletion_protection = false # set to "true" in production

  # 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
    }
  }
}

Menonaktifkan URL default

Nonaktifkan URL run.app default layanan Cloud Run agar hanya mengizinkan traffic dari jalur masuk layanan lainnya: Cloud Load Balancing dan pemetaan domain yang dikonfigurasi.

Untuk menonaktifkan URL default, lakukan langkah-langkah berikut:

Command line

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

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

    dengan SERVICE_NAME adalah nama layanan Cloud Run Anda.

Dalam output, URL akan ditampilkan sebagai None.

Untuk memulihkan URL default, gunakan flag --default-url.

YAML

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

    gcloud run services describe SERVICE --format export > service.yaml
  2. Untuk menonaktifkan URL run.app, gunakan anotasi run.googleapis.com/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. Buat atau perbarui layanan menggunakan perintah berikut:

    gcloud run services replace service.yaml

Untuk memulihkan URL default, hapus anotasi run.googleapis.com/default-url-disabled.

Layanan Google Cloud berikut menggunakan URL run.app default untuk memanggil Cloud Run. Menonaktifkan URL run.app default akan mencegah layanan ini berfungsi seperti yang diharapkan:

Langkah selanjutnya