VPC with connectors

כדי לאפשר לשירות או למשימה לשירות, למשימה או למאגר ה-workers ב-Cloud Run לשלוח תנועה לרשת VPC, צריך להגדיר מחבר של גישה ל-VPC ללא שרת (Serverless).

לפני שמתחילים

  • אם עדיין אין לכם רשת VPC בפרויקט, צרו אחת.

  • אם אתם משתמשים ב-VPC משותף, קראו את המאמר התחברות לרשת VPC משותפת.

  • במסוף Google Cloud , מוודאים ש-Serverless VPC Access API מופעל בפרויקט.

    הפעלת ה-API

  • לכל חיבור לרשת VPC נדרשת רשת משנה ייעודית משלו ב-/28, ואי אפשר לשנות אותה אחרי שיוצרים אותה. אם אתם לא משתמשים ב-VPC משותף, אתם יכולים ליצור רשת משנה לשימוש המחבר, או לציין טווח כתובות IP מותאם אישית שלא נמצא בשימוש כדי שהמחבר ייצור רשת משנה לשימוש שלו. אם בוחרים בטווח כתובות IP בהתאמה אישית, רשת המשנה שנוצרת מוסתרת ואי אפשר להשתמש בה בכללי חומת אש ובהגדרות NAT.

  • המחברים של Serverless VPC Access מתרחבים אוטומטית בהתאם לעומס (scale up) כדי לעמוד בביקוש של תעבורת הנתונים, אבל לא מצטמצמים בהתאם לעומס (scale down). אחרי שינוי קנה המידה, המשאבים והעלויות המשויכות נשארים מוקצים.

מגבלות

  • אם המשאב שלכם ב-Cloud Run משתמש במחבר של VPC ללא שרת, המכונות הווירטואליות של המחבר ממשיכות לצבור עלויות גם אם תקרת ההוצאות בתקציב משהה את עומסי העבודה. כדי לוודא שתקרות ההוצאות מכסות את תעבורת הנתונים היוצאת ברשת, השתמשו בתעבורת נתונים יוצאת ישירה של VPC.

  • קצבי חבילות גבוהים יכולים לנצל את כל הקרדיטים המשותפים של המעבד (CPU) ואת זיכרון מעקב החיבורים במכונות f1 ו-e2-micro, ולגרום לזמן קצוב לתפוגה גם כשלא מגיעים למגבלות רוחב הפס. בסביבות ייצור שכוללות בו-זמניות גבוהה או בקשות קטנות בתדירות גבוהה, מומלץ להשתמש במכונות e2-standard-4 כדי להבטיח שיש מספיק משאבים ייעודיים.

  • בסביבות Assured Workloads אי אפשר ליצור מחברים של גישה ל-VPC ללא שרת (Serverless). כדי לעקוף את הבעיה, הגדירו Direct VPC egress למשאבי Cloud Run במקום זאת.

יצירת מחבר

כדי לשלוח בקשות לרשת ה-VPC ולקבל את התשובות המתאימות בלי להשתמש באינטרנט הציבורי, אתם יכולים להשתמש במחבר של חיבור לרשת (VPC) מאפליקציית serverless.

אם המחבר נמצא באותו פרויקט כמו רשת ה-VPC, אתם יכולים ליצור מחבר באמצעות רשת משנה קיימת או ליצור מחבר ורשת משנה חדשה.

אם המחבר נמצא בפרויקט שירות ומשתמש ברשת VPC משותפת, המחבר ורשת ה-VPC שמשויכת אליו נמצאים בפרויקטים שונים. כשהמחבר ורשת ה-VPC שלו נמצאים בפרויקטים שונים, מנהל רשת של רשת VPC משותפת צריך ליצור את רשת המשנה של המחבר ברשת ה-VPC המשותפת לפני שתוכלו ליצור את המחבר, וגם תצטרכו ליצור את המחבר באמצעות רשת משנה קיימת.

מידע נוסף על הדרישות של רשתות משנה זמין במאמר דרישות של רשתות משנה למחברים.

במאמר תפוקה ושינוי קנה מידה מוסבר על תפוקת המחבר, כולל סוג המכונה ושינוי קנה המידה.

אפשר ליצור מחבר באמצעות מסוף Google Cloud ,‏ Google Cloud CLI או Terraform.

המסוף

  1. נכנסים לדף הסקירה הכללית של Serverless VPC Access.

    כניסה לדף Serverless VPC Access

  2. לוחצים על Create connector.

  3. בשדה Name, מזינים שם למחבר שתואם למוסכמות מתן השמות של Compute Engine, עם הדרישות הנוספות הבאות: השם חייב להיות באורך של פחות מ-21 תווים, ומקפים (-) נספרים כשני תווים.

  4. בשדה Region, בוחרים אזור למחבר. האזור צריך להיות זהה לאזור של השירות ללא שרת (serverless).

  5. בשדה Network, בוחרים את רשת ה-VPC שאליה רוצים לצרף את המחבר.

  6. בשדה Subnet, בוחרים אחת מהאפשרויות הבאות:

    • יצירת מחבר באמצעות רשת משנה קיימת: בוחרים את רשת המשנה הקיימת בשדה Subnet.

    • יצירת מחבר ורשת משנה חדשה: בשדה Subnet בוחרים באפשרות Custom IP range. לאחר מכן, מזינים את הכתובת הראשונה ב-CIDR /28 שלא בשימוש (לדוגמה 10.8.0.0/28) כדי להשתמש בה כטווח הראשי של כתובות IPv4 של רשת משנה חדשה ש- Google Cloud יוצר ברשת ה-VPC של המחבר. חשוב לוודא שטווח כתובות ה-IP לא מתנגש עם נתיבים קיימים ברשת ה-VPC של המחבר. השם של רשת המשנה החדשה מתחיל בקידומת "aet-‎".

  7. (אופציונלי) כדי להגדיר אפשרויות התאמה לעומס לשליטה נוספת במחבר, לוחצים על Show Scaling Settings כדי להציג את טופס ההתאמה לעומס.

    1. מגדירים את מספר המכונות המינימלי והמקסימלי של המחבר, או משתמשים בערכי ברירת המחדל: 2 (מינימום) ו-10 (מקסימום). המחבר מתרחב עד למקסימום שצוין אם השימוש בתנועה מחייב זאת. צריך להשתמש בערכים בין 2 ל-10.
    2. בתפריט Instance Type, בוחרים את סוג המכונה שבה רוצים להשתמש למחבר, או משתמשים בברירת המחדל e2-micro. שימו לב לסרגל הצד של העלויות שמופיע בצד ימין כשבוחרים את סוג המכונה, שבו מוצגות הערכות של רוחב הפס והעלויות.
  8. לוחצים על יצירה.

  9. כשהמחבר יהיה מוכן לשימוש, יופיע סימן וי ירוק ליד השם שלו.

gcloud

  1. מפעילים את Cloud Shell במסוף Google Cloud .

    הפעלת Cloud Shell

    בחלק התחתון של מסוף Google Cloud יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.

  2. מעדכנים את הרכיבים של gcloud לגרסה העדכנית:

    gcloud components update
  3. מוודאים שה-API של "חיבור לרשת (VPC) מאפליקציית serverless" מופעל בפרויקט:

    gcloud services enable vpcaccess.googleapis.com
  4. יוצרים את המחבר באחת מהאפשרויות הבאות:

    לפרטים נוספים ולארגומנטים אופציונליים, עיינו במפרט של gcloud.

    • יצירת מחבר באמצעות רשת משנה קיימת:

      gcloud compute networks vpc-access connectors create CONNECTOR_NAME \
       --region REGION \
       --subnet SUBNET_NAME \
       --subnet-project HOST_PROJECT_ID \
       --min-instances MIN \
       --max-instances MAX \
       --machine-type MACHINE_TYPE

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

      • ‫CONNECTOR_NAME: שם למחבר, שתואם למוסכמות מתן השמות של Compute Engine, עם דרישות נוספות: השם חייב להיות באורך של פחות מ-21 תווים, ומקפים (-) נספרים כשני תווים.
      • ‫REGION: אזור למחבר, שתואם לאזור של השירות או המשימה ללא שרת (serverless).
      • ‫SUBNET_NAME: השם של תת-הרשת הקיימת.
      • ‫HOST_PROJECT_ID: מזהה הפרויקט המארח של ה-VPC המשותף. אם המחבר ורשת המשנה הקיימת נמצאים באותו פרויקט, משמיטים את הדגל --subnet-project.
      • ‫MIN: המספר המינימלי של המכונות שבהן ישתמש המחבר. צריך להשתמש במספר שלם בין 2(ברירת המחדל) לבין 9.
      • ‫MAX: המספר המקסימלי של המכונות שבהן אפשר להשתמש במחבר. צריך להשתמש במספר שלם בין 3 ל-10 (ברירת המחדל).
      • ‫MACHINE_TYPE: צריך להיות אחד מהערכים הבאים: f1-micro, ‏e2-micro או e2-standard-4.
    • יצירת מחבר ורשת משנה חדשה:

      gcloud compute networks vpc-access connectors create CONNECTOR_NAME \
       --region REGION \
       --network VPC_NETWORK \
       --range IP_RANGE
       --min-instances MIN \
       --max-instances MAX \
       --machine-type MACHINE_TYPE

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

      • ‫CONNECTOR_NAME: שם למחבר, שתואם למוסכמות מתן השמות של Compute Engine, עם דרישות נוספות: השם חייב להיות באורך של פחות מ-21 תווים, ומקפים (-) נספרים כשני תווים.
      • ‫REGION: אזור למחבר, שתואם לאזור של השירות או המשימה ללא שרת (serverless).
      • ‫VPC_NETWORK: השם של רשת ה-VPC שאליה רוצים לחבר את המחבר. המחבר ורשת ה-VPC צריכים להיות באותו פרויקט.
      • ‫IP_RANGE: צריך לספק CIDR של /28 שלא נמצא בשימוש (לדוגמה 10.8.0.0/28) כדי להשתמש בו כטווח הראשי של כתובות IPv4 של רשת משנה חדשה שנוצרת על ידי Google Cloud ברשת ה-VPC של המחבר. חשוב לוודא שטווח כתובות ה-IP לא מתנגש עם מסלולים קיימים ברשת ה-VPC של המחבר. השם של רשת המשנה החדשה מתחיל בקידומת "aet-‎".
      • ‫MIN: המספר המינימלי של המכונות שבהן ישתמש המחבר. צריך להשתמש במספר שלם בין 2(ברירת המחדל) לבין 9.
      • ‫MAX: המספר המקסימלי של המכונות שבהן אפשר להשתמש במחבר. צריך להשתמש במספר שלם בין 3 ל-10 (ברירת המחדל). אם המחבר מגיע למספר המקסימלי של מכונות, הוא לא יורד בחזרה.
      • ‫MACHINE_TYPE: צריך להיות אחד מהערכים הבאים: f1-micro, ‏e2-micro או e2-standard-4.
  5. לפני שמשתמשים במחבר, מוודאים שהוא במצב READY:

    gcloud compute networks vpc-access connectors describe CONNECTOR_NAME \
    --region REGION

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

    • ‫CONNECTOR_NAME: השם של המחבר שציינתם בשלב הקודם.
    • ‫REGION: האזור של המחבר, שציינתם בשלב הקודם.

    הפלט צריך להכיל את השורה state: READY.

