חיבור לרשת VPC

בדף הזה נסביר איך להשתמש בServerless VPC Access כדי לחבר את שירותי App Engine בסביבה הרגילה ישירות לרשת ה-VPC, וכך לאפשר גישה למכונות וירטואליות ב-Compute Engine, למופעי Memorystore ולכל משאב אחר עם כתובת IP פנימית.

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

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

  • אם אתם משתמשים ב-VPC משותף, כדאי לעיין במאמר בנושא התחברות לרשת VPC משותפת.

  • במסוף Google Cloud , מוודאים שה-API של "חיבור לרשת (VPC) מאפליקציית serverless" מופעל בפרויקט.

    הפעלת ה-API

מגבלות

  • יצירת מחברים של חיבור לרשת (VPC) מאפליקציית serverless נכשלת בסביבות של Assured Workloads. כדי לעקוף את הבעיה, אפשר להגדיר Direct VPC egress למשאבים של App Engine.

יצירת מחבר לגישה לרשת VPC מאפליקציית serverless

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

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

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

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

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

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

המסוף

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

    מעבר אל Serverless VPC Access

  2. לוחצים על יצירת מחבר.

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

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

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

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

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

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

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

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

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

gcloud

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

    הפעלת Cloud Shell

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

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

    gcloud components update
  3. מוודאים ש-Serverless VPC Access API מופעל בפרויקט:

    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: אזור לחיבור, שזהה לאזור של השירות או המשימה ללא שרת.
      • ‫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: אזור לחיבור, שזהה לאזור של השירות או המשימה ללא שרת.
      • ‫VPC_NETWORK: השם של רשת ה-VPC שאליה רוצים לצרף את המחבר. המחבר ורשת ה-VPC צריכים להיות באותו הפרויקט.
      • ‫IP_RANGE: צריך לספק CIDR‏ /28 שלא נמצא בשימוש (לדוגמה, 10.8.0.0/28) כדי להשתמש בו כטווח הכתובות הראשי של IPv4 ברשת משנה חדשה שנוצרת ברשת ה-VPC של המחבר Google Cloud . מוודאים שטווח כתובות ה-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
  ]
}

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

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

כדי לציין מחבר לשירות באפליקציה:

  1. מוסיפים את השדה vpc_access_connector לקובץ app.yaml של השירות:

    vpc_access_connector:
     name: projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME
    

    כאשר PROJECT_ID הוא מזהה הפרויקט ב- Google Cloud ,‏ REGION הוא האזור שבו נמצא המחבר ו-CONNECTOR_NAME הוא שם המחבר.

  2. פורסים את השירות:

    gcloud app deploy
    

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

גישה למשאבי VPC

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

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

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

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

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

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

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

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

  1. יוצרים כללים של חומת אש שמאפשרים לבקשות מהתשתית חסרת השרתים של 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, אפשר לעיין במאמר בנושא הגבלת הגישה של מכונת ה-VM של המחבר למשאבי רשת VPC.

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

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

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

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

הגבלת הגישה של מכונות וירטואליות של מחברים למשאבי רשת VPC

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

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

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

הגבלת הגישה באמצעות כללי כניסה

בוחרים תגי רשת או טווחי 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: תג הרשת של המחבר האוניברסלי, אם רוצים להגביל את הגישה לכל המחברים (כולל מחברים שייווצרו בעתיד), או תג הרשת הייחודי, אם רוצים להגביל את הגישה למחבר ספציפי.

      • thought תג רשת אוניברסלי: 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.

    יוצרים כלל חומת אש לתעבורה נכנסת עם עדיפות נמוכה מ-1000 ברשת ה-VPC כדי לחסום תעבורה נכנסת מטווח ה-CIDR של המחבר. הפעולה הזו מבטלת את כלל חומת האש המרומז שנוצר כברירת מחדל על ידי Serverless VPC Access ברשת ה-VPC.

    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

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

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

  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.

ניהול המחבר

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

כברירת מחדל, רק בקשות לכתובות IP פנימיות ולשמות DNS פנימיים מנותבות דרך מחבר של חיבור לרשת (VPC) מאפליקציית serverless. אפשר לציין את הגדרת תעבורת הנתונים היוצאת (egress) של השירות בקובץ app.yaml.

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

