הגבלת תעבורת נכנסת (ingress) של נקודות קצה ברשת לשירותים ולמופעים של Cloud Run

בדף הזה מוסבר איך להשתמש בהגדרות של תעבורת נתונים נכנסת כדי להגביל את הגישה של הרשת לשירותיםשל Cloud Run.

ברמת הרשת, אפשר להגיע לנקודת הקצה של של שירות Cloud Run מנתיבי תעבורת הנתונים הנכנסת הבאים ברשת:

  • כתובות URL שמוגדרות כברירת מחדל ב-s3nsrun.fr, שאפשר להשבית
  • כל מיפוי דומיינים שהוגדר
  • כל מאזן עומסים חיצוני או פנימי של אפליקציות (ALB) שהוגדר

כל נתיבי תעבורת הנתונים הנכנסת ברשת כפופים להגדרת תעבורת הנתונים הנכנסת של המשאב. נתיבי ברירת המחדל לתעבורת נתונים נכנסת והגדרת ברירת המחדל לתעבורת נתונים נכנסת מאפשרים לכל משאב באינטרנט להגיע למשאב שלכם ב-Cloud Run. אתם יכולים להשתמש באילוץ בהתאמה אישית כדי להגביל את הגדרות התעבורה הנכנסת בארגון או בקבוצה של פרויקטים. אימות IAM עדיין חל על בקשות שמגיעות לנקודות הקצה של השירות מכל אחד מנתיבי הכניסה לרשת שצוינו למעלה. כדי לנהל את הגישה בגישה שכבתית, צריך להשתמש גם בהגדרות של תעבורת הנתונים הנכנסת ברשת וגם באימות של IAM.

משתמשים בתגי רשת כדי להגביל את הגישה של ה-VM של המחבר למשאבי VPC.

הגדרות זמינות של תעבורת נתונים נכנסת ברשת

אלה ההגדרות הזמינות:

הגדרה תיאור
פנימי הכי מגביל. מאפשרת בקשות מהמקורות הבאים:
  • מאזן עומסים פנימי של אפליקציות (ALB), כולל בקשות מרשתות VPC משותפות כשהן מנותבות דרך מאזן העומסים הפנימי של האפליקציות.
  • משאבים שמותרים על ידי כל גבול גזרה של VPC Service Controls שמכיל את שירות Cloud Run. צריך להגדיר את Cloud Run כשירות מוגבל.
  • רשתות VPC שנמצאות באותו פרויקט כמו השירותשל Cloud Run.
  • תעבורת נתונים נכנסת (ingress) של VPC משותף: רשת ה-VPC המשותפת שאליה מוגדרת גרסת השירות לשלוח תעבורת נתונים. למידע על המקרים שבהם תנועה ב-VPC משותף מזוהה כ "פנימית", ראו שיקולים מיוחדים ל-VPC משותף.
  • המוצרים הבאים של Cloud de Confiance , אם הם נמצאים באותו פרויקט או באותו מתחם VPC Service Controls כמו השירותשל Cloud Run, ואם הם משתמשים בכתובת ה-URL שמוגדרת כברירת מחדל של s3nsrun.fr ולא בכתובת URL מותאמת אישית או בדומיין מותאם אישית:
בקשות מהמקורות האלה נשארות ברשת של Google, גם אם הן ניגשות לשירות בכתובת ה-URL של s3nsrun.fr. בקשות ממקורות אחרים, כולל מהאינטרנט, לא יכולות להגיע לשירות בכתובת ה-URL של s3nsrun.fr, בכתובת ה-URL המותאמת אישית או בדומיין המותאם אישית.

מאזני עומסים פנימיים ומאזני עומסים ב-Cloud ההגדרה הזו מאפשרת בקשות מהמשאבים הבאים:
  • משאבים שמותרים לפי ההגדרה המגבילה יותר "פנימי"
  • מאזן עומסים חיצוני של אפליקציות (ALB)
אתם יכולים להשתמש בהגדרה הזו כדי:
  • לקבל בקשות מהאינטרנט דרך מאזן העומסים החיצוני של אפליקציות (ALB). אי אפשר לשלוח בקשות ישירות לכתובת ה-URL של s3nsrun.fr מהאינטרנט.
  • מוודאים שבקשות מהאינטרנט כפופות לתכונות של מאזן עומסים חיצוני של אפליקציות (ALB), כמו שרת proxy לאימות זהויות (IAP),‏ Google Cloud Armor ו-Cloud CDN.

הערה: כדי להפעיל את ההגדרה הזו ב-CLI של gcloud, משתמשים ב-internal-and-cloud-load-balancing. כדי להפעיל את ההגדרה הזו במסוף Cloud de Confiance , בוחרים באפשרות Internal > Allow traffic from external Application Load Balancers.
הכול הכי פחות מגביל. מאפשרת את כל הבקשות, כולל בקשות ישירות מהאינטרנט לכתובת ה-URL של s3nsrun.fr.