Terraform

אתם יכולים להשתמש במשאב של Terraform כדי להפעיל את ה-API של vpcaccess.googleapis.com.

resource "google_project_service" "vpcaccess-api" {
  project = var.project_id # Replace this with your project ID in quotes
  service = "vpcaccess.googleapis.com"
}

אתם יכולים להשתמש במודולים של Terraform כדי ליצור רשת VPC ותת-רשת, ואז ליצור את המחבר.

module "test-vpc-module" {
  source       = "terraform-google-modules/network/google"
  version      = "~> 18.0"
  project_id   = var.project_id # Replace this with your project ID in quotes
  network_name = "my-serverless-network"
  mtu          = 1460

  subnets = [
    {
      subnet_name   = "serverless-subnet"
      subnet_ip     = "10.10.10.0/28"
      subnet_region = "us-central1"
    }
  ]
}

module "serverless-connector" {
  source     = "terraform-google-modules/network/google//modules/vpc-serverless-connector-beta"
  version    = "~> 18.0"
  project_id = var.project_id
  vpc_connectors = [{
    name        = "central-serverless"
    region      = "us-central1"
    subnet_name = module.test-vpc-module.subnets["us-central1/serverless-subnet"].name
    # host_project_id = var.host_project_id # Specify a host_project_id for shared VPC
    machine_type  = "e2-standard-4"
    min_instances = 2
    max_instances = 7
    }
    # Uncomment to specify an ip_cidr_range
    #   , {
    #     name          = "central-serverless2"
    #     region        = "us-central1"
    #     network       = module.test-vpc-module.network_name
    #     ip_cidr_range = "10.10.11.0/28"
    #     subnet_name   = null
    #     machine_type  = "e2-standard-4"
    #     min_instances = 2
    #   max_instances = 7 }
  ]
  depends_on = [
    google_project_service.vpcaccess-api
  ]
}

הגדרת השירות

אתם יכולים להגדיר את שירות Cloud Run כך שישתמש במחבר של חיבור לרשת (VPC) מאפליקציית serverless כדי לשלוח תעבורת נתונים יוצאת. אפשר לעשות את זה באמצעות מסוף Google Cloud , Google Cloud CLI או קובץ YAML כשיוצרים שירות חדש או פורסים גרסה חדשה:

המסוף

  1. נכנסים ל-Cloud Run במסוף Google Cloud :

    כניסה ל-Cloud Run

  2. בתפריט הניווט של Cloud Run, לוחצים על Services:

    1. אם אתם מגדירים שירות חדש, לוחצים על Deploy container וממלאים את דף הגדרות השירות הראשוני. לאחר מכן לוחצים על Containers, Networking, Security כדי להרחיב את דף הגדרת השירות.

    2. אם אתם מגדירים שירות קיים, לוחצים על השירות.

  3. נכנסים לכרטיסייה Networking.

  4. בתפריט רשת, בוחרים אחת מהאפשרויות הבאות:

    • כדי לנתק את השירות מרשת VPC, מבטלים את הסימון בתיבה Connect to a VPC for outbound traffic.
    • כדי להשתמש במחבר קיים, בוחרים אותו מהרשימה או בוחרים באפשרות Custom כדי להשתמש במחבר קיים שלא מופיע ברשימה.
    • כדי ליצור מחבר חדש, בוחרים באפשרות הוספת מחבר VPC חדש. במאמר יצירת חיבור לרשת VPC מוסבר איך יוצרים מחבר.
  5. בקטע Traffic routing, בוחרים אחת מהאפשרויות הבאות:

    • Route only requests to private IPs to the VPC כדי לשלוח רק תנועה לכתובות פנימיות דרך רשת ה-VPC.
    • ‫Route all traffic to the VPC כדי לשלוח את כל תעבורת הנתונים היוצאת דרך רשת ה-VPC.
  6. כדי ליצור שירות חדש, לוחצים על יצירה. לוחצים על View diff & redeploy ואז על Deploy changes בשירות קיים.

gcloud

כדי לציין מחבר במהלך הפריסה, משתמשים בדגל --vpc-connector:

gcloud run deploy SERVICE --image IMAGE_URL --vpc-connector CONNECTOR_NAME

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

  • ‫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.
  • ‫CONNECTOR_NAME: שם המחבר.

כדי לצרף, לעדכן או להסיר מחבר לשירות קיים, משתמשים בפקודה gcloud run services update עם אחד מהדגלים הבאים, לפי הצורך:

לדוגמה, כדי לצרף או לעדכן מחבר:

gcloud run services update SERVICE --vpc-connector CONNECTOR_NAME

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

  • ‫SERVICE: שם השירות.
  • ‫CONNECTOR_NAME: שם המחבר.

YAML

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

    gcloud run services describe SERVICE --format export > service.yaml
  2. מוסיפים או מעדכנים את המאפיין run.googleapis.com/vpc-access-connector במאפיין annotations, שנמצא במאפיין ברמה העליונה spec:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/vpc-access-connector: CONNECTOR_NAME
          name: REVISION

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

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

    gcloud run services replace service.yaml

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

Terraform

אתם יכולים להשתמש במשאב של Terraform כדי ליצור שירות ולהגדיר אותו כך שישתמש במחבר שלכם.

# Cloud Run service
resource "google_cloud_run_v2_service" "gcr_service" {
  name     = "mygcrservice"
  location = "us-west1"

  deletion_protection = false # set to "true" in production

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"
      resources {
        limits = {
          cpu    = "1000m"
          memory = "512Mi"
        }
      }
      # the service uses this SA to call other Google Cloud APIs
      # service_account_name = myservice_runtime_sa
    }

    scaling {
      # Limit scale up to prevent any cost blow outs!
      max_instance_count = 5
    }

    vpc_access {
      # Use the VPC Connector
      connector = google_vpc_access_connector.connector.id
      # all egress from the service should go through the VPC Connector
      egress = "ALL_TRAFFIC"
    }
  }
}

הגדרת המשימה

אחרי שיוצרים מחבר של חיבור לרשת (VPC) מאפליקציית serverless, אפשר להגדיר את משימת Cloud Run כך שתשתמש במחבר. אפשר לעשות את זה באמצעות מסוף Google Cloud , ‏Google Cloud CLI או YAML כשיוצרים משימה חדשה:

המסוף

  1. נכנסים לדף Cloud Run במסוף Google Cloud :

    כניסה ל-Cloud Run

  2. בתפריט הניווט של Cloud Run, לוחצים על Jobs:

    1. אם אתם יוצרים משימה חדשה, לוחצים על Deploy container כדי למלא את דף הגדרות המשימה הראשוני.

    2. אם אתם מגדירים משימה קיימת, בוחרים את המשימה ולוחצים על View and edit job configuration.

  3. לוחצים על Containers, Connections, Security כדי להרחיב את דף מאפייני המשימה.

  4. לוחצים על הכרטיסייה חיבורים.

  5. בשדה רשת, בוחרים אחת מהאפשרויות הבאות בתפריט:

    • כדי לנתק את המשימה מרשת VPC, מבטלים את הסימון בתיבה Connect to a VPC for outbound traffic.
    • כדי להשתמש במחבר קיים, בוחרים אותו מהרשימה או בוחרים באפשרות Custom כדי להשתמש במחבר קיים שלא מופיע ברשימה.
    • כדי ליצור מחבר חדש, בוחרים באפשרות הוספת מחבר VPC חדש. במאמר יצירת מחבר VPC מוסבר איך יוצרים מחבר.
  6. לוחצים על יצירה או על עדכון.

gcloud

כדי לציין מחבר במהלך פריסת המשימה, משתמשים בדגל --vpc-connector:

gcloud run jobs create JOB --image IMAGE_URL --vpc-connector CONNECTOR_NAME

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

  • ‫JOB: שם המשימה.
  • ‫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.
  • ‫CONNECTOR_NAME: שם המחבר.

כדי לצרף, לעדכן או להסיר מחבר לשירות קיים, משתמשים בפקודה gcloud run jobs update עם אחד מהדגלים הבאים, לפי הצורך:

לדוגמה, כדי לצרף או לעדכן מחבר:

gcloud run jobs update JOB --vpc-connector CONNECTOR_NAME

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

  • ‫JOB: שם המשימה.
  • ‫CONNECTOR_NAME: שם המחבר.

YAML

כדי להוריד ולראות הגדרות של משימה קיימת, אפשר להשתמש בפקודה gcloud run jobs describe --format export, שמניבה תוצאות נקיות בפורמט YAML. אחרי זה אפשר לשנות את השדות שמתוארים בהמשך ולהעלות את קובץ ה-YAML ששיניתם באמצעות הפקודה gcloud run jobs replace. חשוב לשנות רק את השדות שמתועדים.

  1. כדי לראות ולהוריד את ההגדרות:

    gcloud run jobs describe JOB --format export > job.yaml
  2. מוסיפים או מעדכנים את המאפיין run.googleapis.com/vpc-access-connector במאפיין annotations, שנמצא במאפיין ברמה העליונה spec:

    apiVersion: serving.knative.dev/v1
      kind: Job
      metadata:
        name: JOB
      spec:
        template:
          metadata:
            annotations:
              run.googleapis.com/vpc-access-connector: CONNECTOR_NAME

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

    • ‫JOB: השם של המשימה ב-Cloud Run.
    • ‫CONNECTOR_NAME: השם של המחבר. כשמציינים הגדרת תעבורת נתונים יוצאת, חובה להשתמש במאפיין run.googleapis.com/vpc-access-connector.
  3. מחליפים את המשימה בהגדרה החדשה שלה באמצעות הפקודה הבאה:

    gcloud run jobs replace job.yaml

הגדרת מאגר ה-workers

מחברי גישה ל-VPC ללא שרת תומכים רק בתעבורת נתונים יוצאת (egress) לרשתות VPC. אם אתם צריכים תעבורת נתונים נכנסת (ingress), אתם צריכים להשתמש ב-Direct VPC כי הוא תומך בתעבורת נתונים נכנסת ב-L4 כשמשתמשים במאגרי Worker.

אחרי שיוצרים מחבר, מגדירים את מאגר ה-Workers של Cloud Run כך שישתמש במחבר. כדי לפרוס מאגר חדש של Worker באמצעות Terraform:

Terraform

אתם יכולים להשתמש במשאב של Terraform כדי ליצור מאגר של Worker ולהגדיר אותו לשימוש במחבר שלכם.

resource "google_cloud_run_v2_worker_pool" "default" {
  name     = "vpc-connector-worker-pool"
  location = "us-central1"

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"
    }
    vpc_access {
      connector = google_vpc_access_connector.connector.id
      egress    = "ALL_TRAFFIC"
    }
  }
}

גישה למשאבי VPC

אתם יכולים להגביל את הגישה מהמחבר באמצעות כללים וכללי מדיניות של חומת אש, ולהוסיף הגבלות נוספות על ידי קביעת הגדרות של תעבורת נתונים יוצאת ונכנסת.

הגדרות מדיניות וכללים של חומת האש