כדי להגדיר את התנהגות התעבורה היוצאת של שירות App Engine:

  1. מוסיפים את המאפיין egress_setting לשדה vpc_access_connector בקובץ app.yaml של השירות:

    vpc_access_connector:
      name: projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME
      egress_setting: EGRESS_SETTING

    מחליפים את:

    • PROJECT_ID במזהה הפרויקט ב- Google Cloud
    • REGION באזור שבו נמצא המחבר
    • CONNECTOR_NAME בשם המחבר.
    • EGRESS_SETTING באחת מהאפשרויות הבאות:
      • private-ranges-only ברירת מחדל. רק בקשות לטווחים של כתובות IP מסוג RFC 1918 ו-RFC 6598 או לשמות DNS פנימיים מנותבות לרשת ה-VPC שלכם. כל הבקשות האחרות מנותבות ישירות לאינטרנט.
      • all-traffic כל הבקשות היוצאות מהשירות מנותבות לרשת ה-VPC. הבקשות כפופות לכללי חומת האש, ה-DNS והניתוב של רשת ה-VPC. חשוב לזכור שניתוב כל הבקשות היוצאות לרשת ה-VPC מגדיל את כמות תעבורת הנתונים היוצאת שמטופלת על ידי המחבר של חיבור לרשת (VPC) מאפליקציית serverless, ועלול לגרור חיובים.
  2. פורסים את השירות:

    gcloud app deploy
    

ניתוק שירות מרשת VPC

כדי לנתק שירות מרשת VPC, מסירים את השדה vpc_access_connector מהקובץ app.yaml ומפעילים מחדש את השירות.

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

עדכון מחבר

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

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

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

המסוף

  1. עוברים לדף הסקירה הכללית של חיבור לרשת (VPC) מאפליקציית serverless.

    מעבר אל Serverless VPC Access

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

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

gcloud

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

    הפעלת 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
    מחליפים את הערכים בשדות הבאים:

    • ‫CONNECTOR_NAME: השם של המחבר
    • ‫REGION: השם של האזור של המחבר
    • ‫MACHINE_TYPE: סוג המכונה המועדף. מידע על סוגי המכונות שזמינים מופיע במאמר בנושא תפוקה ושינוי גודל.

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

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

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

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

המסוף

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

    כניסה לדף Serverless VPC Access

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

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

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

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

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

gcloud

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

    הפעלת 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 הפרויקט

מעקב אחר השימוש במתקני טעינה

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

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

  1. עוברים לדף הסקירה הכללית של חיבור לרשת (VPC) מאפליקציית serverless.

    מעבר אל Serverless VPC Access

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

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

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

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

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

מחיקת מחבר

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

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

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

המסוף

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

    מעבר אל Serverless VPC Access

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

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

gcloud

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

    הפעלת 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 עם האזור שבו נמצא המחבר

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

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

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 לאילוץ בהתאמה אישית של Serverless VPC Access, אפשר להיעזר בדוגמה הבאה:

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. נכנסים לדף Organization policies במסוף Google Cloud .

    אל מדיניות הארגון

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

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

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

  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. נכנסים לדף Organization policies במסוף Google Cloud .

    אל מדיניות הארגון

  2. בכלי לבחירת פרויקטים, בוחרים את הפרויקט שרוצים להגדיר לו את מדיניות הארגון.
  3. מהרשימה בדף מדיניות הארגון, בוחרים את האילוץ כדי לראות את הדף פרטי המדיניות של האילוץ הזה.
  4. כדי להגדיר את מדיניות הארגון עבור המשאב הזה, לוחצים על ניהול מדיניות.
  5. בדף עריכת מדיניות, בוחרים באפשרות במקום המדיניות של המשאב הראשי.
  6. לוחצים על Add a rule.
  7. בקטע Enforcement (אכיפה), בוחרים אם מדיניות הארגון הזו נאכפת או לא.
  8. אופציונלי: כדי להגדיר את מדיניות הארגון כתלויה בתג, לוחצים על הוספת תנאי. הערה: אם מוסיפים כלל מותנה למדיניות ארגון, צריך להוסיף לפחות כלל לא מותנה אחד, אחרת אי אפשר לשמור את המדיניות. מידע נוסף זמין במאמר בנושא הגדרת היקף של מדיניות הארגון באמצעות תגים.
  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 מאפליקציית serverless:

תיאור תחביר של מגבלות
דרישה שמחברי גישה ל-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.
תיאור תחביר של אילוצים
הדרישה היא שלמחברי Serverless VPC Access תהיה גישה רק לרשת משנה ספציפית.
    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.iam.gserviceaccount.com

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

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

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

PROJECT_NUMBER@cloudservices.gserviceaccount.com

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

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

ביצועים חלשים ברשת או ניצול גבוה של המעבד (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.iam.gserviceaccount.com) needs Serverless VPC Access Service Agent role in the project.

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

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

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

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

אין אפשרות לגשת למשאבים

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

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

שגיאה מסוג 'החיבור נדחה'

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

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

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

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

השלבים הבאים