Membatasi traffic masuk endpoint jaringan untuk layanan dan instance Cloud Run

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

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

  • URL run.app default, yang dapat Anda nonaktifkan
  • 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 resource. Jalur traffic masuk default dan setelan traffic masuk memungkinkan resource apa pun di internet menjangkau resource Cloud Run Anda. Anda dapat menggunakan batasan kustom untuk membatasi setelan ingress bagi organisasi Anda atau untuk sekumpulan project. Autentikasi IAM masih berlaku untuk permintaan yang mencapai endpoint layanan atau instance dari jalur masuk jaringan sebelumnya. Untuk pendekatan berlapis guna mengelola akses, gunakan setelan traffic masuk jaringan dan autentikasi IAM.

Gunakan tag jaringan untuk membatasi akses VM konektor ke resource VPC.

Setelan traffic 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 atau instanceAnda. Cloud Run harus dikonfigurasi sebagai layanan terbatas.
  • Jaringan VPC yang berada dalam project yang sama dengan layanan atau instanceCloud Run Anda.
  • Traffic masuk VPC Bersama: jaringan VPC Bersama yang revisi layanan atau instance Cloud Run 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 atau instance, dan jika menggunakan URL run.app default, bukan URL kustom atau domain kustom:
Permintaan dari sumber ini tetap berada dalam jaringan Google, meskipun permintaan tersebut mengakses layanan atau instance Anda di URL run.app. Permintaan dari sumber lain, termasuk internet, tidak dapat menjangkau layanan atau instance Anda di URL run.app, URL kustom, atau domain kustom.

Load Balancer Internal dan Cloud 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 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 > Izinkan 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-nya, baik URL run.app default, URL kustom, 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 bagian Menerima permintaan dari jaringan VPC.

  • Saat memanggil dari Cloud Run atau App Engine ke layanan Cloud Run yang disetel ke "Internal" atau "Internal dan Cloud Load Balancer", traffic harus dirutekan melalui jaringan VPC yang dianggap internal. Lihat Menerima permintaan dari layanan Cloud Run atau App Engine 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 adalah "internal".

Menetapkan ingress

Bagian berikut menunjukkan cara menetapkan ingress untuk layanan Cloud Run dan instance.

Menetapkan traffic masuk untuk layanan Cloud Run

Anda dapat menetapkan traffic masuk untuk layanan Cloud Run menggunakan Google Cloud konsol, Google Cloud CLI, YAML, atau Terraform.

Konsol

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

    Buka Cloud Run

  2. Jika Anda mengonfigurasi layanan baru, klik Deploy container untuk menampilkan formulir Buat layanan. 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.

  5. Klik Buat untuk layanan baru. Klik View diff & redeploy, lalu Deploy changes untuk layanan yang ada.

gcloud

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

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

    Ganti kode berikut:

    • SERVICE: nama layanan Anda.
    • 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 .
    • INGRESS: salah satu setelan masuk yang tersedia:
      • all
      • internal
      • internal-and-cloud-load-balancing
  2. Jika Anda mengubah layanan masuk yang sudah ada:

    gcloud run services update SERVICE \
        --ingress INGRESS

    Ganti kode berikut:

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:
      name: SERVICE
      annotations:
        run.googleapis.com/ingress: INGRESS
    spec:
      template:
        metadata:
          name: REVISION

    Ganti kode berikut:

    • SERVICE: nama layanan Cloud Run Anda.
    • INGRESS: salah satu setelan masuk yang tersedia:
      • all
      • internal
      • internal-and-cloud-load-balancing
    • REVISION: 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 resource google_cloud_run_v2_service di konfigurasi Terraform 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
    }
  }
}

Menetapkan traffic masuk untuk instance Cloud Run

Anda dapat menetapkan ingress untuk instance Cloud Run menggunakan Google Cloud CLI atau YAML:

gcloud

  1. Jika Anda membuat instance baru, deploy instance dengan flag --ingress:

    gcloud beta run instances deploy INSTANCE \
        --image IMAGE_URL \
        --ingress INGRESS

    Ganti kode berikut:

    • INSTANCE: nama instance Anda.
    • IMAGE_URL: referensi ke image container, seperti us-docker.pkg.dev/cloudrun/container/hello:latest.
    • INGRESS: salah satu setelan masuk yang tersedia:
      • all
      • internal
      • internal-and-cloud-load-balancing
  2. Jika Anda mengubah ingress instance yang ada:

    gcloud beta run instances update INSTANCE \
        --ingress INGRESS

    Ganti kode berikut:

YAML

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

    gcloud beta run instances describe INSTANCE --format export > instance.yaml
  2. Update anotasi run.googleapis.com/ingress::

    apiVersion: run.googleapis.com/v1
    kind: Instance
    metadata:
      name: INSTANCE
      annotations:
        run.googleapis.com/ingress: INGRESS
        run.googleapis.com/launch-stage: BETA
    spec:
      containers:
      - name: CONTAINER_NAME
        image: IMAGE_URL

    Ganti kode berikut:

    • INSTANCE: nama instance Cloud Run Anda.
    • INGRESS: salah satu setelan masuk yang tersedia:
      • all
      • internal
      • internal-and-cloud-load-balancing
    • CONTAINER_NAME: nama container.
    • IMAGE_URL: referensi ke image container, seperti us-docker.pkg.dev/cloudrun/container/hello:latest.
  3. Buat atau perbarui instance menggunakan perintah berikut:

    gcloud beta run instances replace instance.yaml