כללי חומת האש שנדרשים למחברים בפרויקטים של שירותים

אם יוצרים מחבר ברשת VPC נפרדת או בפרויקט המארח של רשת VPC משותפת, Google Cloud יוצר את כל כללי חומת האש שנדרשים לפעולת המחבר. מידע נוסף זמין במאמר כללי חומת אש למחברים ברשתות VPC נפרדות או בפרויקטים מארחים של VPC משותף.

עם זאת, אם יוצרים מחבר בפרויקט שירות והמחבר מטרגט רשת VPC משותפת בפרויקט המארח, צריך להוסיף כללי חומת אש כדי לאפשר תנועה שנדרשת לפעולת המחבר מהטווחים הבאים:

הטווחים האלה משמשים את התשתית של Google שעליה מבוססים Cloud Run, פונקציות Cloud Run וסביבת ברירת המחדל ב-App Engine. כל הבקשות מכתובות ה-IP האלה מגיעות מהתשתית של Google, כדי לוודא שכל משאב בלי שרת (serverless) מתקשר רק עם המחבר שאליו הוא מחובר.

בנוסף, צריך לאפשר תנועה מרשת המשנה של המחבר למשאבים ברשת ה-VPC.

כדי לבצע את השלבים האלה, צריך להיות לכם אחד מהתפקידים הבאים בפרויקט המארח:

בהגדרה בסיסית, מחילים את הכללים כדי לאפשר למשאבים בלי שרת (serverless) בכל פרויקט שירות שמחובר לרשת ה-VPC המשותפת לשלוח בקשות לכל משאב ברשת.

כדי להחיל את הכללים האלה, מריצים את הפקודות הבאות בפרויקט המארח:

  1. יוצרים כללים של חומת אש שמאפשרים לבקשות מתשתית ה-Serverless של Google ומבדיקות תקינות להגיע לכל המחברים ברשת. בפקודות האלה, יציאות ה-UDP וה-TCP משמשות כשרתי proxy ולבדיקות תקינות של HTTP, בהתאמה. אל תשנו את היציאות שצוינו.

    gcloud compute firewall-rules create serverless-to-vpc-connector \
        --allow tcp:667,udp:665-666,icmp \
        --source-ranges=35.199.224.0/19 \
        --direction=INGRESS \
        --target-tags vpc-connector \
        --network=VPC_NETWORK
    gcloud compute firewall-rules create vpc-connector-to-serverless \
        --allow tcp:667,udp:665-666,icmp \
        --destination-ranges=35.199.224.0/19 \
        --direction=EGRESS \
        --target-tags vpc-connector \
        --network=VPC_NETWORK
    gcloud compute firewall-rules create vpc-connector-health-checks \
        --allow tcp:667 \
        --source-ranges=35.191.0.0/16,35.191.192.0/18,130.211.0.0/22 \
        --direction=INGRESS \
        --target-tags vpc-connector \
        --network=VPC_NETWORK

    מחליפים את VPC_NETWORK בשם של רשת ה-VPC שאליה רוצים לצרף את המחבר.

  2. יוצרים כלל של חומת אש לתעבורת נתונים נכנסת ברשת ה-VPC, כדי לאפשר בקשות ממחברים שמטרגטים את הרשת הזו:

    gcloud compute firewall-rules create vpc-connector-requests \
        --allow tcp,udp,icmp \
        --direction=INGRESS \
        --source-tags vpc-connector \
        --network=VPC_NETWORK

    הכלל הזה נותן למחבר גישה לכל משאב ברשת. כדי להגביל את המשאבים שסביבת ה-serverless יכולה להגיע אליהם באמצעות חיבור לרשת (VPC) מאפליקציית serverless, קראו את המאמר הגבלת הגישה של המכונה הווירטואלית של המחבר למשאבים של רשת ה-VPC.

יצירת כללים לחומת האש למחברים ספציפיים

אם תפעלו לפי ההוראות במאמר כללי חומת האש הנדרשים למחברים בפרויקטים של שירות, כללי חומת האש יחולו על כל המחברים – גם אלה שקיימים וגם אלה שייווצרו בעתיד. אם אתם לא רוצים שזה יקרה, אלא רוצים ליצור כללים למחברים ספציפיים בלבד, אתם יכולים להגדיר את היקף הכללים כך שיחולו רק על המחברים האלה.

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

  • תגי רשת: לכל מחבר יש שני תגי רשת: vpc-connector ו-vpc-connector-REGION-CONNECTOR_NAME. השתמשו בפורמט השני כדי להגביל את ההיקף של כללי חומת האש למחבר ספציפי.
  • טווחי כתובות IP: אפשר להשתמש בהם רק לכללי תעבורת נתונים יוצאת, כי הם לא פועלים לכללי תעבורת נתונים נכנסת. אתם יכולים להשתמש בטווח ה-IP של רשת המשנה של המחבר כדי להגביל את ההיקף של כללי חומת האש למחבר VPC אחד.

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

אתם יכולים להגביל את הגישה של המחבר למשאבים ברשת VPC היעד שלו באמצעות כללי חומת אש של VPC או כללים במדיניות חומת אש. כדי להגביל את הגישה, אפשר להשתמש באחת מהשיטות הבאות:

  • יוצרים כללי תעבורת נתונים נכנסת שהיעדים שלהם מייצגים את המשאבים שרוצים להגביל את הגישה של המכונות הווירטואליות של המחבר אליהם, והמקורות שלהם מייצגים את המכונות הווירטואליות של המחבר.
  • יוצרים כללי תעבורת נתונים יוצאת שהיעדים שלהם מייצגים את המכונות הווירטואליות של המחבר, והיעדים שלהם מייצגים את המשאבים שאליהם רוצים להגביל את הגישה של המכונות הווירטואליות של המחבר.

הדוגמאות הבאות ממחישות כל אחת מהאסטרטגיות.

הגבלת הגישה באמצעות כללי תעבורת נתונים נכנסת (ingress)

בוחרים תגי רשת או טווחי CIDR כדי לשלוט בתנועה הנכנסת לרשת ה-VPC.

תגי רשת

בשלבים הבאים מוסבר איך ליצור כללי תעבורת נתונים נכנסת שמגבילים את הגישה של מחבר לרשת ה-VPC, על סמך תגי הרשת של המחבר.

  1. חשוב לוודא שיש לכם את ההרשאות הנדרשות כדי להוסיף כללי חומת אש. אתם צריכים אחד מהתפקידים הבאים בניהול זהויות והרשאות גישה (IAM):

  2. דחיית תנועה של מחברים ברשת ה-VPC.

    יוצרים כלל חומת אש לתעבורת נתונים נכנסת (ingress) עם עדיפות נמוכה מ-1,000 ברשת ה-VPC, כדי לדחות תעבורת נתונים נכנסת מתג הרשת של המחבר. הכלל הזה מבטל את כלל חומת האש המשתמע שנוצר כברירת מחדל ברשת ה-VPC על ידי החיבור לרשת (VPC) מאפליקציית serverless.

    gcloud compute firewall-rules create RULE_NAME \
    --action=DENY \
    --rules=PROTOCOL \
    --source-tags=VPC_CONNECTOR_NETWORK_TAG \
    --direction=INGRESS \
    --network=VPC_NETWORK \
    --priority=PRIORITY

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

    • ‫RULE_NAME: השם של כלל חומת האש החדש. לדוגמה, deny-vpc-connector.

    • ‫PROTOCOL: פרוטוקול אחד או יותר שרוצים לאפשר ממחבר ה-VPC. הפרוטוקולים הנתמכים הם tcp או udp. לדוגמה, tcp:80,udp מאפשר תנועת TCP דרך יציאה 80 ותנועת UDP. מידע נוסף זמין במאמרי העזרה בנושא הדגל allow.

      למטרות אבטחה ואימות, אתם יכולים גם להגדיר כללי דחייה כדי לחסום תנועה בפרוטוקולים הבאים שלא נתמכים: ah,‏ all,‏ esp,‏ icmp,‏ ipip ו-sctp.

    • ‫VPC_CONNECTOR_NETWORK_TAG: תג הרשת של המחבר האוניברסלי, אם רוצים להגביל את הגישה לכל המחברים (כולל מחברים שייווצרו בעתיד), או תג הרשת הייחודי, אם רוצים להגביל את הגישה למחבר ספציפי.

      • תג רשת אוניברסלי: vpc-connector
      • תג רשת ייחודי: vpc-connector-REGION-CONNECTOR_NAME

        מחליפים את:

        • ‫REGION: האזור של המחבר שרוצים להגביל
        • ‫CONNECTOR_NAME: שם המחבר שרוצים להגביל

      למידע נוסף על תגי רשת של מחברים, ראו תגי רשת.

    • ‫VPC_NETWORK: השם של רשת ה-VPC

    • ‫PRIORITY: מספר שלם בין 0 ל-65535. לדוגמה, הערך 0 מגדיר את העדיפות הגבוהה ביותר.

  3. מאפשרים תנועה מהמחבר למשאב שאמור לקבל תנועה מהמחבר.

    משתמשים בדגלים allow ו-target-tags כדי ליצור כלל חומת אש לתעבורת נתונים נכנסת, שמטרגט את המשאב ברשת ה-VPC שאליו רוצים שמחבר ה-VPC ייגש. מגדירים את העדיפות של הכלל הזה לערך נמוך יותר מהעדיפות של הכלל שיצרתם בשלב הקודם.

    gcloud compute firewall-rules create RULE_NAME \
    --allow=PROTOCOL \
    --source-tags=VPC_CONNECTOR_NETWORK_TAG \
    --direction=INGRESS \
    --network=VPC_NETWORK \
    --target-tags=RESOURCE_TAG \
    --priority=PRIORITY

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

    • ‫RULE_NAME: השם של כלל חומת האש החדש. לדוגמה, allow-vpc-connector-for-select-resources.

    • ‫PROTOCOL: פרוטוקול אחד או יותר שרוצים לאפשר ממחבר ה-VPC. הפרוטוקולים הנתמכים הם tcp או udp. לדוגמה, tcp:80,udp מאפשר תנועת TCP דרך יציאה 80 ותנועת UDP. מידע נוסף זמין במאמרי העזרה בנושא הדגל allow.

    • ‫VPC_CONNECTOR_NETWORK_TAG: תג הרשת של המחבר האוניברסלי, אם רוצים להגביל את הגישה לכל המחברים (כולל מחברים שייווצרו בעתיד), או תג הרשת הייחודי, אם רוצים להגביל את הגישה למחבר ספציפי. הוא צריך להתאים לתג הרשת שציינתם בשלב הקודם.

      • תג רשת אוניברסלי: vpc-connector
      • תג רשת ייחודי: vpc-connector-REGION-CONNECTOR_NAME

        מחליפים את:

        • ‫REGION: האזור של המחבר שרוצים להגביל
        • ‫CONNECTOR_NAME: שם המחבר שרוצים להגביל

      למידע נוסף על תגי רשת של מחברים, ראו תגי רשת.

    • ‫VPC_NETWORK: השם של רשת ה-VPC

    • ‫RESOURCE_TAG: תג הרשת של משאב ה-VPC שאליו רוצים שמחבר ה-VPC ייגש

    • ‫PRIORITY: מספר שלם שקטן מהעדיפות שהגדרתם בשלב הקודם. לדוגמה, אם הגדרתם את העדיפות של הכלל שיצרתם בשלב הקודם ל-990, נסו 980.

