הגדרת מחברים בפרויקטים של שירות VPC משותף

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

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

באופן כללי, צריך לבצע את השלבים הבאים:

  1. הוספת כללים לחומת האש כדי לאפשר טווחי כתובות IP נדרשים
  2. מתן הרשאות
  3. יצירת רשת משנה
  4. בדף Configuring Serverless VPC Access (הגדרת גישה ל-VPC מאפליקציית serverless), מבצעים את השלבים בקטעים הבאים:

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

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

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

  • טווחים של NAT
    • 107.178.230.64/26
    • 35.199.224.0/19
  • טווחים של בדיקת תקינות
    • 130.211.0.0/22
    • 35.191.0.0/16
    • 108.170.220.0/23

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

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

כדי להחיל את הכללים האלה:

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

    gcloud compute firewall-rules create serverless-to-vpc-connector \
    --allow tcp:667,udp:665-666,icmp \
    --source-ranges 107.178.230.64/26,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 107.178.230.64/26,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 130.211.0.0/22,35.191.0.0/16,108.170.220.0/23 \
    --direction=INGRESS \
    --target-tags vpc-connector \
    --network=VPC_NETWORK

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

  2. יוצרים כלל תעבורת נתונים נכנסת (ingress) ברשת ה-VPC כדי לאפשר בקשות ממחברים:

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

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

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

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

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

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

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

לכל פרויקט שירות שבו ישתמשו במחברי VPC, אדמין של VPC משותף צריך להעניק את התפקיד Compute Network User ‏ (compute.networkUser) בפרויקט המארח לחשבונות השירות cloudservices ו-vpcaccess של פרויקט השירות.

כדי להקצות את התפקיד:

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

    gcloud projects add-iam-policy-binding HOST_PROJECT_ID \
    --role "roles/compute.networkUser" \
    --member "serviceAccount:service-SERVICE_PROJECT_NUMBER@gcp-sa-vpcaccess.iam.gserviceaccount.com"
    gcloud projects add-iam-policy-binding HOST_PROJECT_ID \
    --role "roles/compute.networkUser" \
    --member "serviceAccount:SERVICE_PROJECT_NUMBER@cloudservices.gserviceaccount.com"
  2. אם חשבון השירות @gcp-sa-vpcaccess לא קיים, מפעילים את Serverless VPC Access API בפרויקט השירות ומנסים שוב:

    gcloud services enable vpcaccess.googleapis.com

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

יצירת רשת משנה

כשמשתמשים ב-VPC משותף, האדמין של ה-VPC המשותף צריך ליצור רשת משנה לכל מחבר. פועלים לפי מאמרי העזרה בנושא הוספת רשת משנה כדי להוסיף רשת משנה /28 לרשת ה-VPC המשותפת. רשת המשנה הזו צריכה להיות באותו אזור כמו השירותים ללא שרתים שישתמשו במחבר.

השלבים הבאים