Menonaktifkan URL default

Sebelum Anda menonaktifkan URL default, perhatikan bahwaGoogle Cloud layanan atau instance berikut menggunakan URL run.app default untuk memanggil Cloud Run. Menonaktifkan URL run.app default akan mencegah layanan atau instance berfungsi seperti yang diharapkan:

Untuk menggunakan pemetaan domain kustom, petakan domain kustom sebelum Anda menonaktifkan URL run.app.

Lihat bagian berikut untuk mempelajari cara menonaktifkan URL default untuk layanan dan instanceCloud Run.

Menonaktifkan URL default untuk layanan Cloud Run

Nonaktifkan URL run.app default layanan Cloud Run atau instance agar hanya mengizinkan traffic dari jalur ingress lain layanan: Cloud Load Balancing dan pemetaan domain yang dikonfigurasi.

Untuk menonaktifkan URL default, lakukan langkah-langkah berikut menggunakan konsol Google Cloud , Google Cloud CLI, YAML, atau Terraform.

Konsol

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

    Buka Cloud Run

  2. Klik layanan yang ada.

  3. Pilih tab Networking.

  4. Di kartu Endpoints, hapus Enable di bagian Default HTTPS endpoint URL.

  5. Klik View diff & redeploy, lalu Deploy changes.

Untuk memulihkan URL default, pilih Aktifkan.

gcloud

  • Untuk layanan yang sudah ada, jalankan perintah gcloud run services update dengan flag --no-default-url, misalnya:

    gcloud run services update SERVICE_NAME --no-default-url
  • Untuk layanan baru, jalankan perintah gcloud run deploy dengan flag --no-default-url, misalnya:

    gcloud run deploy SERVICE_NAME --no-default-url

    Ganti SERVICE_NAME dengan nama layanan Cloud Run Anda

    Dalam output, URL 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
      name: SERVICE
    spec:
      template:
        metadata:
          name: REVISION

    Ganti kode berikut:

    • SERVICE: nama layanan Cloud Run Anda.
    • REVISION: 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 update layanan menggunakan perintah berikut:

    gcloud run services replace service.yaml

    Perintah gcloud run services replace secara default menggunakan file service.yaml jika ada.

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

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" "disable_default_url_service" {
    name     = "cloudrun-service"
    location = "europe-west1"
    default_uri_disabled = true

    template {
      containers {
        image = "us-docker.pkg.dev/cloudrun/container/hello"
      }
      annotations = {
        "run.googleapis.com/ingress" = "all"   # "all" or "internal-only"
      }

    }
  }

Verifikasi bahwa baris launch_stage dan default_uri_disabled ada di file main.tf Anda. Resource google_cloud_run_v2_service sebelumnya menentukan layanan Cloud Run dengan URL default yang dinonaktifkan di Pratinjau.

Untuk memulihkan URL default, hapus argumen default_uri_disabled dan launch_stage.

Menonaktifkan URL default untuk instance Cloud Run

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

gcloud

  • Untuk instance yang sudah ada, jalankan perintah gcloud beta run instances update dengan flag --no-default-url, misalnya:

    gcloud beta run instances update INSTANCE --no-default-url
  • Untuk instance baru, jalankan perintah gcloud beta run instances deploy dengan flag --no-default-url, misalnya:

    gcloud beta run instances deploy INSTANCE \
        --image IMAGE_URL \
        --no-default-url

    Ganti INSTANCE dengan nama instance Cloud Run Anda.

    Dalam output, URL ditampilkan sebagai None.

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

YAML

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

    gcloud beta run instances describe INSTANCE --format export > instance.yaml
  2. Untuk menonaktifkan URL default, tetapkan anotasi run.googleapis.com/default-url-disabled ke 'true':

    apiVersion: run.googleapis.com/v1
    kind: Instance
    metadata:
      name: INSTANCE
      annotations:
        run.googleapis.com/default-url-disabled: 'true'
        run.googleapis.com/launch-stage: BETA
    spec:
      containers:
      - name: CONTAINER_NAME
        image: IMAGE_URL

    Ganti kode berikut:

    • INSTANCE: nama instance Cloud Run Anda.
    • CONTAINER_NAME: nama container.
    • IMAGE_URL: referensi ke image container, seperti us-docker.pkg.dev/cloudrun/container/hello:latest.
  3. Buat atau perbarui instance menggunakan perintah berikut:

    gcloud beta run instances replace instance.yaml

Untuk memulihkan URL default, tetapkan anotasi run.googleapis.com/default-url-disabled ke false atau hapus.

Langkah berikutnya