למידע נוסף על הדגלים הנדרשים והאופציונליים ליצירת כללים של חומת אש, קראו את המסמכים של gcloud compute firewall-rules create.

טווח CIDR

בשלבים הבאים מוסבר איך ליצור כללי תעבורת נתונים נכנסת שמגבילים את הגישה של המחבר לרשת ה-VPC, על סמך טווח ה-CIDR של המחבר.

  1. חשוב לוודא שיש לכם את ההרשאות הנדרשות כדי להוסיף כללי חומת אש. אתם צריכים אחד מהתפקידים הבאים בניהול זהויות והרשאות גישה (IAM):

  2. דחיית תנועה של מחברים ברשת ה-VPC.

    ברשת ה-VPC, יוצרים כלל חומת אש לתעבורת נתונים נכנסת עם עדיפות נמוכה מ-1,000, כדי לדחות תעבורת נתונים נכנסת מטווח ה-CIDR של המחבר. הכלל הזה מבטל את כלל חומת האש המשתמע שנוצר כברירת מחדל ברשת ה-VPC על ידי החיבור לרשת (VPC) מאפליקציית serverless.

    gcloud compute firewall-rules create RULE_NAME \
    --action=DENY \
    --rules=PROTOCOL \
    --source-ranges=VPC_CONNECTOR_CIDR_RANGE \
    --direction=INGRESS \
    --network=VPC_NETWORK \
    --priority=PRIORITY

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

    • ‫RULE_NAME: השם של כלל חומת האש החדש. לדוגמה, deny-vpc-connector.

    • ‫PROTOCOL: פרוטוקול אחד או יותר שרוצים לאפשר ממחבר ה-VPC. הפרוטוקולים הנתמכים הם tcp או udp. לדוגמה, tcp:80,udp מאפשר תנועת TCP דרך יציאה 80 ותנועת UDP. מידע נוסף זמין במאמרי העזרה בנושא הדגל allow.

      למטרות אבטחה ואימות, אתם יכולים גם להגדיר כללי דחייה כדי לחסום תנועה בפרוטוקולים הבאים שלא נתמכים: ah,‏ all,‏ esp,‏ icmp,‏ ipip ו-sctp.

    • ‫VPC_CONNECTOR_CIDR_RANGE: טווח ה-CIDR של המחבר שהגישה אליו מוגבלת

    • ‫VPC_NETWORK: השם של רשת ה-VPC

    • ‫PRIORITY: מספר שלם בין 0 ל-65535. לדוגמה, הערך 0 מגדיר את העדיפות הגבוהה ביותר.

  3. מאפשרים תנועה מהמחבר למשאב שאמור לקבל תנועה מהמחבר.

    משתמשים בדגלים allow ו-target-tags כדי ליצור כלל חומת אש לתעבורת נתונים נכנסת, שמטרגט את המשאב ברשת ה-VPC שאליו רוצים שמחבר ה-VPC ייגש. מגדירים את העדיפות של הכלל הזה לערך נמוך יותר מהעדיפות של הכלל שיצרתם בשלב הקודם.

    gcloud compute firewall-rules create RULE_NAME \
    --allow=PROTOCOL \
    --source-ranges=VPC_CONNECTOR_CIDR_RANGE \
    --direction=INGRESS \
    --network=VPC_NETWORK \
    --target-tags=RESOURCE_TAG \
    --priority=PRIORITY

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

    • ‫RULE_NAME: השם של כלל חומת האש החדש. לדוגמה, allow-vpc-connector-for-select-resources.

    • ‫PROTOCOL: פרוטוקול אחד או יותר שרוצים לאפשר ממחבר ה-VPC. הפרוטוקולים הנתמכים הם tcp או udp. לדוגמה, tcp:80,udp מאפשר תנועת TCP דרך יציאה 80 ותנועת UDP. מידע נוסף זמין במאמרי העזרה בנושא הדגל allow.

    • ‫VPC_CONNECTOR_CIDR_RANGE: טווח ה-CIDR של המחבר שאת הגישה שלו אתם מגבילים

    • ‫VPC_NETWORK: השם של רשת ה-VPC

    • ‫RESOURCE_TAG: תג הרשת של משאב ה-VPC שאליו רוצים שמחבר ה-VPC ייגש

    • ‫PRIORITY: מספר שלם שקטן מהעדיפות שהגדרתם בשלב הקודם. לדוגמה, אם הגדרתם את העדיפות של הכלל שיצרתם בשלב הקודם ל-990, נסו 980.

למידע נוסף על הדגלים הנדרשים והאופציונליים ליצירת כללים של חומת האש, קראו את המאמר בנושא gcloud compute firewall-rules create.

הגבלת הגישה באמצעות כללים לתעבורת נתונים יוצאת (egress)

כך יוצרים כללי תעבורת נתונים יוצאת כדי להגביל את הגישה למחבר:

  1. חשוב לוודא שיש לכם את ההרשאות הנדרשות כדי להוסיף כללי חומת אש. צריך להיות לכם אחד מהתפקידים הבאים בממשק ניהול הזהויות והרשאות הגישה (IAM):

  2. דחיית תעבורת נתונים יוצאת מהמחבר.

    יוצרים כלל של חומת אש לתעבורת נתונים יוצאת במחבר של Serverless VPC Access, כדי למנוע ממנו לשלוח תעבורת נתונים יוצאת לכל יעד, למעט תגובות מבוססות.

    gcloud compute firewall-rules create RULE_NAME \
    --action=DENY \
    --rules=PROTOCOL \
    --direction=EGRESS \
    --target-tags=VPC_CONNECTOR_NETWORK_TAG \
    --network=VPC_NETWORK \
    --priority=PRIORITY

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

    • ‫RULE_NAME: השם של כלל חומת האש החדש. לדוגמה, deny-vpc-connector.

    • ‫PROTOCOL: פרוטוקול אחד או יותר שרוצים לאפשר ממחבר ה-VPC. הפרוטוקולים הנתמכים הם tcp או udp. לדוגמה, tcp:80,udp מאפשר תנועת TCP דרך יציאה 80 ותנועת UDP. מידע נוסף זמין במאמרי העזרה בנושא הדגל allow.

      למטרות אבטחה ואימות, אתם יכולים גם להגדיר כללי דחייה כדי לחסום תנועה בפרוטוקולים הבאים שלא נתמכים: ah,‏ all,‏ esp,‏ icmp,‏ ipip ו-sctp.

    • ‫VPC_CONNECTOR_NETWORK_TAG: תג הרשת האוניברסלי של מחבר ה-VPC, אם רוצים שהכלל יחול על כל מחברי ה-VPC הקיימים ועל כל מחברי ה-VPC שייווצרו בעתיד. או תג הרשת הייחודי של מחבר ה-VPC, אם רוצים לשלוט במחבר ספציפי.

    • ‫VPC_NETWORK: השם של רשת ה-VPC

    • ‫PRIORITY: מספר שלם בין 0 ל-65535. לדוגמה, הערך 0 מגדיר את העדיפות הגבוהה ביותר.

  3. מאפשרים תנועה יוצאת כשהיעד נמצא בטווח ה-CIDR שאליו רוצים שהמחבר ייגש.

    משתמשים בדגלים allow ו-destination-ranges כדי ליצור כלל חומת אש שמאפשר תעבורת נתונים יוצאת מהמחבר לטווח יעדים ספציפי. מגדירים את טווח היעד לטווח ה-CIDR של המשאב ברשת ה-VPC שאליו רוצים שהמחבר יוכל לגשת. מגדירים את העדיפות של הכלל הזה לערך נמוך יותר מהעדיפות של הכלל שיצרתם בשלב הקודם.

    gcloud compute firewall-rules create RULE_NAME \
    --allow=PROTOCOL \
    --destination-ranges=RESOURCE_CIDR_RANGE \
    --direction=EGRESS \
    --network=VPC_NETWORK \
    --target-tags=VPC_CONNECTOR_NETWORK_TAG \
    --priority=PRIORITY

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

    • ‫RULE_NAME: השם של כלל חומת האש החדש. לדוגמה, allow-vpc-connector-for-select-resources.

    • ‫PROTOCOL: פרוטוקול אחד או יותר שרוצים לאפשר ממחבר ה-VPC. הפרוטוקולים הנתמכים הם tcp או udp. לדוגמה, tcp:80,udp מאפשר תנועת TCP דרך יציאה 80 ותנועת UDP. מידע נוסף זמין במאמרי העזרה בנושא הדגל allow.

    • ‫RESOURCE_CIDR_RANGE: טווח ה-CIDR של המחבר שהגישה אליו מוגבלת

    • ‫VPC_NETWORK: השם של רשת ה-VPC

    • ‫VPC_CONNECTOR_NETWORK_TAG: תג הרשת האוניברסלי של מחבר ה-VPC, אם רוצים שהכלל יחול על כל מחברי ה-VPC הקיימים ועל כל מחברי ה-VPC שייווצרו בעתיד. או תג הרשת הייחודי של מחבר ה-VPC, אם רוצים לשלוט במחבר ספציפי. אם השתמשתם בתג הרשת הייחודי בשלב הקודם, השתמשו בתג הרשת הייחודי.

    • ‫PRIORITY: מספר שלם שקטן מהעדיפות שהגדרתם בשלב הקודם. לדוגמה, אם הגדרתם את העדיפות של הכלל שיצרתם בשלב הקודם ל-990, נסו 980.

למידע נוסף על הדגלים הנדרשים והאופציונליים ליצירת כללים של חומת אש, קראו את המסמכים של gcloud compute firewall-rules create.

ניהול המחבר

כברירת מחדל, רק בקשות ליעדים מסוימים של כתובות IPv4 פנימיות (כולל יעדי IPv4 פנימיים שמתקבלים בתגובות DNS) מנותבות דרך מחבר של חיבור לרשת (VPC) מאפליקציית serverless. עם זאת, במקרים מסוימים יכול להיות שתרצו שכל הבקשות היוצאות מהמשאב של Cloud Run ינותבו לרשת ה-VPC.