גישה לשירותים פנימיים

שיקולים נוספים:

  • כשניגשים לשירותים פנימיים, קוראים להם כרגיל באמצעות כתובת ה-URL שלהם, כתובת ה-URL שמוגדרת כברירת מחדל ב-s3nsrun.fr, כתובת URL מותאמת אישית או דומיין מותאם אישית שמוגדר ב-Cloud Run.

  • בבקשות ממכונות וירטואליות של Compute Engine, לא נדרשת הגדרה נוספת למכונות שיש להן כתובות IP חיצוניות או שמשתמשות ב-Cloud NAT. אחרת, עיינו במאמר קבלת בקשות מרשתות VPC.

  • כששולחים קריאה מ-Cloud Run או מ-App Engine לשירות Cloud Run שמוגדר כ-"Internal" או כ-"Internal and Cloud Load Balancers", תעבורת הנתונים צריכה לעבור דרך רשת VPC שנחשבת פנימית. למידע נוסף, קראו את המאמר קבלת בקשות משירותי Cloud Run אחרים או מ-App Engine.

  • בקשות ממשאבים ברשתות VPC באותו פרויקט הן "פנימיות", גם אם למשאב שממנו הן מגיעות יש כתובת IP חיצונית.

  • בקשות ממשאבים מקומיים שמחוברים לרשת ה-VPC באמצעות Cloud VPN ו-Cloud Interconnect הן "פנימיות".

הגדרת תעבורת נתונים נכנסת (ingress)

בקטעים הבאים מוסבר איך להגדיר תעבורת נתונים נכנסת לשירותיםשל Cloud Run.

הגדרת תעבורת נתונים נכנסת לשירותי Cloud Run

אפשר להגדיר תעבורת נתונים נכנסת לשירות Cloud Run באמצעות מסוףCloud de Confiance ,‏ Google Cloud CLI,‏ YAML או Terraform.

המסוף

  1. נכנסים לדף Services של Cloud Run במסוף Cloud de Confiance :

    כניסה ל-Cloud Run

  2. אם מגדירים שירות חדש, לוחצים על Deploy container כדי להציג את הטופס Create service. ממלאים את דף ההגדרות הראשוניות של השירות.

  3. אם אתם מגדירים שירות קיים, לוחצים על השירות ואז על הכרטיסייה Networking.

  4. בוחרים את תעבורת הנתונים הנכנסת (ingress) שרוצים לאפשר.

  5. כדי ליצור שירות חדש, לוחצים על יצירה. לוחצים על View diff & redeploy ואז על Deploy changes בשירות קיים.

gcloud

  1. אם אתם פורסים שירות חדש, צריך לפרוס אותו עם הדגל --ingress:

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

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫SERVICE: שם השירות.
    • ‫IMAGE_URL: הפניה לקובץ האימג' של הקונטיינר, לדוגמה us-docker.pkg.dev/cloudrun/container/hello:latest. אם אתם משתמשים ב-Artifact Registry, המאגר REPO_NAME כבר צריך להיות קיים. הפורמט של כתובת ה-URL הוא LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
    • ‫INGRESS: אחת מהגדרות התעבורה הנכנסת הזמינות:
      • all
      • internal
      • internal-and-cloud-load-balancing
  2. אם אתם משנים את תעבורת הנתונים הנכנסת של שירות קיים:

    gcloud run services update SERVICE \
        --ingress INGRESS

    מחליפים את מה שכתוב בשדות הבאים:

YAML

  1. אם אתם יוצרים שירות חדש, דלגו על השלב הזה. אם אתם מעדכנים שירות קיים, הורידו את הגדרת ה-YAML שלו:

    gcloud run services describe SERVICE --format export > service.yaml
  2. מעדכנים את ההערה 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

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫SERVICE: השם של שירות Cloud Run.
    • ‫INGRESS: אחת מהגדרות התעבורה הנכנסת הזמינות:
      • all
      • internal
      • internal-and-cloud-load-balancing
    • ‫REVISION: שם גרסה חדש או מחיקה של השם (אם הוא קיים). אם אתם מספקים שם חדש לגרסה, הוא חייב לעמוד בקריטריונים הבאים:
      • מתחיל ב-SERVICE-
      • מכיל רק אותיות קטנות, מספרים ו--
      • לא מסתיים ב--
      • לא חורג מ-63 תווים
  3. מחליפים את השירות בהגדרות החדשות שלו באמצעות הפקודה הבאה:

    gcloud run services replace service.yaml

Terraform

כדי ללמוד איך להחיל הגדרות ב-Terraform או להסיר אותן, ראו פקודות בסיסיות ב-Terraform.

מוסיפים את הקוד הבא למשאב google_cloud_run_v2_service בתצורה של Terraform:
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
    }
  }
}