חיבור לרשת (VPC) מאפליקציית Serverless תומך רק בניתוב תנועת IPv4. אין תמיכה בתעבורת נתונים ב-IPv6, גם אם יש לכם נתיבי IPv6 ברשת ה-VPC.

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

  • ניתוב בקשות לכתובות IP פרטיות בלבד ל-VPC: ברירת המחדל. תעבורת הנתונים מנותבת דרך רשת ה-VPC רק אם החבילות שנושאות את תעבורת הנתונים כוללות יעדים שתואמים לאלה:

    חבילות לכל יעד אחר מנותבות מ-Cloud Run לאינטרנט (לא דרך רשת VPC).

  • ‫Route all traffic to the VPC: כל תעבורת הנתונים מנותבת דרך רשת ה-VPC שמשויכת למחבר, לכל יעדי החבילות. אתם צריכים להשתמש באפשרות הזו במקרים הבאים:

    • אם אתם צריכים לשלוח תנועה לטווחי רשתות משנה של VPC עם טווחי כתובות IP חיצוניות בשימוש פרטי. למידע נוסף על טווחי רשתות משנה של VPC, קראו את הקטע טווחי IPv4 חוקיים בסקירה הכללית על רשתות משנה.
    • אם אתם צריכים לשלוח תנועה לנקודת קצה של Private Service Connect לממשקי Google API, שהכתובת שלה היא כתובת IP חיצונית בשימוש פרטי. למידע נוסף על נקודות קצה של Private Service Connect לממשקי Google API, קראו את המאמר גישה לממשקי Google API דרך נקודות קצה.
    • אם אתם צריכים לשלוח תנועה לכל יעד אחר של כתובת IP חיצונית בשימוש פרטי, שאפשר לנתב בתוך רשת ה-VPC של המחבר. דוגמאות ליעדים אחרים שכוללים כתובות IP חיצוניות בשימוש פרטי: טווחים של רשתות משנה ב-peering (וטווחים של רשתות משנה ב-peering שנוצרו מטווחי כתובות IP שהוקצו לשירותים) ויעדים שאפשר לגשת אליהם באמצעות מסלולים בהתאמה אישית ב-VPC.

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

שליטה בתעבורת נתונים יוצאת של שירות

כשיוצרים שירות חדש או פורסים גרסה חדשה, אפשר לציין הגדרת תעבורת נתונים יוצאת של VPC באמצעות מסוףGoogle Cloud , Google Cloud CLI או קובץ YAML:

המסוף

  1. נכנסים ל-Cloud Run במסוף Google Cloud :

    כניסה ל-Cloud Run

  2. בתפריט הניווט של Cloud Run, לוחצים על Services:

    1. אם אתם מגדירים שירות חדש, לוחצים על Deploy container וממלאים את דף הגדרות השירות הראשוני. לאחר מכן לוחצים על Containers, Networking, Security כדי להרחיב את דף הגדרת השירות.

    2. אם אתם מגדירים שירות קיים, לוחצים על השירות.

  3. נכנסים לכרטיסייה Networking.

  4. אחרי שבוחרים מחבר VPC, בוחרים באפשרות Route only requests to private IPs to the VPC או באפשרות Route all traffic to the VPC.

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

gcloud

כדי לציין הגדרת תעבורת נתונים יוצאת, משתמשים בדגל --vpc-egress. אפשר לציין הגדרת תעבורת נתונים יוצאת במהלך הפריסה:

gcloud run deploy SERVICE \
--image IMAGE_URL \
--vpc-connector CONNECTOR_NAME \
--vpc-egress EGRESS_SETTING

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

  • ‫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.
  • ‫CONNECTOR_NAME: שם המחבר.
  • ‫EGRESS_SETTING: ערך של הגדרת תעבורת נתונים יוצאת:
    • ‫all-traffic: כל התנועה היוצאת נשלחת דרך המחבר.
    • ‫private-ranges-only: שליחת תנועה רק לכתובות פנימיות דרך מחבר ה-VPC.

אפשר גם לעדכן שירות קיים ולשנות את הגדרת תעבורת הנתונים היוצאת:

gcloud run services update SERVICE --vpc-egress EGRESS_SETTING

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

YAML

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

    gcloud run services describe SERVICE --format export > service.yaml
  2. מוסיפים או מעדכנים את המאפיין run.googleapis.com/vpc-access-egress במאפיין annotations, שנמצא במאפיין ברמה העליונה spec:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/vpc-access-connector: CONNECTOR_NAME
            run.googleapis.com/vpc-access-egress: EGRESS_SETTING
          name: REVISION

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

    • ‫SERVICE: השם של שירות Cloud Run.
    • ‫CONNECTOR_NAME: השם של המחבר. כשמציינים הגדרת תעבורת נתונים יוצאת, חובה להשתמש במאפיין run.googleapis.com/vpc-access-connector.
    • ‫EGRESS_SETTING: אחת מהאפשרויות הבאות:
      • ‫all-traffic: כל התנועה היוצאת נשלחת דרך המחבר.
      • ‫private-ranges-only: שליחת תנועה רק לכתובות פנימיות דרך מחבר ה-VPC.
      • ‫REVISION: שם גרסה חדש או מחיקה של השם (אם הוא קיים). אם אתם נותנים שם חדש לגרסה, הוא חייב לעמוד בקריטריונים הבאים:
        • מתחיל ב-SERVICE-
        • מכיל רק אותיות קטנות, מספרים ו--
        • לא מסתיים ב--
        • לא חורג מ-63 תווים
  3. יוצרים או מעדכנים את השירות באמצעות הפקודה הבאה:

    gcloud run services replace service.yaml

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

שליטה בתנועת הנתונים היוצאת של המשימות

כשיוצרים או מעדכנים משימה, אפשר לציין הגדרת תעבורת נתונים יוצאת ב-VPC באמצעות מסוףGoogle Cloud , Google Cloud CLI או קובץ YAML:

המסוף

  1. נכנסים לדף Cloud Run במסוף Google Cloud :

    כניסה ל-Cloud Run

  2. בתפריט הניווט של Cloud Run, לוחצים על Jobs:

    1. אם אתם יוצרים משימה חדשה, לוחצים על Deploy container כדי למלא את דף הגדרות המשימה הראשוני.

    2. אם אתם מגדירים משימה קיימת, בוחרים את המשימה ולוחצים על View and edit job configuration.

  3. לוחצים על Containers, Connections, Security כדי להרחיב את דף מאפייני המשימה.

  4. לוחצים על הכרטיסייה חיבורים.

  5. אחרי שבוחרים מחבר, בוחרים באפשרות Route only requests to private IPs to the VPC או באפשרות Route all traffic to the VPC.

  6. לוחצים על יצירה או על עדכון.

gcloud

כדי לציין הגדרת תעבורת נתונים יוצאת, משתמשים בדגל --vpc-egress. אתם יכולים לציין הגדרת תעבורת נתונים יוצאת במהלך תהליך הפריסה של המשימה:

gcloud run jobs create JOB \
--image IMAGE_URL \
--vpc-connector CONNECTOR_NAME \
--vpc-egress EGRESS_SETTING

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

  • ‫JOB: שם המשימה.
  • ‫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.
  • ‫CONNECTOR_NAME: שם המחבר.
  • ‫EGRESS_SETTING: ערך של הגדרת תעבורת נתונים יוצאת:
    • ‫all-traffic: כל התנועה היוצאת נשלחת דרך המחבר.
    • ‫private-ranges-only: שליחת תנועה רק לכתובות פנימיות דרך מחבר ה-VPC.

אפשר גם לעדכן משימה קיימת ולשנות את הגדרת תעבורת נתונים יוצאת (egress):

gcloud run jobs update JOB --vpc-egress EGRESS_SETTING

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

YAML

כדי להוריד ולראות הגדרות של משימה קיימת, אפשר להשתמש בפקודה gcloud run jobs describe --format export, שמניבה תוצאות בפורמט YAML. אחרי זה אפשר לשנות את השדות שמתוארים בהמשך ולהעלות את קובץ ה-YAML ששיניתם באמצעות הפקודה gcloud run jobs replace. חשוב לשנות רק את השדות שמתועדים.

  1. מחליפים את המשימה בהגדרה החדשה שלה באמצעות הפקודה הבאה:

    gcloud run jobs replace job.yaml
  2. מוסיפים או מעדכנים את המאפיין run.googleapis.com/vpc-access-egress במאפיין annotations, שנמצא במאפיין ברמה העליונה spec:

    apiVersion: serving.knative.dev/v1
      kind: Job
      metadata:
        name: JOB
      spec:
        template:
          metadata:
            annotations:
              run.googleapis.com/vpc-access-connector: CONNECTOR_NAME
              run.googleapis.com/vpc-access-egress: EGRESS_SETTING

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

    • ‫JOB: השם של המשימה ב-Cloud Run.
    • ‫CONNECTOR_NAME: השם של המחבר. כשמציינים הגדרת תעבורת נתונים יוצאת, חובה להשתמש במאפיין run.googleapis.com/vpc-access-connector.
    • ‫EGRESS_SETTING: אחת מהאפשרויות הבאות:
      • ‫all-traffic: כל התנועה היוצאת נשלחת דרך המחבר.
      • ‫private-ranges-only: שליחת תנועה רק לכתובות פנימיות דרך מחבר ה-VPC.
  3. מחליפים את המשימה בהגדרות החדשות שלה באמצעות הפקודה הבאה:

    gcloud run jobs replace job.yaml

הצגת הגדרות המחבר

כדי לראות את ההגדרות הנוכחיות של המחבר של חיבור לרשת (VPC) מאפליקציית serverless במשאב של Cloud Run, אתם יכולים להשתמש במסוף Google Cloud או בכלי שורת הפקודה gcloud:

המסוף

  1. כניסה ל-Cloud Run

  2. לוחצים על המשאב הרצוי ב-Cloud Run כדי לפתוח את דף הפרטים.

    • לוחצים על הכרטיסייה Networking של השירות.

    • לוחצים על הכרטיסייה Configuration של המשימה.

ההגדרה של חיבור לרשת VPC מופיעה בכרטיסייה Networking.

gcloud

  1. כדי לראות את ההגדרות של השירות, משתמשים בפקודה הבאה:

    gcloud run services describe SERVICE
  2. כדי לראות את ההגדרות של המשימה, משתמשים בפקודה הבאה:

    gcloud run jobs describe JOB
  3. מאתרים את ההגדרה של המחבר של חיבור לרשת (VPC) מאפליקציית serverless בהגדרות שהוחזרו.

ניתוק מרשת VPC

ניתוק שירות

אתם יכולים לנתק שירות מרשת ה-VPC באמצעות מסוף Google Cloud או Google Cloud CLI:

המסוף

  1. נכנסים ל-Cloud Run במסוף Google Cloud :

    כניסה ל-Cloud Run

  2. בתפריט הניווט של Cloud Run, לוחצים על Services:

    1. אם אתם מגדירים שירות חדש, לוחצים על Deploy container וממלאים את דף הגדרות השירות הראשוני. לאחר מכן לוחצים על Containers, Networking, Security כדי להרחיב את דף הגדרת השירות.

    2. אם אתם מגדירים שירות קיים, לוחצים על השירות.

  3. נכנסים לכרטיסייה Networking.

  4. כדי לנתק את השירות מרשת VPC, מבטלים את הבחירה באפשרות Connect to a VPC for outbound traffic בתפריט.

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

gcloud

כדי לנתק שירות, משתמשים בפקודה gcloud run services update עם הדגל הבא:

gcloud run services update SERVICE --clear-vpc-connector
  • מחליפים את SERVICE בשם השירות.

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

ניתוק משרה

אפשר לנתק משימה מרשת ה-VPC באמצעות מסוף Google Cloud או Google Cloud CLI:

המסוף

  1. נכנסים לדף Cloud Run במסוף Google Cloud :

    כניסה ל-Cloud Run

  2. בתפריט הניווט של Cloud Run, לוחצים על Jobs:

    1. אם אתם יוצרים משימה חדשה, לוחצים על Deploy container כדי למלא את דף הגדרות המשימה הראשוני.

    2. אם אתם מגדירים משימה קיימת, בוחרים את המשימה ולוחצים על View and edit job configuration.

  3. לוחצים על Containers, Connections, Security כדי להרחיב את דף מאפייני המשימה.

  4. לוחצים על הכרטיסייה חיבורים.

  5. בשדה Network, מבטלים את הסימון של התיבה Connect to a VPC for outbound traffic.

  6. לוחצים על יצירה או על עדכון.

gcloud

כדי לנתק משימה, משתמשים בפקודה gcloud run jobs update עם הדגל הבא:

--clear-vpc-connector

gcloud run jobs update JOB --clear-vpc-connector

מחליפים את JOB בשם של המשימה.

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

עדכון מחבר

אתם יכולים לעדכן ולעקוב אחרי המאפיינים הבאים של המחבר באמצעות מסוף Google Cloud ,‏ Google Cloud CLI או ה-API:

  • סוג המכונה (המכונה הווירטואלית)
  • מספר מינימלי ומקסימלי של מכונות
  • קצב העברת הנתונים, מספר המכונות וניצול המעבד (CPU) לאחרונה

עדכון סוג המכונה

המסוף

  1. נכנסים לדף הסקירה הכללית של Serverless VPC Access.

    כניסה לדף Serverless VPC Access

  2. בוחרים את המחבר שרוצים לערוך ולוחצים על עריכה.

  3. ברשימה Instance type, בוחרים את סוג המכונה (המכונה הווירטואלית) הרצוי. למידע על סוגי המכונות הזמינים, קראו את המאמר קצב העברת נתונים ושינוי קנה מידה.

gcloud

  1. מפעילים את Cloud Shell במסוף Google Cloud .

    הפעלת Cloud Shell

    בחלק התחתון של מסוף Google Cloud יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.

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

    gcloud beta compute networks vpc-access connectors update CONNECTOR_NAME --region=REGION --machine-type=MACHINE_TYPE
    מחליפים את הערכים בשדות הבאים:

הקטנת המספר המינימלי והמקסימלי של המכונות

כדי להקטין את המספר המינימלי והמקסימלי של המכונות:

  1. יוצרים מחבר חדש עם הערכים הרצויים.
  2. מעדכנים את השירות או הפונקציה כדי להשתמש במחבר החדש.
  3. מוחקים את המחבר הישן אחרי שמעבירים את התנועה שלו.

הגדלת המספר המינימלי והמקסימלי של המכונות

המסוף

  1. נכנסים לדף הסקירה הכללית של Serverless VPC Access.

    כניסה לדף Serverless VPC Access

  2. בוחרים את המחבר שרוצים לערוך ולוחצים על עריכה.

  3. בשדה Minimum instances, בוחרים את המספר המינימלי הרצוי של מכונות.

    הערך הקטן ביותר שאפשר להזין בשדה הזה הוא הערך הנוכחי. הערך המקסימלי שאפשר להזין בשדה הזה הוא הערך הנוכחי בשדה Maximum instances פחות 1. לדוגמה, אם הערך בשדה Maximum instances הוא 8, הערך הגבוה ביותר שאפשר להזין בשדה Minimum instances הוא 7.

  4. בשדה Maximum instances, בוחרים את המספר המקסימלי הרצוי של מכונות.

    הערך הקטן ביותר שאפשר להזין בשדה הזה הוא הערך הנוכחי. הערך המקסימלי שאפשר להזין בשדה הזה הוא 10.

gcloud

  1. מפעילים את Cloud Shell במסוף Google Cloud .

    הפעלת Cloud Shell

    בחלק התחתון של מסוף Google Cloud יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.

  2. כדי להגדיל את המספר המינימלי או המקסימלי של המכונות במחבר, מריצים את הפקודה הבאה בטרמינל:

    gcloud beta compute networks vpc-access connectors update CONNECTOR_NAME --region=REGION --min-instances=MIN_INSTANCES --max-instances=MAX_INSTANCES
    מחליפים את הערכים בשדות הבאים:

  • ‫CONNECTOR_NAME: השם של המחבר
  • ‫REGION: שם האזור של המחבר
  • ‫MIN_INSTANCES: המספר המינימלי המועדף של המכונות.
    • הערך הקטן ביותר שאפשר להזין בשדה הזה הוא הערך הנוכחי של min_instances. כדי למצוא את הערך הנוכחי, עיינו בקטע חיפוש ערכי המאפיינים הנוכחיים.
    • הערך הגדול ביותר שאפשר להזין בשדה הזה הוא הערך הנוכחי של max_instances פחות 1, כי הערך של min_instances חייב להיות קטן מהערך של max_instances. לדוגמה, אם הערך של max_instances הוא 8, הערך המקסימלי האפשרי בשדה הזה הוא 7. אם המחבר משתמש בערך ברירת המחדל של max-instances, שהוא 10, הערך הגדול ביותר האפשרי בשדה הזה הוא 9. כדי למצוא את הערך של max-instances, עיינו בקטע חיפוש ערכי המאפיינים הנוכחיים.
  • MAX_INSTANCES:

    • הערך הקטן ביותר שאפשר להזין בשדה הזה הוא הערך הנוכחי של max_instances. כדי למצוא את הערך הנוכחי, עיינו בקטע חיפוש ערכי המאפיינים הנוכחיים.
    • הערך המקסימלי שאפשר להזין בשדה הזה הוא 10.

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

איך למצוא את ערכי המאפיינים הנוכחיים

כדי למצוא את ערכי המאפיינים הנוכחיים של המחבר, מריצים את הפקודה הבאה בטרמינל:

gcloud compute networks vpc-access connectors describe CONNECTOR_NAME --region=REGION --project=PROJECT
מחליפים את הערכים בשדות הבאים:

  • ‫CONNECTOR_NAME: השם של המחבר
  • ‫REGION: שם האזור של המחבר
  • ‫PROJECT: שם הפרויקט ב- Google Cloud

מעקב אחרי השימוש במחברים

מעקב אחרי השימוש לאורך זמן יכול לעזור לכם להחליט מתי לשנות את ההגדרות של המחבר. לדוגמה, אם יש עלייה חדה בשימוש במעבד (CPU), אפשר לנסות להגדיל את המספר המקסימלי של המכונות כדי לקבל תוצאות טובות יותר. אם אתם מנצלים את מלוא רוחב הפס, אתם יכולים לעבור למכונה מסוג גדול יותר.

כדי להציג תרשימים של מדדי התפוקה, מספר המכונות וניצול המעבד (CPU) של המחבר לאורך זמן באמצעות מסוף Google Cloud :

  1. נכנסים לדף הסקירה הכללית של Serverless VPC Access.

    כניסה לדף Serverless VPC Access

  2. לוחצים על שם המחבר שרוצים לעקוב אחריו.

  3. בוחרים את מספר הימים שרוצים להציג, בין יום אחד ל-90 ימים.

  4. בתרשים Throughput, מעבירים את הסמן מעל התרשים כדי לראות את קצב הנתונים האחרון של המחבר.

  5. בתרשים Number of instances, מעבירים את העכבר מעל התרשים כדי לראות את מספר המכונות שהמחבר השתמש בהן לאחרונה.

  6. בתרשים CPU Utilization, מציבים את הסמן מעל התרשים כדי לראות את השימוש האחרון של המחבר במעבד. בתרשים מוצג השימוש ב-CPU שמתחלק בין המכונות באחוזונים ה-50, ה-95 וה-99.

מחיקת מחבר

לפני שמוחקים מחבר, צריך להסיר אותו מכל המשאבים ללא שרת (serverless) שעדיין משתמשים בו. אם תמחקו מחבר לפני שתסירו אותו מהמשאבים ללא שרת (serverless), לא תוכלו למחוק את רשת ה-VPC מאוחר יותר.

משתמשי VPC משותף שמגדירים מחברים בפרויקט המארח של ה-VPC המשותף יכולים להשתמש בפקודה gcloud compute networks vpc-access connectors describe כדי להציג את רשימת הפרויקטים שבהם יש משאבים ללא שרת (serverless) שמשתמשים במחבר נתון.

כדי למחוק מחבר, משתמשים במסוף Google Cloud או ב-Google Cloud CLI:

המסוף

  1. נכנסים לדף הסקירה הכללית של Serverless VPC Access במסוףGoogle Cloud :

    כניסה לדף Serverless VPC Access

  2. בוחרים את המחבר שרוצים למחוק.

  3. לוחצים על Delete.

gcloud

  1. מפעילים את Cloud Shell במסוף Google Cloud .

    הפעלת Cloud Shell

    בחלק התחתון של מסוף Google Cloud יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.

  2. כדי למחוק מחבר, משתמשים בפקודה הבאה של gcloud:

    gcloud compute networks vpc-access connectors delete CONNECTOR_NAME --region=REGION
    

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

    • ‫CONNECTOR_NAME בשם של המחבר שרוצים למחוק.
    • REGION באזור שבו נמצא המחבר.

ניהול אילוצים בהתאמה אישית לפרויקטים

בקטע הזה מוסבר איך ליצור אילוצים בהתאמה אישית למחברים של גישה ל-VPC ללא שרת (Serverless), ולאכוף אותם ברמת הפרויקט. במאמר יצירה וניהול של מדיניות ארגונית בהתאמה אישית מוסבר איך יוצרים מדיניות ארגונית בהתאמה אישית.

Google Cloud שירות מדיניות הארגון נותן לכם שליטה מרוכזת ופרוגרמטית על המשאבים של הארגון. אדמינים של מדיניות הארגון יכולים להגדיר את מדיניות הארגון, שהיא קבוצה של הגבלות שנקראות אילוצים. האילוצים האלה חלים על משאביGoogle Cloud ועל הצאצאים של המשאבים האלה בהיררכיית המשאבים שלGoogle Cloud . אפשר לאכוף את מדיניות הארגון ברמת הארגון, התיקייה או הפרויקט.

מדיניות הארגון מספקת אילוצים מוגדרים מראש לשירותים שונים שלGoogle Cloud . עם זאת, אם אתם רוצים שליטה מפורטת יותר וניתנת להתאמה אישית על השדות הספציפיים שמוגבלים במדיניות הארגון, אתם יכולים גם ליצור מדיניות ארגון בהתאמה אישית.

יתרונות

חיבור לרשת (VPC) מאפליקציית serverless מאפשר לכם לכתוב מספר כלשהו של אילוצים בהתאמה אישית, באמצעות רוב השדות שמוגדרים על ידי המשתמש ב-Serverless VPC Access API. לדוגמה, אתם יכולים ליצור אילוץ בהתאמה אישית שמציין באילו רשתות משנה אפשר להשתמש במחבר של חיבור לרשת (VPC) מאפליקציית serverless.

אחרי שמחילים את האילוץ, בקשות שמפירות מדיניות שאוכפת אילוץ בהתאמה אישית מציגות הודעת שגיאה ב-CLI של gcloud וביומנים של "גישה ל-VPC ללא שרת (Serverless)". הודעת השגיאה מכילה את מזהה האילוץ ואת התיאור של האילוץ המותאם אישית שהופר.

ירושה של מדיניות