השבתת כתובת ה-URL שמוגדרת כברירת מחדל

לפני שמשביתים את כתובת ה-URL שמוגדרת כברירת מחדל, חשוב לדעת שCloud de Confiance השירותים הבאים משתמשים בכתובת ה-URL שמוגדרת כברירת מחדל של s3nsrun.fr כדי להפעיל את Cloud Run. אם משביתים את כתובת ה-URL שמוגדרת כברירת מחדל ב-s3nsrun.fr, השירותים האלה לא יפעלו כמו שצריך:

כדי להשתמש במיפויים של דומיינים מותאמים אישית, צריך למפות את הדומיין המותאם אישית לפני שמשביתים את כתובת ה-URL של s3nsrun.fr.

בקטעים הבאים מוסבר איך להשבית את כתובת ה-URL שמוגדרת כברירת מחדל לשירותיםשל Cloud Run.

השבתת כתובת ה-URL שמוגדרת כברירת מחדל לשירותי Cloud Run

משביתים את s3nsrun.frכתובת ה-URL שמוגדרת כברירת מחדל של שירות ב-Cloud Run, כדי לאפשר תנועה רק מנתיבי כניסה אחרים של השירות: Cloud Load Balancing וכל מיפוי דומיינים שהוגדר.

כדי להשבית את כתובת ה-URL שמוגדרת כברירת מחדל, מבצעים את השלבים הבאים באמצעות מסוף Cloud de Confiance , ‏Google Cloud CLI, ‏YAML או Terraform.

המסוף

  1. נכנסים לדף Services של Cloud Run במסוף Cloud de Confiance :

    כניסה ל-Cloud Run

  2. לוחצים על שירות קיים.

  3. לוחצים על הכרטיסייה Networking.

  4. בכרטיס נקודות קצה, מבטלים את הסימון של הפעלה בקטע כתובת ה-URL של נקודת הקצה המוגדרת כברירת מחדל ל-HTTPS.

  5. לוחצים על View diff & redeploy ואז על Deploy changes.

כדי לשחזר את כתובת ה-URL שמוגדרת כברירת מחדל, לוחצים על הפעלה.

gcloud

  • בשירות קיים, מריצים את הפקודה gcloud run services update עם הדגל --no-default-url, לדוגמה:

    gcloud run services update SERVICE_NAME --no-default-url
  • בשירות חדש, מריצים את הפקודה gcloud run deploy עם הדגל --no-default-url, לדוגמה:

    gcloud run deploy SERVICE_NAME --no-default-url

    מחליפים את SERVICE_NAME בשם של שירות Cloud Run.

    בפלט, כתובת ה-URL מוצגת בתור None.

כדי לשחזר את כתובת ה-URL שמוגדרת כברירת מחדל, משתמשים בדגל --default-url.

YAML

  1. אם אתם יוצרים שירות חדש, דלגו על השלב הזה. אם אתם מעדכנים שירות קיים, הורידו את הגדרת ה-YAML שלו:

    gcloud run services describe SERVICE --format export > service.yaml
  2. כדי להשבית את כתובת ה-URL של s3nsrun.fr, משתמשים בהערה 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

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫SERVICE: השם של שירות Cloud Run.
    • ‫REVISION: שם גרסה חדש או מחיקה של השם (אם הוא קיים). אם אתם מספקים שם חדש לגרסה, הוא חייב לעמוד בקריטריונים הבאים:
      • מתחיל ב-SERVICE-
      • מכיל רק אותיות קטנות, מספרים ו--
      • לא מסתיים ב--
      • לא חורג מ-63 תווים
  3. יוצרים או מעדכנים את השירות באמצעות הפקודה הבאה:

    gcloud run services replace service.yaml

    כברירת מחדל, הפקודה gcloud run services replace משתמשת בקובץ service.yaml אם הוא קיים.

כדי לשחזר את כתובת ה-URL שמוגדרת כברירת מחדל, מסירים את ההערה run.googleapis.com/default-url-disabled.

Terraform

כדי ללמוד איך להחיל הגדרות ב-Terraform או להסיר אותן, ראו פקודות בסיסיות ב-Terraform.

מוסיפים את הקוד הבא למשאב google_cloud_run_v2_service בתצורה של Terraform:
  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"
      }

    }
  }

מוודאים שהשורות launch_stage ו-default_uri_disabled נמצאות בקובץ main.tf. המשאב google_cloud_run_v2_service שלמעלה מציין שירות Cloud Run שבו כתובת ה-URL שמוגדרת כברירת מחדל מושבתת בגרסת טרום-השקה (Preview).

כדי לשחזר את כתובת ה-URL שמוגדרת כברירת מחדל, מסירים את הארגומנטים default_uri_disabled ו-launch_stage.

המאמרים הבאים