כברירת מחדל, מדיניות הארגון עוברת בירושה לצאצאים של המשאבים שעליהם אתם אוכפים את המדיניות. לדוגמה, אם אוכפים מדיניות בתיקייה, Google Cloud אוכף את המדיניות בכל הפרויקטים שבתיקייה. למידע נוסף על ההתנהגות הזו ואיך לשנות אותה, קראו את המאמר כללי הערכה של היררכיה.

מגבלות

אי אפשר לציין סוג מכונה, מספר מינימלי של מכונות או מספר מקסימלי של מכונות.

לפני שמתחילים

חשוב לוודא שאתם יודעים מהו מזהה הארגון שלכם.

התפקידים הנדרשים

כדי לקבל את ההרשאות שדרושות לניהול מדיניות הארגון, בקשו מהאדמין להקצות לכם את התפקיד אדמין של מדיניות הארגון (roles/orgpolicy.policyAdmin) ב-IAM במשאב הארגון. כדי לקרוא הסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.

יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.

יצירת אילוץ בהתאמה אישית

אילוץ מותאם אישית מוגדר בקובץ YAML לפי המשאבים, השיטות, התנאים והפעולות שנתמכים בשירות שבו אתם אוכפים את מדיניות הארגון. התנאים של האילוצים המותאמים אישית מוגדרים באמצעות Common Expression Language (CEL). בקטע CEL במאמר יצירה וניהול של אילוצים בהתאמה אישית מוסבר איך ליצור תנאים באילוצים בהתאמה אישית באמצעות CEL.

כדי ליצור קובץ YAML לאילוץ בהתאמה אישית של חיבור לרשת (VPC) מאפליקציית serverless, אפשר להיעזר בדוגמה הבאה:

name: organizations/ORGANIZATION_ID/customConstraints/CONSTRAINT_NAME
resourceTypes:
- vpcaccess.googleapis.com/Connector
methodTypes:
- CREATE
condition: "CONDITION"
actionType: ACTION
displayName: DISPLAY_NAME
description: DESCRIPTION

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

  • ‫ORGANIZATION_ID: מזהה הארגון, למשל 123456789.

  • ‫CONSTRAINT_NAME: השם שרוצים לתת לאילוץ המותאם אישית החדש. אילוץ בהתאמה אישית חייב להתחיל ב-custom., ויכול לכלול רק אותיות רישיות, אותיות קטנות או מספרים, לדוגמה, custom.defaultNetworkConstraint. האורך המקסימלי של השדה הזה הוא 70 תווים, לא כולל הקידומת.

  • ‫CONDITION: תנאי CEL שנכתב כנגד ייצוג של משאב שירות נתמך. האורך המקסימלי של השדה הזה הוא 1,000 תווים. לדוגמה: "resource.network == default".

  • ‫ACTION: הפעולה שצריך לבצע אם מתקיים התנאי condition. הערך יכול להיות ALLOW או DENY.

  • ‫DISPLAY_NAME: שם קריא לאנשים של האילוץ. האורך המקסימלי של השדה הזה הוא 200 תווים.

  • ‫DESCRIPTION: תיאור קריא של האילוץ שיוצג כהודעת שגיאה במקרה של הפרת המדיניות, לדוגמה, "Require network to not be set to default.". האורך המקסימלי של השדה הזה הוא 2,000 תווים.

למידע נוסף על יצירת אילוץ בהתאמה אישית, ראו הגדרת אילוצים בהתאמה אישית.

הגדרת אילוץ בהתאמה אישית

המסוף

כדי ליצור אילוץ בהתאמה אישית:

  1. במסוף Google Cloud , נכנסים לדף מדיניות הארגון.

    כניסה לדף Organization policies

  2. בכלי לבחירת פרויקטים, בוחרים את הפרויקט שרוצים להגדיר לו את מדיניות הארגון.
  3. לוחצים על Custom constraint.
  4. בתיבה Display name, מזינים שם לאילוץ שיהיה קריא לאנשים. השם הזה מופיע בהודעות שגיאה ואפשר להשתמש בו לזיהוי ולניפוי באגים. אל תשתמשו בפרטים אישיים מזהים (PII) או במידע רגיש בשמות לתצוגה, כי השם הזה עלול להיחשף בהודעות שגיאה. השדה הזה יכול להכיל עד 200 תווים.
  5. בתיבה Constraint ID, מזינים את המזהה שרוצים לתת לאילוץ החדש בהתאמה אישית. אילוץ בהתאמה אישית יכול להכיל רק אותיות (כולל אותיות רישיות וקטנות) או מספרים, לדוגמה custom.defaultNetworkConstraint. השדה הזה יכול להכיל עד 70 תווים, לא כולל הקידומת (custom.), לדוגמה, organizations/123456789/customConstraints/custom. אל תכללו פרטים אישיים מזהים או מידע רגיש במזהה האילוץ, כי הם עלולים להיחשף בהודעות שגיאה.
  6. בתיבה Description, מזינים תיאור קריא לאנשים של האילוץ. התיאור הזה משמש כהודעת שגיאה כשיש הפרה של המדיניות. ציינו פרטים על הסיבה להפרת המדיניות ואיך לפתור את הבעיה. אל תכללו פרטים אישיים מזהים או מידע רגיש בתיאור, כי הם עלולים להיחשף בהודעות שגיאה. השדה הזה יכול להכיל עד 2,000 תווים.
  7. בתיבה Resource type, בוחרים את השם של משאב ה- Google Cloud REST שמכיל את האובייקט והשדה שרוצים להגביל, לדוגמה container.googleapis.com/Cluster. רוב סוגי המשאבים תומכים בעד 20 אילוצים בהתאמה אישית. אם תנסו ליצור יותר אילוצים בהתאמה אישית, הפעולה תיכשל.
  8. אפשר לאכוף את האילוץ הזה רק ב-REST CREATE.
  9. כדי לראות את השיטות הנתמכות לכל שירות, חפשו את השירות במאמר שירותים שתומכים באילוצים בהתאמה אישית.

  10. כדי להגדיר תנאי, לוחצים על עריכת התנאי.
    1. בחלונית Add condition, יוצרים תנאי CEL שמתייחס למשאב שירות נתמך, לדוגמה resource.management.autoUpgrade == false. השדה הזה יכול להכיל עד 1,000 תווים. לפרטים על השימוש ב-CEL, קראו את המאמר Common Expression Language. מידע נוסף על משאבי השירות שבהם אפשר להשתמש באילוצים המותאמים אישית מופיע במאמר שירותים שנתמכים באילוצים מותאמים אישית.
    2. לוחצים על Save.
  11. בקטע Action, בוחרים אם לאשר או לדחות את השיטה שנבדקה אם התנאי מתקיים.
  12. פעולת הדחייה פירושה שהפעולה ליצירה או לעדכון של המשאב נחסמת אם התנאי מקבל את הערך true.

    פעולת ההרשאה מאפשרת ליצור או לעדכן את המשאב רק אם התנאי מתקיים. כל מקרה אחר, מלבד אלה שרשומים במפורש בתנאי, נחסם.

  13. לוחצים על Create constraint.
  14. אחרי שמזינים ערך בכל שדה, הגדרת ה-YAML המקבילה לאילוץ המותאם אישית הזה מופיעה בצד שמאל.

gcloud

  1. כדי ליצור אילוץ בהתאמה אישית, יוצרים קובץ YAML בפורמט הבא:
  2. name: organizations/ORGANIZATION_ID/customConstraints/CONSTRAINT_NAME
    resourceTypes: RESOURCE_NAME
    methodTypes:
      - CREATE
    condition: "CONDITION"
    actionType: ACTION
    displayName: DISPLAY_NAME
    description: DESCRIPTION

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

    • ‫ORGANIZATION_ID: מזהה הארגון, למשל 123456789.
    • ‫CONSTRAINT_NAME: השם שרוצים לתת לאילוץ החדש בהתאמה אישית. אילוץ בהתאמה אישית יכול להכיל רק אותיות (כולל אותיות רישיות וקטנות) או מספרים, לדוגמה, custom.defaultNetworkConstraint. השדה הזה יכול להכיל עד 70 תווים, לא כולל הקידומת (custom.) – לדוגמה, organizations/123456789/customConstraints/custom. אל תכללו פרטים אישיים מזהים (PII) או מידע רגיש במזהה האילוץ, כי הם עלולים להיחשף בהודעות שגיאה.
    • ‫RESOURCE_NAME: השם המלא של המשאב ב- Google Cloudשמכיל את האובייקט והשדה שרוצים להגביל. לדוגמה, vpcaccess.googleapis.com/Connector. רוב סוגי המשאבים תומכים בעד 20 אילוצים בהתאמה אישית. אם תנסו ליצור יותר אילוצים בהתאמה אישית, הפעולה תיכשל.
    • ‫methodTypes: שיטות ה-REST שעליהן נאכף האילוץ. הערך יכול להיות רק CREATE.
    • כדי לראות את השיטות הנתמכות בכל שירות, חפשו את השירות במאמר שירותים שתומכים באילוצים בהתאמה אישית.

    • ‫CONDITION: תנאי CEL שנכתב כנגד ייצוג של משאב שירות נתמך. השדה הזה יכול להכיל עד 1,000 תווים. לדוגמה, "resource.network == default".
    • למידע נוסף על המשאבים הזמינים לכתיבת תנאים, ראו משאבים נתמכים.

    • ‫ACTION: הפעולה שצריך לבצע אם התנאי condition מתקיים. הערך יכול להיות רק ALLOW.
    • הפעולה allow פירושה שאם התנאי מקבל את הערך true, מותר ליצור או לעדכן את המשאב. זה גם אומר שכל מקרה אחר, מלבד המקרה שמופיע במפורש בתנאי, חסום.

    • ‫DISPLAY_NAME: שם קריא לאנשים של האילוץ. השם הזה מופיע בהודעות שגיאה ואפשר להשתמש בו לזיהוי ולניפוי באגים. אל תשתמשו בפרטים אישיים מזהים (PII) או במידע רגיש בשמות המוצגים, כי השם הזה עלול להיחשף בהודעות שגיאה. השדה הזה יכול להכיל עד 200 תווים.
    • ‫DESCRIPTION: תיאור ידידותי למשתמש של האילוץ, שיוצג כהודעת שגיאה במקרה של הפרת המדיניות. השדה הזה יכול להכיל עד 2,000 תווים.
  3. אחרי שיוצרים את קובץ ה-YAML לאילוץ חדש בהתאמה אישית, צריך להגדיר אותו כדי שיהיה זמין למדיניות הארגון. כדי להגדיר אילוץ בהתאמה אישית, משתמשים בפקודה gcloud org-policies set-custom-constraint:
  4. gcloud org-policies set-custom-constraint CONSTRAINT_PATH

    מחליפים את CONSTRAINT_PATH בנתיב המלא לקובץ האילוץ בהתאמה אישית. לדוגמה, /home/user/customconstraint.yaml.

    בסיום הפעולה, האילוצים המותאמים אישית יהיו זמינים כמדיניות של הארגון ברשימת Google Cloud כללי המדיניות של הארגון.

  5. כדי לוודא שהאילוץ המותאם אישית קיים, משתמשים בפקודה gcloud org-policies list-custom-constraints:
  6. gcloud org-policies list-custom-constraints --organization=ORGANIZATION_ID

    מחליפים את ORGANIZATION_ID במזהה של משאב הארגון.

    למידע נוסף, קראו את המאמר הצגת מדיניות הארגון.

אכיפה של אילוץ בהתאמה אישית

כדי לאכוף אילוץ, אתם יכולים ליצור מדיניות ארגון שמפנה אליו, ואז להחיל את מדיניות הארגון על משאב ב- Google Cloud .

המסוף

  1. במסוף Google Cloud , נכנסים לדף מדיניות הארגון.

    כניסה לדף Organization policies

  2. בכלי לבחירת פרויקטים, בוחרים את הפרויקט שרוצים להגדיר לו את מדיניות הארגון.
  3. ברשימה שבדף מדיניות הארגון, בוחרים את האילוץ כדי להציג את הדף Policy details של אותו אילוץ.
  4. כדי להגדיר את מדיניות הארגון למשאב הזה, לוחצים על ניהול המדיניות.
  5. בדף עריכת המדיניות, בוחרים באפשרות במקום המדיניות של המשאב הראשי.
  6. לוחצים על Add a rule.
  7. בקטע Enforcement, בוחרים אם לאכוף את מדיניות הארגון הזו או לא.
  8. אופציונלי: כדי להוסיף תנאי למדיניות הארגון על סמך תג, לוחצים על Add condition. שימו לב: אם מוסיפים כלל מותנה למדיניות הארגון, צריך להוסיף לפחות כלל אחד לא מותנה, אחרת אי אפשר לשמור את המדיניות. מידע נוסף מופיע במאמר הגדרת ההיקף של מדיניות הארגון באמצעות תגים.
  9. לוחצים על בדיקת השינויים כדי לדמות את ההשפעה של מדיניות הארגון. למידע נוסף, קראו את המאמר בדיקת שינויים במדיניות הארגון באמצעות סימולטור המדיניות.
  10. כדי לאכוף את מדיניות הארגון במצב פרימטר לבדיקות, לוחצים על הגדרת המדיניות להרצת בדיקה. למידע נוסף, קראו את המאמר בדיקת כללי מדיניות של הארגון.
  11. אחרי שמוודאים שמדיניות הארגון במצב פרימטר לבדיקות פועלת כמו שצריך, לוחצים על Set policy כדי להגדיר את המדיניות הפעילה.

gcloud

  1. כדי ליצור מדיניות ארגונית עם כללים בוליאניים, יוצרים קובץ YAML של מדיניות שמפנה לאילוץ:
  2. name: projects/PROJECT_ID/policies/CONSTRAINT_NAME
    spec:
      rules:
      - enforce: true
    
    dryRunSpec:
      rules:
      - enforce: true

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

    • ‫PROJECT_ID: הפרויקט שבו רוצים לאכוף את האילוץ.
    • ‫CONSTRAINT_NAME: השם שהגדרתם לאילוץ המותאם אישית. לדוגמה, custom.defaultNetworkConstraint.
  3. כדי לאכוף את מדיניות הארגון במצב פרימטר לבדיקות, מריצים את הפקודה הבאה עם הדגל dryRunSpec:
  4. gcloud org-policies set-policy POLICY_PATH --update-mask=dryRunSpec

    מחליפים את POLICY_PATH בנתיב המלא לקובץ ה-YAML של מדיניות הארגון. המדיניות תיכנס לתוקף תוך 15 דקות לכל היותר.

  5. אחרי שמוודאים שמדיניות הארגון במצב פרימטר לבדיקות פועלת כמצופה, מגדירים את המדיניות הפעילה באמצעות הפקודה org-policies set-policy והדגל spec:
  6. gcloud org-policies set-policy POLICY_PATH --update-mask=spec

    מחליפים את POLICY_PATH בנתיב המלא לקובץ ה-YAML של מדיניות הארגון. המדיניות תיכנס לתוקף תוך 15 דקות לכל היותר.

בדיקת האילוץ המותאם אישית

כדי לבדוק את הדוגמה שמגבילה את הגדרות התעבורה הנכנסת, פורסים מחבר בפרויקט כשהרשת מוגדרת ל-default:

gcloud compute networks vpc-access connectors create org-policy-test \
    --project=PROJECT_ID \
    --region=REGION_ID \
    --network=default

הפלט שיתקבל:

Operation denied by custom org policies: ["customConstraints/custom.defaultNetworkConstraint": "Require network to not be set to default."]

דוגמאות למדיניות ארגונית בהתאמה אישית לתרחישים נפוצים

בטבלה הבאה מפורטות דוגמאות לאילוצים בהתאמה אישית שיכולים להיות שימושיים לחיבורים לרשת VPC ללא שרת:

תיאור תחביר של אילוצים
דרישה שמחברי חיבור לרשת VPC יוכלו להשתמש רק ברשת ספציפית.
    name: organizations/ORGANIZATION_ID/customConstraints/custom.allowlistNetworks
    resourceTypes:
    - vpcaccess.googleapis.com/Connector
    methodTypes:
    - CREATE
    condition: "resource.network == 'allowlisted-network'"
    actionType: ALLOW
    displayName: allowlistNetworks
    description: Require connectors to use a specific network.
תיאור תחביר של אילוצים
לדרוש שלמחברים של חיבור לרשת (VPC) מאפליקציית serverless תהיה גישה רק לרשת משנה ספציפית.
    name: organizations/ORGANIZATION_ID/customConstraints/custom.restrictSubnetForProject
    resourceTypes:
    - vpcaccess.googleapis.com/Connector
    methodTypes:
    - CREATE
    condition: "resource.subnet.name == 'allocated-subnet'"
    actionType: ALLOW
    displayName: restrictSubnetForProject
    description: This project is only allowed to use the subnet "allocated-subnet".

פתרון בעיות

הרשאות של חשבון שירות

סוכן שירות של גישה ל-VPC ללא שרת (Serverless)

כדי לבצע פעולות בפרויקט Google Cloud , החיבור לרשת (VPC) מאפליקציית serverless משתמש בחשבון השירות Serverless VPC Access Service Agent. כתובת האימייל של חשבון השירות הזה היא בפורמט הבא:

service-PROJECT_NUMBER@gcp-sa-vpcaccess.

כברירת מחדל, לחשבון השירות הזה יש את התפקיד סוכן שירות של גישה ל-VPC ללא שרת (Serverless) (roles/vpcaccess.serviceAgent). אם תשנו את ההרשאות של החשבון הזה, יכול להיות שהפעולות של הגישה ל-VPC ללא שרת ייכשלו.

סוכן שירות של Google APIs

‫Serverless VPC Access API תלוי ב-Deployment Manager כדי להקצות את המשאבים הבסיסיים שמטמיעים את המחבר. כדי לבצע פעולות בפרויקט ב- Google Cloud , Deployment Manager משתמש בסוכן שירות של Google APIs. כתובת האימייל של חשבון השירות הזה היא בפורמט הבא:

PROJECT_NUMBER@cloudservices.

כברירת מחדל, לחשבון השירות הזה יש את התפקיד "עריכה" (roles/project.editor) או את ההרשאות של התפקיד "עריכה". אם אתם רוצים לתת לסוכן השירות של Google APIs הרשאות מוגבלות יותר, בלי להשפיע על הפונקציונליות של חיבור לרשת VPC ללא שרת, אתם יכולים לתת לחשבון השירות הזה את התפקיד סוכן שירות של גישה ל-VPC ללא שרת (roles/vpcaccess.serviceAgent).

שירותים מסוימים, מלבד Deployment Manager, מסתמכים גם על הרשאות ברירת המחדל של תפקיד העריכה של סוכן השירות של Google APIs. הסרת התפקיד הזה עלולה להשפיע על שירותים ומשאבים אחרים, מלבד Serverless VPC Access API. למידע נוסף על ההשלכות של הסרת התפקיד "עריכה" מסוכן השירות של Google APIs, קראו את המאמר סוכן שירות של Google APIs.

ביצועים חלשים ברשת או ניצול גבוה של המעבד (CPU) במצב חוסר פעילות

שימוש במחבר אחד לאלפי מכונות עלול לגרום לירידה בביצועים ולניצול מוגבר של המעבד (CPU) במצב חוסר פעילות. כדי לפתור את הבעיה, צריך לפצל את השירותים בין כמה מחברים.

בעיות ב-MTU בהתאמה אישית

אם נתקלתם בבעיות עם MTU בהתאמה אישית, ודאו שאתם משתמשים בהגדרת ברירת המחדל של MTU ב-Cloud Run.

שגיאות

שגיאה: לחשבון השירות נדרש תפקיד של סוכן שירות

אם אתם משתמשים באילוץ על מדיניות הארגון Restrict Resource Service Usage כדי לחסום את Cloud Deployment Manager‏ (deploymentmanager.googleapis.com), יכול להיות שתופיע הודעת השגיאה הבאה:

Serverless VPC Access service account (service-<PROJECT_NUMBER>@gcp-sa-vpcaccess.) needs Serverless VPC Access Service Agent role in the project.

מגדירים את מדיניות הארגון כך ש-Deployment Manager יוסר מרשימת הישויות שנחסמו או יתווסף לרשימת ההיתרים.

שגיאה ביצירת המחבר

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

  • מציינים טווח כתובות IP פנימיות מסוג RFC 1918 שלא חופף לאף אחת מהכתובות השמורות ברשת ה-VPC.
  • נותנים לפרויקט הרשאה להשתמש בתמונות של מכונות וירטואליות ב-Compute Engine מהפרויקט עם המזהה serverless-vpc-access-images. למידע נוסף על עדכון מדיניות הארגון בהתאם, ראו הגדרת אילוצי גישה לתמונות.

אין גישה למשאבים

אם ציינתם מחבר אבל עדיין אין לכם גישה למשאבים ברשת ה-VPC, ודאו שאין ברשת ה-VPC כללי חומת אש עם עדיפות נמוכה מ-1,000 שמונעים תעבורת נתונים נכנסת מטווח כתובות ה-IP של המחבר.

אם אתם מגדירים מחבר בפרויקט שירות של VPC משותף, ודאו שכללי חומת האש מאפשרים תעבורת נתונים נכנסת (ingress) מהתשתית ללא שרת (serverless) אל המחבר.

שגיאה: החיבור נדחה

אם אתם מקבלים שגיאות מסוג connection refused או connection timeout שפוגעות בביצועי הרשת, יכול להיות שמספר החיבורים גדל ללא הגבלה בין הקריאות לאפליקציה ללא שרת (serverless). כדי להגביל את מספר החיבורים המקסימלי לכל מכונה, צריך להשתמש בספריית לקוח שתומכת במאגרי חיבורים. דוגמאות מפורטות לשימוש במאגרי חיבורים מופיעות במאמר ניהול חיבורים למסדי נתונים.

השגיאה "המשאב לא נמצא"

כשמוחקים רשת VPC או כלל של חומת אש, יכול להיות שתופיע הודעה דומה לזו: The resource "aet-uscentral1-subnet--1-egrfw" was not found.

למידע נוסף על השגיאה הזו ועל הפתרון שלה, קראו את הקטע השגיאה "המשאב לא נמצא" במסמכי התיעוד של כללי חומת האש של VPC.

השלבים הבאים